还剩44页未读,继续阅读
本资源只提供10页预览,全部文档请下载后查看!喜欢就下载吧,查找使用更方便
文本内容:
年安徽省巢湖市全国计算机等级考试2023语言程序设计模拟考试含答案C学校:班级:姓名:考号:
一、.填空题题210下面程序有两个语句,如果第一个语句输出的是
1.printf printf194,则第二个语句的输出结果是【】printfmain{int a
[10]={l,2,3,4,5,6,7,8,9,0,*p;p=a;printfn%x\nH,p;printfn%x\n,p+9;}常用的软件结构设计工具是结构图也称程序结构图其中,用
2.SC,矩形表示用带空心圆的箭头表示传递的是数据
3.若a=l,b=2,则表达式!x=A IIy=B0的值是___________o
4.下列程序的输出结果是_______main;{int a=l,b=2,c=3,t=0ifaB{t=a;a=b;b=t;}ifaC{t=a;a=c;c=t;};printf%d,%d,%d\n,a,b,C
24.编写函数fun,.其功能是从字符串中物除指定的字符同字母的大、小写按不同字符处理,我如,若程序执行时输△字符串为uturbo c and Borland外键盘上输入字符n,则输出为v*rurh cad IwladC++”如果输入的字符在字符串中不存在,则字符串照原样输出注意部分源程序给出如下请勿改动主函数main和其他函数中的任何内容,仅在函数出“的花括号中填入你编写的若干语句试题程序#inrluie stdio.hvoid funchar s],int cf.mainstatic char strf扭turbo cand borianlo++”;char ch:char ch:printf原始字符串:%s\nv.str;prinlff1输入一个字符An”;seanff,%cr,:ch;funstr.ch;pdntfstr[]=%s\T\str;strepy str/fturbo andIxirlandcfunstr/a*:.学生的记录由学号和成绩组成,名学生的数据已在主函数中放入结25M构体数组中,请编写函数其功能是按分数的高低排列学生的stu proc,记录,高分在前注意部分源程序给出如下请勿改动函数和其他函数中的任何内容,仅在函数的花括号中main proc填入所编写的若干语句试题程序#includelt;stdio.hgt;#define M16typedef structchar num
[10];int S;STRECvoid procSTRECa[]int i,j;STREC t;用冒泡法来按从高到低fori=l;i++/*排序*/forj=0;jlt;M-l;j++o按分数的高低排列学生ifa[j].s//*的记录,高分在前*/{t=a[j];a[j]=a[j+l];a[j+l]=t;void main{nGA002n,69},{nGA004%85,{nGA001n,91,{nGA007%72,{nGA008%64,{nGA006n,87,STREC stu[M]={{nGA005%85,{nGA003%76},{nGA015%85,{nGA013%91,{nGA012%64,{-GA014%91,{nGA0H%66,{nGA017n,64,「GAO18”,64,{nGA016%72}};int i;procstu;printfnThe data after sorted\nn;fori=0;ilt;M;i++ifi%4==o〃每行输出个学生记录4printfn;printf%s%4d,stu[i],num,stu[i].s;printf\n;.编写函数,它的功能是利用以下所示的简单迭代方法求方程26fun的一个实根cosy-y=0yn+1=cosyn迭代步骤如下⑴取初值为yl
0.0;把的值赋给⑵y0=yl,yl y0;求出一个新的3y1=cosyO,y1;若的绝对值小于则执行步骤4yO=yl
0.000001,否则执行步骤5,2;所求就是方程的一个实根,作为函数值返回5yl COSy-y=0程序将输出结果Result=
0.739085o请勿改动函数与其他函数中的任何内容,仅在函数的花括号main fun中填入所编写的若干语句部分源程序给出如下试题程序St inchxirh S includr Vnuih.h务inrludr Vzdo.hHoel MintIFILE•幽iAMI•pntMfa ReMilt«■Ml\na»coe out-foptf.gtfik dat***w*g pn5tfoui«e KW«CCMI doeietout iII.请编写函数该函数的功能是删去一维数组中所有相同的27proc,数,使之只剩一个数组中的数已按由小到大的顺序排列,函数返回删除后数组中数据的个数例如,若一维数组中的数据是11222344566667789910101010删除后,数组中的内容应该是12345678910注意部分源程序给出如下请勿改动函数和其他函数中的任何内容,仅在函数的花括号main proc中填入所编写的若干语句试题程序:〈.,C includrtdoo.h dcfmtfM80mt procmi*]•iat nvoid fMinf・・・list J-11♦
1.2♦
223.4♦4♦6♦6♦6♦
6.7♦78・9・9・IO・IMOJ
0.,.・T2ipcintft4Thr0ngifxl dati\fa foHi^Oi YIH♦♦♦pnnt0K3d.••rrU■n°prociirr»nipnntfi*\r\fiThc dalAafter deletedw”fori-Oi ilni i*+,%》pnntf3d.J]ipnntfC\n\n t
28.下列程序定义了的二维数组,并在主函数中赋值请编写函数M XMproc函数的功能是求出数组周边元素的平方和并作为函数值返回给主0,函数中的例如,So若a2I数组67205U中的98值为g93$U1872则返回主程序后的值应为注意部分源程序给出如下请勿改动S310o函数和其他函数中的任何内容,仅在函数的花括号中填入所mainproc编写的若干语句试题程序S includehJ iwludch,=includexdlilk hdefine M$司]「tfit prormt MvoidfMin・・・mt■rTiM2hk.52,int i.js in»iMns«y«irtn Tlfi pnnf*••••The array♦•••\©*3or Ot tCMi++,orpntitfC*K4d*tanfiJQ]•pnntfM\n*iwen■prorl arr•pcintfC0♦•••THE RESULT••••*由prinrfC*The MOIHd\n*•9um
1.请编一个函数指向一个行29void procintttEM][N],int pp[N],tt M列的二维数组,求出二维数组每行中最大元素,并依次放入所指的N pp一维数组中二维数组中的数已在主函数中给出注意部分源程序给出如下请勿改动函数和其他函数中的任何内容,仅在函数的花括号main proc中填入所编写的若干语句试题程序#includestdio.h#includeconio.h#includestdlib.h#define M3#define N4void procintttrM3rN]int pp[N]void mainintstr[M][N{{34,56,84,78},{23,84,93,12,{28,38,39,93}};intp[N],i,j,k;systemCLS;printfThe riginaldata is\n;fori=0;iM;i++forj=0;jN;j++printf%6d,str[i][j];printf\n;procstr,p;printf\nThe result is\n;fork=0kM;k++printf%4d,p[k];printfn;!.使用打开考生文件夹下中的解决方案此解决方案30VC++2010progl的项目中包含一个源程序文件在此程序中,编写函数其功progl.c fun,能是将两个两位数的正整数、合并成一个整数放在中合并的方式a bc是将中的十位数和个位数依次放在数的十位和千位上,中的十位数a cb和个位数依次放在数的百位和个位上c例如,当如时,调用该函数后,a=45,b=c=5142o注意部分源程序给出如下请勿改动主函数和其他函数中的任何内容,仅在函数的花括main fun号中填入编写的若干语句试题程序#include stdlib.h#include conio.h#include stdio.hvoid funint a,int b,long*cmain int a,b;long c;printf^Input a,b:;scanf%d%d”,a,b;funa,b,c;printfCThe resultis:%ld\nc;
四、.程序修改题题210给定程序中函数的功能是将一个由八进制数字字符组成的字符
31.fun串转换为与其值相等的十进制整数规定输入的字符串最多只能包含位八进制数字字符5例如,若输入则输出将是77777,32767请改正程序中的错误,使它能得到正确结果[注意]不要改动函数,不得增行或删行,也不得更改程序的结构main[试题源程序]#includestdio.h#includestring.h#includestdlib.hint funchar*p intn;/vl*KL*KL*KL*//不不不不不不不不不不tciind不不不不不不不不不不/n=*p-o;P++;while*p!=0{/1//不干不个个不不不不个Tei个个不不不不不不不不/n=n*8+*p-o;P++;return n;main chars
[6];int i;int n;printfnEnter a stringOcatal digits:n;getss;ifstrlens5printfnError:String toolonger!\n\nn;cxitO;fori=0;s[i];i++ifs[i]V||s[i]7printfnError:%c notis ocataldigits!\n\nn,s[i];exitO;printfnThe originalstring:n;putss;n=funs;printfH\n%s iSconvered tointeger number:%d\n\nn,s,n;下列给定程序是建立一个带头结点的单向链表,并用随机函数为各结
32.点数据域赋值函数的作用是求出单向链表结点不包括头结点数fun据域中的最大值,并且作为函数值返回请改正程序中的错误,使它能得出正确的结果注意不要改动函数,不得增行或删行,也不得更改程序的结构main试题程序#includestdio.h#includeconio.h#includestdlib.h typedef struct aa{int data;struct aa*next;}NODE;/7,7,7,7,7,7,77,//小小小不不不不不不不不小不不小不不不小小个不不不不不不/fun NODE*h{int max=-1;NODE*p;p=h-next;whilcp{ifp-datamax max=p-data;已知字符的码为以下程序运行后的输出结果是【】
5.A ASCII65,#includestdio.h main{char a,b;a=A+5-3;b=a+6-2;printfn%d%c\n,a,b;.以下程序的功能是输入任意整数给后,输出行由大写字母开始构6n nA成的三角形字符阵列图形例如,输入整数时注意不得大于5n程序运行结果如下10,ABCDE FGHIJKL MN0请填空完成该程序main;二;{int i,j,n charch A;scanf%d,nifn11{fori=l;i=n;i++{forj=l;j n-i+l;j++;{printf%2c,ch
[10];p=h-next;return max;outresultint s,FILE*pf{fprintfpf,n\nThe maxin link:%d\n\s;}NODE*creatlinkint n,int m{NODE*h,*p,*s,*q;int i,x;h=p=NODE*mallocsizeofNODE;h-data=9999;fori=l;i=n;i++{s=NODE*mallocsizeofNODE;s-data=rand%m;s-next=p-next;二p-next s;p=p-next;p-next=NULL;return h;outlinkNODE*h,FILE*pf{NODE*p;p=h-next;fprintfpf,n\n TheLIST:\n\n HEAD;whilep{fprintfpf,%d,p-data;p=p-next;}fprintfpf,n\nn;main{NODE*head;int m;clrscr;head=creatlinkl2,100;outlinkhead,stdout;m=funhead;printfn\nThe RESULT:\nn;outresult m,stdout;下列给定程序中,函数的作用是将字符串中的小写字母都改
33.fun tt为对应的大写字母,其他字符不变例如,若输入则输出“edS,dAd,“EDS,DAD”请改正程序中的错误,使它能得到正确结果注意不要改动函数,不得增行或删行,也不得更改程序的结构main试题程序#includestdio.h#includestring.h#includeconlo.h/1/char funchar tt[]int i;/不干不个个不不不不个不不不Tei inc不不个不不不不不不不不不不/fori=0;tt[i];i++/17,//个不不不不不不不下不不小小I oiind小不不不不小不不不不不不小/iftt[i]=,A,tt[i]=2tt[i]-=32;returntt;main int i;;clrscr;printf\nPlease enterastring;getstt;printf\nThe result string iS:/n%s,funtt给定程序中函数的功能是统计一个无符号整数中各
34.M0D
11.C fun位数字值为零的个数,通过形参传回主函数;并把该整数中各位上最大的数字值作为函数值返回例如,若输入无符号整数则数字值为30800,零的个数为各位上数字值最大的是3,8请改正函数中指定部位的错误,使它能得出正确的结果fun注意不要改动函数,不得增行或删行,也不得更改程序的结构!main1♦include stdio.h int fununsigned n,int2*zero{int count=0,max=0,t;3do45{t«n%10;6/…………•found•…………ift-0count++;7ifmaxt max«t;8n*n/10;91011}whilen;12•■•■■•■・•★★♦•found*13zero=count;14return max;15main16{unsigned n;int zeromax;r17printf n\nlnput nunsigned:M;scanf tf%dw n;r18max■funn zero;rprintf H\nThe result:max=%d zero=%d\nw maxzero;r r
192021.下列给定程序中,函数的功能是根据以下公式求的值,35fun n并作为函数值返回例如,给指定精度的变量输入时,应当eps
0.0005输出Pi=
3.140578on/2=l+l/3+l/3*2/5+l/3*2/5*3/7+l/3*2/5*3/7*4/
0.0;/7^7#7^7*7^7^7*7^7^7^7#7*7//不不不不不不不不不不可不不Tei]n「i个不不不不不不不不不不不不不/t=l;I/sl sixsl//小小不不不不不不不不不小不Toiincl不不不不不不不不不不不不小不/whileteps{s+=t;t=t*n/2*n+l;n++;/777,7,7,7,7,7,7,77「17”7,7,7”777,7,7777,//不不不不力不小不不不小小小tci in「不不小小不不小个个不小小小小/return s;main{double x;printfn\nPlease entera precision:;scanfn%lf\x;printfu\nPi=%lf\n\funx;在主函数中从键盘输入若干个数放入数组中,用结束输入并放在最
36.后一个元素中下列给定程序中,函数的功能是计算数组元素中值fun为负数的平均值不包括0例如数组中元素的值依次为则程序的运行结果为43,47,-21,53,-8,12,0,-
25.333333请改正程序中的错误,使它能得到正确结果注意不要改动函数,不得增行或删行,也不得更改程序的结构main试题程序#includeconio.h#includestdio.h doublefunint x[]double sum=
0.0;int c=0,i=0;/sl_£j Isi KlK1sl KIsi Klsf//小小不不不不不不不不不小不Toiincl不不不不不不不不不不不不小/whilex[i]==0sum=sum+x[i];;C++i++;/K!K1KJK!*J KJK11*J K!*J KJ//个不不不不不不不不不不不/m不不不不不不不不不不不/sum=sum\c;return sum;main intx
[1000];int i=0;clrscr;printf\nPlease entersome dataendwith0”;doscanf%d,x[i];}whilex[i++]!=0;给定程序中函数的功能是首先将大写字母转换为对
37.M0D
11.C fun应小写字母;若小写字母为则将其转换为其后的第个字母;若小a〜u,5写字母为使其值减转换后的小写字母作为函数值返回例如,v~z,21若形参是字母则转换为小写字母若形参是字母则转换为小写字母A,f W,b请改正函数中指定部位的错误,使它能得出正确的结果fun注意不要改动函数,不得增行或删行,也不得更改程序的结构!main♦include stdio.h finclude2ctype.h char funchar c3{ifo-^1“456C-C+32;7ifc-fa89c-c-5;10else ifc«1v*c-1z*c»c-21;return c;121314main{char clc2;r15printfw\nEnter aletterA-Z:;cl-getchar;ifisupperclc2-funcl;printf w\n\nThe letter\f%c\f17change tocl,c2;1819else printf^XnEnter A-Z!\nn;202122下列给定程序中,函数的功能是从个字符串中找出最长的那
38.fun N个中,并将其地址作为函数值返回各字符串在主函数中输入,并放入一个字符串数组中请改正程序中的错误,使它能得出正确的结果注意不要改动函数,不得增行或删行,也不得更改程序的结构main试题程序#includestring.h#includestdio.h#define N5#define M81/vt*vl*1vt*VL*vt*vt*//不不不、不不不不少不不不ioi irid不不不不不不不々、々、不下不不々、/funchar*sq[N]{int i;char*sp;sp=sq
[0];for{i=0;iN;i++ifstrlenspstrlensq[i]sp=sq[i];/7,7,7,7,017,7,//小小不不不不不不不不不不小tciind不不不不不不不不不不不小不小/return sq;main{charstr[N][M],longest;int i;printfnEnter%d lines:\n n,N;fori=0;iN;i++getsstr[i];printfn\nThe%d string:\n N;fori=0;iN;i++putsstr[i];longcst=funstr;printfn\nThe longeststring:\n;putslongest;给定程序中函数的功能是从个红球,个白球,
39.M0D
11.C fun356个黑球中任意取出个作为一组,进行输出在每组中,可以没有黑球,8但必须要有红球和白球组合数作为函数值返回正确的组合数应该是程序中的值代表红15i球数,的值代表白球数,的值代表黑球数j k请改正函数中指定部位的错误,使它能得出正确的结果fun注意不要改动函数,不得增行或删行,也不得更改程序的结构!main♦include stdio.h2int fun3{int jsum-O;r4printfw\nThe result:\n\nn;5/★…………found…………•/for i»0;i«3;i++6{forj»l;j=5;j++7{k=8-i-j;8/•••••★★育★★育★★found,•・•吉•••♦••・•/910ifK=0K»611sum*sum+l;12printfred:*4d%4d white:black:%4d\nHf13141516return sum;1718main19{int sum;20sum»fun;21printfMsum«%4d\n\n,\sum;22下列给定程序中,函数的功能是从个学生的成绩中统计出高
40.fun n于平均分的学生人数,人数由函数值返回,平均分存放在形参所指aver的存储单元中例如输入名学生的成绩
88565.
56995.
5875562.575则高于平均分的学生人数为(平均分为)请改正程序中的错
474.312500o误,使它能得到正确结果注意不要改动函数,不得增行或删行,也不得更改程序的结构main试题程序#includestdio.h#includeconio.h#define N20int funfloat*S,int n,float*aver/^1*vl*vt*vt*vt*1vl*VL*//不不不不,.、不不不不小不不不tci inri不不「不下不不不「不不不不/int ave,t=0;int count=0,k,i;fork=0;kn;k++t+=s[k];ave=t/n;fori=0;in;i++/KL**1//不不不不不不不不不不不不不Toiin(i不不不不不不不不不不不不不不不/ifs[i]ave count++;/vl*K£*vL*^L*^L*vL*vl**1vl*^1*^1#KL#^1*vl*//不不不不不不不不不不不不不Toi incl不不不不不不不不不不不不不/aver=ave,return count;main float S
[30],aver;7,下面程序的输出是【】main{enum em{eml=3,em2=l,em3};char*aa[]={AA,nBBn,CC,nDD;printfn%s%s\nn,aa[eml],aa[em2],aa[em3];数据结构分为逻辑结构与存储结构,线性链表属于[】
8.以下程序的功能是:将输入的正整数按逆序输出例如:若输入则
9.135输出请填空531#include stdio.hmain{int n,s;printfnEnter anumber:;scanfn%dn,n;printfnOutput:;do{s=n%10;printf%d,s;[];}whilen!=0;printfn\n,f;以下程序的输出结果是【】
10.main intarr[]={30,25,20,15,10,5},*p=arr;P++;int m,i;;clrscrn;printfn\nPlease enterm;scanf%d,m;printfn\nPlease enter%d mark\nn,mfori=0;im;i++;scanf%f,s+iprintfn\nThe numberof students%d\nn,;funS,m,aver;printfAVe=%f\n,aver
五、程序改错题题
2.下列给定程序中函数的功能是从整数到之间,查找能被41fun10553整除且有一位上的数值是的数,把这些数放在所指的数组中,这些5b数的个数作为函数值返回规定函数中放个位数,放十位数请改al a2正程序中的错误,使它能得出正确的结果注意部分源程序在文件中,不得增行或删行,也不得更改程MOD
11.C序的结构!;tincludeMdio.hint fiinint•b{int k.al.a
2.i=0;fork=10[k=55k++I/found aZsk/lO;al=k-a2♦10;;ifk%3==0a2==5llk%3==0al二二5i b[i]=k i44|I・・・・・・・・・・・/••••••••••found•••/;Mum kImaininta
[100]k m;9v;m=fun a;printf**The resultis\nfbr k-0;km;k+♦;printf-%4d\a[k]printf-\n-;.下列给定程序中,函数的功能是先将字符串中的字符按顺序
42.proc s存放到中,然后把中的字符按正序连接到的后面例如,当中的tSts字符串为时,则中的字符串应为请改正程序中的WXYZ tWXYZWXYZo错误,使它能得出正确的结果注意不要改动函数,不得增行或删行,也不得更改程序的结构main试题程序#includestdlib.h#includeconio.h#includestdio.h#includestring.h,void procchar*s char*inti,si;sl=strlens;fori=0;isl;i++〃****fkund****t[i]=s[sl];fori=0;isl;i++t[sl+i]—s[i];t[2*sl]=\O0;void mainchars
[100],t
[100];systemCLS;print{\nPlease enterstring s;scanf%s,s;procs,t;printfThe resultis%s\n,t;}
六、操作题题
2.使用打开考生文件夹下中的解决方案此解决方案43VC++2010progl的项目中包含一个源程序文件在此程序中,已知学生的记录由progl.c学号和学习成绩构成,名学生的记录已存入结构体数组中请编写函N a数该函数的功能是找出成绩最高的学生记录,通过形参将其返回主函数规定只有一个最高分已给出函数的首部,请完成该函数注意部分源程序给出如下请勿改动主函数和其他函数中的任何内容,仅在函数的花main fun括号中填入你编写的若干语句试题程序#include stdlib.h#include stdio.h#include string.h#include conio.h#define N10*定义结构体*/typedefstructss/{charnum
[10];int s;}STU;fun STU a[],STU*svoid mainSTUa[N]={{A01”,81},{“A02”,89},{“A03”,66},{“A04”,87},{“A05177},,广{“A06”,90},{“A07”,79},{“A08”,61}A09180},{“A10171}},m;int i;system“CLS”;printf****The originaldata*****;for i=0;iN;i++printf No=%s Mark=%d\n;a[i].num,a[i].s;fun a,m;printf****THE RESULT****\iT;printf Thetop:%s%d\n\m.num m.s;
95.请编写函数它的功能是计算并输出(包括)以内能被或整44fun,n n59除的所有自然数的倒数之和例如,在主函数中从键盘给输入后,输出为注n20s=
0.583333c意要求的值不大于n100o部分源程序在文件中PROG
1.C请勿改动主函数和其他函数中的任何内容,仅在函数的花括main fun号中填入你编写的若干语句linclude stdio.hdouble funint n456NONO7/*请在此函数内打开文件,愉入测试数据.调用fun函数.输出数据.关闭文件.•/8FILE Wwf;int n,i;double s;rf•9fopanin.dat.r;10wf•fopenHout.datw Mww;rfor1•0;i10;12fscanf rf,rd,n;13s■funn;14fprintfwf w%lf\nw s;]r r15fcloserf;fclosewf;161718main19int n;double s;20printf H\nlnput n:acanftn;21s»funn;printf\n.s;22NONO;2324参考答案解析对于指针变量的运算,就是对地址的运算本题中由于指
1.1a61a6针指向的是整型变量,所以,使指针变量移动个位置也就是移动个字918节注意,本题是以十六进制输出的用带实心圆的箭头表示传递的是控制信息,用带空心的箭头表示传递.模块模块解析矩形表示的是模块,箭头表示的是模块间的调用关系2的是数据解析根据运算符的运算顺序可知,该表达式最后运算的是与运
3.00算,而任何表达式与进行“与”运算,结果都为“0”0解析分析程序,第一个语句,控制条件成立,
4.3123,1,2if a=l,b=2,ab则交换、的值,此时第二个语句,控制条件成a b a=2,b=l ifa=2,c=3,aco立,则交换、的值,此时a ca=3,c=2o解析由于所以按%格式输出的
5.67G67G\5\73V=2,a=\A\+\5\-\3\=\C\,d码为;同理,按%格式输ASCII67\6\-\2\=4,b=a+\6\-\2\=\C\+4=\G\,出为\GV
6.语言允许字符数据与整数进行直接的算术运算,故输出大写字母开始C A的连续字符,可通过白加运算完成三角形字符阵列第行的字符个ch++i数为在每行结尾以回车字符,换行n-i+1,\\n,\r\n\r\n解析语言对枚举的定义规定在枚举中声明的各
7.DDBBCCDDBBCC C个枚举元素,如果没有明确指出某个枚举元素的值,它的上一个元素存在并有明确值的情况下,这个枚举元素的值为其上一个元素的值+1在本题中,没有明确说明枚举元素的值,则进而可em3em3=em2+l=l+l=2,知,在打印函数中,要打印的数组元素是、因此最printf aa
[3],aa[l]aa
[2],后的打印结果应当为“DDBBCC”.存储结构8或或解析每次循环把除以所得的商赋
9.n/=10n=n/10n/=10n=n/10n10给n0解析整型指针最初被赋的值是数组的头指针,即指向数组的
10.1010arr第一个元素后,指针指向数组的下一个元素,即*在执30,p++p=arr[l]=25,行时,则相当于即因此,输出应为*p+3a[l+3],
1010011.B
12.D解析解答本题,首先要明白在对指针进行加、减运算的时候,数字13C不是十进制的数而是指个存储单元长度,而个存储单元长度“1”“1”,T1占多少存储空间,应该视具体情况而定如果基本类型是型,移动int1个存储单元的长度就是位移个字节,如果基本类型是型,移动个2float1存储单元的长度就是位移个字节所以所指向的数组元素的地址4p+13上标300H+Q3*4H=352H解析宏名的有效范围为定义命令之后到本源文件结束,可
14.C#define以在程序中使用命令终止宏定义的作用域本题由于的作用,#undef#undef使的作用范围在#到之间,故答案为a1«611«a100#undefa C
15.D各种排序方法中最坏情况下需要比较的次数分别为:冒泡排序、快nn-1/2速排序、简单插入排序、希尔排序、简单选择排序nn-1/2nn-l/20nl.
5、堆排序nn-l/2Onlog2n
16.C
17.B解析二叉树的一个性质是,在二叉树的第层上,最多有
18.C k2k-lk=l个结点对于满二叉树,每一层上的结点数都达到最大值,即在满二叉树的第层上有个结点所以,在深度为的满二叉树中,所有叶子结k2k-15点在第层上,即其结点数为52k-l=25-l=
16019.C因为不成立,故表达式的值为即为赋给因此左边表达式ab ab0,0m,的值为与任何值运算都为于是不再计算右边表达式的值,所以0,00,此时的仍然为n
220.B链表采用的是链式存储结构,它的结点空间可以动态申请和释放;它的数据元素的逻辑次序靠结点的指针来指示,插入、删除不需要移动数据元素但是链式存储结构也有不足之处每个结点中的指针域需额外占用存储空间,它是一种非随机存储结构
21.【解析】首先定义一个变量来存放表达式的和.根据题目中提供的多项式,通过次循环来求出项的和最后把所求得的和返回到主函数当中n n
22.1floatfunintm,fintn{Floatp1=1,p2=l,p3=l;inti;fori=1;i=m;i++pi*=i;fori=l;i=n;i++p2*=i;fori=l;i=m-n;i++p3*=i;returnpi/p2^p3;本题考查循环的使用通过个循环分别计算阶乘其中3for pgm!,p2=n!,p3=m-n!o
23.\n\tvoid procchar arr[M][N],char*b\n{\nint i,j,k=0;表示其行下标\nfori=0;iM;i++//i/由于每行的个数不等,因此用\nforj=0;.rr[i][j]!=\O;j++/来作为循环结束的条件a[i][j]!=\O//把二维数组中的元素茄到的一维数组中,\nb[k++]=arr[il[j];b//最后把赋作为字符串结束的标志\nb[k]=\0;b\0\n}【解析】字符串数组中每一行都是一个一个完整的字符串,其结束\n标志为因此,通过字符串的结束标志来判断每一个字符串是否结束,\0将字符串数组中的所有字符串均赋值新的一维数组来完成字符串的合并b\n
24.【答案】void funcha・s[tnt cl“1nti=0;.■char*p;P=s;while*p/*判断是否为结束标识符*/{,if*p!=c/*判断字符串中字符是否与指定字符相同*/•-8[«*P;/*如不同,将重新组合字符串*/i++;/•如相同,则处理下一个字符*/P++;}s[i]=\0;.【解析】通过循环将非指定字符重新保存,字符串末尾加上结束标识符C
25.void procSTRECa[]int i,j;STREC t;/用冒泡法来按从高到低排序fori=l;i++/forj=0;j++/按分数的高低排列学生的记录,高分在前ifa[j].slt;a[j+l].s/{t=a[j];a[j]=a[j+l];a[j+l]=t;}printf%d\n,*p+3;
二、单选题题
1011.由两个栈共享一个向量空间的好处是_____减少存取时间,降低下溢发生的机率A.节省存储空间,降低上溢发生的机率B.减少存取时间,降低上溢发生的机率C.节省存储空间,降低下溢发生的机率D..以下程序运行后,输出结果是12#includestdio.h sschar*s{char*p=s;while*pp++returnp-s;}main{char*a=abded”int i;i=ssa;printf%d\n,i;}若有定义且数组的首地址为则所指向的
13.float a
[15],*p=a;,a300H,p+13数组元素的地址为A.334H B.30DH C.352H D.31AH
14.以下程序的输出结果是________#includestdio.hmain{into
26.【解析】进入函数,根据题中给出的求解步骤,首先初值为fun yl若的绝对值大于就循环进行迭代,即
0.0;yO-yl
0.000001“yO-yl;yl-cosyO;,直到满足题目中的要求,返回即实根本题考查了用法yl,do-while
27.【解析】题目中要求删去一维数组中所有相同的数,使之只剩一个首先需要将字符串中的每一个字符与其后的一个字符相比较,相同则不做任何操作,不相同则将其放入新的字符串中最后将新的字符串中的字符个数返回给主函数
28.【解析】要求出数组周边元素的平方和,首先要找到二维数组所有的周边元素二维数组的周边元素的特点为行下标或列下标为或根M—1据这个特点,找出二维数组中所有的周边元素,求出其平方和放在变量s中最后将变量返回到主函数中s
29.\r\n\tvoid procinttt[M][N],int pp[N]inti,j,max;控制行的下标fori=0;iM;i++//i存放每行中最大的数max=tt[i][c];//maxforj=0;jN;j++iftt[i][j]maxmax=tt[i][j];//把大的数放到数组中,经过来控制数组的下标pp[i]=max;PP ipp【解析】按照题目中要求,求出二维数组每行中最大元素,并依次放入所指的一维数组中首先比较二维数组中每一行的元素,找出每一行PP中的最大元素,放入一维数组中,返回到主函数当中pp
30.void funinta,int b,long*c获取的个位数,获取的十位数,获取的个位/*b%10ba/10aa%10a数,获取的十位数*/b/10b*c=b%10+a/10*10+b/10*100+a%10*1000;}本题主要考核如何取出和的个位数和十位数,取出后如何将其表示成a b中相应的位数由于和都是只有两位的整数,因此分别对它们除以ca b可得到它们的十位数,分别用对它们求余可得到它们的个位数将1010得到的数对应乘以、、、即可得到的千位数、百位数、十1000100101,c位数、个位数注意使用时要进行指针运算c错误正确⑵错误正确⑴错误正确⑵
31.⑴*p*po;d;*p\r\n*p\r\n错误正确b,;\r\n错误正确错误正确
32.⑴funNODE*hintfunNODE*h2p=h-next;错误正确错误p=p-next;lfunNODE*hint funNODE*h\r\n2p=h-正确解析本题考查的这种链表的数据结构中,必须利next;p=p-next;用指针变量才能实现即一个结点中应包含一个指针变量,用它存放下一结点的地址建立单向链表的一般步骤是建立头指针一建立第一个节点一头指针指向第一个节点一建立第二个节点一第一个节点的指针域指向第二个节点一……一最后一个节点指向本题重点是了解链NULL表的基本思想和相关算法,其实考试时的程序根本没有书上的难在这里我们要说,重点理解有关链表插入及删除时指针移动的先后顺序问题注意指针的保存和归位即头指针的保存和链表遍历时指针的归位这都是考试重点!错误正确错误
33.1char funchar tt[]char*funchartt[]2iftt[i]=,正确=七错误A,tt[i]=2,iftt[i]=ta,tt[i]1charfunchar正确错误正确tt[]char*funchartt[]\r\n2iftt[i]=Wtt[i]=Z解析错误函数的返回值是字符串的首地iftt[i]=a,tt[i]=,A1址,是指针类型,所以在函数名前要加阳号错误题目要求将小写2字母改为大写字母,所以语句的判断条件是小写字母if;;解析本题中函
34.lift==02*zero=count lift==O2*zero=count数的功能是统计一个无符号整数中各位数字值为的个数对无符号数进0行截取,然后对每个数字进行判断并统计错误正确错误正确
35.⑴t=0;t=
1.0;2whileteps whilet=eps3错误正确⑴错误正确错误retums;returns*2;t=0;t=
1.0;\r\n2whilet正确错误正确解析该题中,eps whilet=eps\r\n3returns;:returns*2;我们首先看函数中语句的含义,当新的一项大于给定参数时,fun while循环累加根据题意我们可以看出,最后一项应该小于给定参数,因此,循环条件应当为至于;错误,是一个数学常识,while=eps returns应该是returns*2;错误正确错误正确
36.1whilex[i]==Owhilex[i]!=O2sum=sum\c;二错误正确错误sum sum/c;lwhilex[i]==O whilex[i]!=0\r\n2正确解析错误此处考查的是对循环条件的sum=sum\\c;sum=sum/c;1理解,当被判断的数组元素为时,说明这是数组的最后一个元素,此时要跳出循环错误语言中的除法运算符是“/”,而不是2C、0解析本题中函
37.lc=c+32;2c=c+5;lc=c+32;2c=c+5;数的功能是将某些大写字母转换为对应小写字母之后的第五个字母对于将字母转换的题型,首先是查找符合条件的字符,然后根据规则对字符进行转换本题需要大家了解大小写字母是怎样通过码相互转ASCII换的正确错误;正确
38.lfunchar*sq[N]char*funchar*sq[M]2return sq正确错误return sp;lfunchar*sq[N]char*funchar*sq[M]\r\n2return正确解析函数的彤参为字符串指针数组,每个元sq;return sp;fun素指向一个长度为的字符串从主函数中的语句可以看出,字符串指M针数组的每个元素指向一个字符串,要求函数找出其中最长的字符fun串可先假设指针数组的第个元素所指的字符串最长,之后对字符串指1针数组进行遍历,若遇字符串长度大于待定最长字符期,则令该字符串为待定最长字符串,如此循环直至指针数组末尾,即可得到最氏字符中的地址
39.lfori=1;i=3;i++2ifk=0k=6lfori=1;i=3;解析本题中函数的功能是从个红球、个白球、i++2ifk=0k=634个黑球中任意取出个作为一组,进行输出在每组中,可以没有黑球,58但必须要有红球和白球其实就是实现这三种球的组合取值错误;正确;错误正确
40.1int avet=0float avet=
0.02ifs[i]ave错误二;正确:;错误ifs[i]ave3aver ave*aver=ave1int ave,t=0;正确错误正确错float ave,t=
0.0;\r\n2ifs[i]aveifs[i]ave\r\n3误正确解析错误和分别用来存放成aver=ave;*aver=ave;1ave t绩的平均值和总分,应为实型数错误根据题意,找出高于平均分2的数,所以此处的关系运算符应为“〉”错误是指针,而是3aver ave一个数,不能将一个数赋值给一个指针,而要用付节O
41.la2=k/10;2retum i;【考点分析】本题考查取数值的各个位;语句,将需要返回n return的函数值返回给函数main【解题思路】加存放十位数,所以是此处是一个书写错误1a2=k/10,根据题意,要返回能被整除的数的个数,从循环体中可以知道其个23数是由来计算的,所以返回的是ii错误:
42.\n\tt[i]=s[l];正确\n t[i]=s[i];【解析】函数首先要实现将数组中的元素顺序放在数组中,即\n procs t数组中下标为的元素在数组中下标也为因此”应tiSi,改为t[i]=s[i];\n
43.funSTU a[],STU*s int i;*s=a
[0];找出成绩最高的学生记录*/fori=0;iN;i++/*ifs-sa[i].s p=x/a[i].s*s=a[i];先使指针变量指向第名学生通过循环语句遍历所有学生的成S1绩,利用条件语句判断当前学生成绩是否最高所以条件表达式为if s-s等价于S”*s.s
44.解析该程序功能是计算并输出(包括)以内能被或整除的所n n59有自然数的倒数之和解题过程首先求出能被或整除的所有自然数,59然后在此基础上求得这些数的倒数之和a=200;#define a100printfn%dn,a;#undefa printfn%dn,a;}A.200100B.100100C.100200D.
200200.对长度为的线性表排序,在最坏情况下,比较次数不是的15n n n-1/2排序方法是快速排序冒泡排序直接插入排序堆排序A.B.C D..在一个源文件中定义的全局变量的作用域为16本程序的全部范围本函数的全部范围.从定义该变量的位置开始到A.B.C本文件结束以上说法都不正确D..下面关于图的存储的叙述中正确的是17用邻接表法存储图,占用的存储空间大小只与图中边数有关,而与顶点A.个数无关用邻接表法存储图,占用的存储空间大小与图中边数和顶点个数都有关B..用邻接矩阵法存储图,占用的存储空间大小与图中顶点个数和边数无C关用邻接矩阵存储图,占用的存储空间大小只与图中边数有关,而与顶点D.个数无关在深度为的满二叉树中,叶子结点的个数为
18.
5.设、、、、、均为型变量,且、、c=
7、、、19abc dm ninta=5b=6d=8m=2则逻辑表达式运算后,的值是n=2,m=abn-cd nnA.OB.l C.2D.3链表不具有的特点是
20..不必事先估计存储空间A.A可随机访问任意元素B.插入、删除不需要移动元素C.所需空间与线性表长度成正比D.
三、程序设计题题
1021.请编写函数其功能是计算并输出下列多项式值proc,S=1+1/2+例如,若主函数从键盘给输入后,则1/3+1/4+...+1/2nl+1/2nn100输出为的值要求大于但不大于注意部分源程序s=
5.87803l n1100o给出如下请勿改动主函数和其他函数中的任何内容,仅在函数main的花括号中填入所编写的若干语句试题程序proc/include stdio.h doubleprocintn f1}void mainint mdouble sumprint\nlnput n:scAnf%dw^n:sum procn printfC**\ns.使用打开考生文件夹下中的解决方案此解决方案的22VC++2010progl项目中包含一个源程序文件在此程序中,编写函数其功能progl.c fun,是根据以下公式求的值,结果由函数值返回与P mn_____m\为两个正整数且要求例如:时,mn Im=12,n=8运行结果为注意部分源程序在文件中请勿改动
495.000000progl.c主函数和其他函数中的任何内容,仅在函数的花括号中填入main fun你编写的若干语句试题程序#includestdio.h1float funint mintn/3{4骤16,main/*主函数♦/7void NONO;8printf MP-%f\n”,fun12,8;NONO;|1O|11void NONO12{/*本函数用于打开文件、输入数据、调用函敕、输出数据及关闭文件*/13FILE♦fp♦wf;z14inti,m,n;德|float s;16fp=fopen nin.dat1*/nrn;17wf=fopennout.datH nwM;r18for i=0;i10;i+4-{19fscanf fprt%d,若d,n;r20s=fun m,n;21fprintf wf11%f\n s;/r22}fclose fp;24fclosewf;25|
1.请编写函数该函数的功能是将放在字符串数组中的个23proc,M字符串每串的长度不超过按顺序合并组成一个新的字符串N,例如,若字符串数组中的个字符串为MABCDBCDEFGCDEFGHI则合并后的字符串内容应该是ABCDBCDEFGCDEF—GH1o注意部分源程序给出如下请勿改动函数和其他函数中的任何内容,仅在函数的花括main proc号中填人所编写的若干语句试题程序#includestdio.h#includeconio.h#define M3#define N20void procchararr[M][N],char*bvoid maincharstr[M][N]={nABCD%“BCDEFG”,”CDEFGHI},i;chararr[l00]={n#############;#####printfThe string\n;fori=0;iM;i++putsstr[i];printf\n;procstr,arr;printfThe Astring\n;printf%s,arr;printf\n\n;}。