《2021年辽宁省丹东市全国计算机等级考试C语言程序设计测试卷(含答案).docx》由会员分享,可在线阅读,更多相关《2021年辽宁省丹东市全国计算机等级考试C语言程序设计测试卷(含答案).docx(45页珍藏版)》请在课桌文档上搜索。
1、2021年辽宁省丹东市全国计算机等级考试C语言程序设计测试卷(含答案)学校:班级:姓名:考号:一、2.填空题(10题)1 .下面程序main()intij,m,n;i=5;j=o;m=+i;n=j+;printfC,%d,%d,%d,%d,i,j,m,n);)运行后,i,j,m,n的值分别是02 .函数delete(s,i,n)的作用是从字符串s中删除从第i个字符开始的n个字符,请填空。voiddelete(chars,inti,intn)intj,k,Iegth=O;while(slength);-i;户;if(1)k=i+n;if(i+nlength)while(klength)sj+=s
2、k+;sU=,O,)3 .为了列出当前盘当前目录中所有第三个字符为C的文件名的有关信息,应该使用命令【】。4 .有以下程序:#include#includemain()chara=,a,b,c,d,e,f,h,;inti,j;i=sizeof(八)J=Strlen(八);printf(u%d.%d,ji,j);)程序运行后的输出结果是()。5 .数据结构分为逻辑结构和存储结构,循环队列属于结构。6 .若从键盘输入58,则以下程序的输出结果是【main()inta;SCanfr%d”,&A);if(a50)primf%d”,A);if(a40)printf(u%d,jA);if(a30)prin
3、tf(4%d,jA);7 .有以下程序:#includeintsub(intn)retum(n10+n%10);main()intx,y;seanf(%d,&x);y=sub(sub(sub(x);printf(%dn;,y);)若运行时输入:1234,程序的输出结果是【】。8 .在关系模型中,把数据看成是二维表,每一个二维表称为一个【9 .函数VoidfUn(float*sn,intn)的功能是:根据以下公式计算s,计算结果通过形参指针sn传回;n通过形参传入,n的值大于等于Oo请填空。s三Xl2Xi+1voidfun(float*sn,intn)floats=0.0,w,f=-1.0;in
4、ti=0;for(i=0;i=n;i+)f=】*f;w=f7(2*i+l);s+=w;【】=s;10 .诊断和改正程序中错误的工作通常称为【】。二、单选题(10题)11 .(15)以下不合法的用户标识符是()oA)r3j3B)ElseC)6aD)_612 .软件设计包括软件的结构、数据接口和过程设计,其中软件的过程设计是指()A.模块间的关系B.系统结构部件转换成软件的过程描述C.软件层次结构D.软件开发过程:20)有下列程序,其中u表示按无符号整数输出。main()unsignedintX=OXFFFF;/*x的初值为十六进制数/Primfr%un,x);)程序运行后的输出结果是().A)-
5、1B)6553513 .C)32767D)OxFFFF14 .定义int*swap()指的是oA.一个返回整型值的函数swap()B.一个返回指向整型值指针的函swap()C.一个指向函数swap。的指针,函数返回一个整型值D.以上说法均错15 .下列运算符中,运算对象必须是整型的是0。A./B.%=C=D.&16 .以下程序的输出结果是()。unionmyunstructintx,y,z;)u;intk:a;maina.u.x=4;a.u.y=5;a.u.z=6;k=0;printf(%dn,a.u.x);)A.4B.5C.6D.017 .有以下程序:#includemain()(charc
6、h=uvwxyz,*pc;pc=ch;Printf(“cn”,*(pc+5);)程序的运行结果是OA.zB.OC.元素ch5的地址D.字符y的地址18 .在面向对象方法中,不属于“对象”基本特点的是A.一致性B.分类性C.多态性D.标识唯一性19 .一个递归的定义可以用递归过程求解,也可以用非递归过程求解,但单从运行时间来看,通常递归过程比非递归过程()。A.较快B.较慢C.相同D.无法确定20 .有以下函数:intfun(char*x,char*y)intn=0;while(*x=*y)&*x!=0,)Ix+;y+;n+;returnn;函数的功能是()。A.将y所指字符串赋给x所指存储空间
7、B.查找和y所指字符串中是否有,0C.统计X和y所指字符串中最前面连续相同的字符个数D.统计X和y所指字符串中相同的字符个数三、程序设计题(1。题)21.请编写一个函数Proc,它的功能是:求出lm(含m)能被7或11整除的所有整数放在数组a中,通过n返回这些数的个数。例如,若传给m的值为70,则程序输出:7111421222833354244495556636670注意:部分源程序给出如下。请勿改动main函数和其他函数中的任何内容,仅在函数proc的花括号中填人所编写的若干语句。试题程序:#include#include#include#defineN100voidproc(intm,in
8、t*a,int*n)()voidmain(intarrN,n,k;system(CLS);proc(70,arr,&n);for(k=0;ki!include2 1defineN203 voidNONO();4 voidfun(char*a,chars)5 67 )8 main()9 charslNr*s2=nabcdefghijkw;10 fun(si,s2);11 printf(w%snnzsi);12 printf(,s11,s2);13 NONO();1516242526272829voidNONO()*本函数用于打开文件、榆入数据、调用函数、输出数据及关闭文件*/FILE*fp,wf
9、;inti;charsl256rs225;fp=fopen(,in.datwrMrH);wf三fopen(nout.datmwh);for(i=0;idoublefua(mim)voidimi()Imtm4ojbl*ftFILEoutrn(lutm*)canf(H4aSm)(三fn(M)n!Hf(FH(n*fout*fopaoclile.dat.*w)fortn-10n10m-)(pnntf(Mt*(nafwnfcoe(#includedefinestrcpyvoidfun(chars)voidmain()charstrf81JtEILEoutprintf(Enterastringna)get
10、5(5tr)fun(sr)Iprintf(ThestringafterddctednHpusIout(openCouifilc.dat.w)tstrcpy(str.UsST三ES*T#力(un5r)Ifprnt(out.%5.Mr)closc25.M名学生的成绩已在主函数中放入一个带头结点的链表结构中,h指向链表的带头结点。请编写函数proc(),它的功能是:找出学生的最高分,由函数值返回。注意:部分源程序给出如下。请勿改动main()函数和其他函数中的任何内容,仅在函数ProC()的花括号中填入所编写的若干语句。试题程序:v3eVMdio.httIndMdeVUdUhh9defineM8Il
11、trUCtnbtIdoubleMrwiltnrhpcMNnaellimSTRR,doublepmSTRElah)STRECCEI(4oubk)(STREChpqIMi,0h=p*(STREC)aUoc(Mof(STREo)Iwkk(iM)产生8个1RjSI.修分存人女中I三STREC)omUoc-nen-qp*qne三NUIreturnhi/He*RAMIMPdoutht(STRECp.三*hprmfdo!pnff(*-%2.0p三p-fewiI出各分教wlenexi!-NULL)Irintf(nn)void11Mtaror(hat(*maHaH.l(n*.omi26.请编写一个函数ProC(
12、),它的功能是:根据以下公式求7c的值(要求满足精度0.0005,即某项小于0.005时停止迭代)o/2-1+1/3+12/(3*5)123/(357)+1234(3579)+l23n(357(Jn+m程序运行后,如果输入精度0.0005,则程序输出3.140578o注意:部分源程序给出如下。请勿改动main()函数和其他函数中的任何内容,仅在函数ProC()的花括号中填入所编写的若干语句。试题程序:合includeconio.hUinclude7includedoubleproc(doubleep)voidmain(doublemiprintf(nPkascenteraprecision:)
13、scanf(IP&.Irint(nPi=s%lfnproc(s)27 .三个整数a、b、c,由键盘输入,输出其中最大的数。28 .请编写函数PrOC(),其功能是:将Str所指字符串中除下标为偶数、同时ASCII码值为奇数的字符外,其余的字符都删除,串中剩余字符所形成的一个新串放在t所指的数组中。例如,若Str所指字符串中的内容为ABCDEFGI2345,其中字符8的ASCn码值为偶数,所在元素的下标为奇数,因此必须删除;而字符A的ASCil码值为奇数,所在数组中的下标为偶数,因此不应当删除。依次类推,最后t所指的数组中的内容应是ACEG。注意:部分源程序给出如下。请勿改动main()函数和其
14、他函数中的任何内容,仅在函数ProC()的花括号中填入所写的若干语句。试题程序:,adudehinclude*includrHidtOib*includeBtnnFdprorCfMr)cUrvf(00t(100j.ytcm/*C!*)print(*nlvlea*centernnan*H*tr)procltut,Ant)29.使用VC+2010打开考生文件夹下PrOgl中的解决方案。此解决方案的项目中包含一个源程序文件ProgLc。在此程序中,请编写函数fun(),该函数的功能是统计各年龄段的人数。N个年龄通过调用随机函数获得,并放入主函数的age数组中。要求函数把09岁的人数存放在仇0中,把1
15、019岁的人数存放在dl中,把2029岁的人数存放在d2中,依此类推,把100岁(含100岁)以上年龄的人数都存放在d10J中。结果在主函数中输出。注意:部分源程序在文件ProgLC中。请勿改动main。函数和其他函数中的任何内容,仅在函数fun()的花括号中填入你编写的若干语句。试题程序:789;二2!3141516:19202122232425262728293031323334353637IincludedefineN50tdefineM11voidfun(inta,intb)doublernd()(statict29.c三217rm三1024rr0;r三(rt+c)%m;return(
16、double)rm);voidmain()(FILEwf;intageN,irdM;intbN-32,45,I5,12,86,49,97,3,44,52,17,95,63);for(1-0;iN;i)age(i-(int)(115*rnd();/产生一个随机的年龄Itia/printf(Theoriginaldata:nw);for(i-0;iN;i+)printf(i+l)10=0?e4dn”:气4d”,agei);*K出10printf;fun(age,d);for(i三0;i10;i)printf(*%4d-%4d:%4dnRri10ri109,di);printf(Over100:4d
17、n,dl);/*/wf-fopen(,out.dat,ww);fun(b,d);for(i三0;i10;i+)fprintf(wf,n%4d%4d:%4dnH,i10,i*10+9,di);fprintf(wf/K)ver100:%4dw,dl);fclose(wf);30.使用VC+2010打开考生文件夹下ProgI中的解决方案。此解决方案的项目中包含一个源程序文件ProgLc。在此程序中,请编写函数fun(),它的功能是求出能整除X且不是偶数的整数,并将这些整数按从小到大的顺序放在PP所指的数组中,总个数通过形参n返回。如X中的值为30,则有4个数符合要求,它们是1、3、5、15。注意:部
18、分源程序在文件PrOgLC中。请勿改动主函数main()和其他函数中的任何内容,仅在函数fun()的花括号中填入你编写的若干语句。试题程序:MBS1 1include2 1include3 1include4 voidfun(int,intp(,intn)I(s7 8 voidmain()9 10 FILEwf;11 intxraa1000,nri;12 system(wCLSm);13 printf(nPleaseenteranintegernumber:nm);14 scanf(w%dnz&x);15 fun(,aar&n);16 for(i=0;in;i+)17 printf(n%d”,
19、aai);18 printf(t,nw);19 /*found*/20 wf三foen(wout.dat,mwm);21 fun(30,aa,&n);22 for(i=0;in;i+)23 fprintf(wf,%d”,aai);24 fclose(wf);25 /*found*/26 四、2.程序修改题(10题)31 .下列给定程序中,函数fun()的功能是:将m(KmW0)个字符串反着连接起来,组成一个新串,放入pt所指字符串中,例如把3个串DEG,ac,df反着串联起来,结果是dfacDEG。请改正程序中的错误,使它能得出正确的结果。注意:不要改动main。函数,不得增行或者删行,也不得
20、改变程序的结构!试题程序:#include#include#includevoidfun(charstr10,intm,char*pt)intk,q,i,j=0;/*f)und*/for(k=m;k0;k)q=strlen(strlk);j+=q;for(i=0;iq;i+)pti=strki;pt+=q;ptOJ=O;)/*found*/pt=j;)main()intm,h;chars1010,p120;clrscr();printf(,nPleaseenterm:);scanf(,%d,l&m);printf(,nPleaseenter%dstring:n,tm);gets(sO);for
21、(h=0;hm;h+)gets(shj);fun(S,m,p);printf(7nTheresultiS:%sn,p);32 .下列给定程序中,函数fun()的功能是读入一个字符串(长度20),将该字符串中的所有字符按ASCII码降序排序后输出。例如:输入dafhc,则应输出hfdcao请改正程序中的错误,使它能得到正确结果。注意:不要改动main函数,不得增行或删行,敢不得更改程序的结构。试题程序:#include#include*found*/intfun(chart)(chare;inti,j;for(i=0;istrlen(t)-l;i+)for(j=i+l;istrlen(t);j+
22、)if(tlij=0;i)/*found*/d=ci;printf(%c,b.);)printf(nu);34.给定程序MoDll.C中函数fun的功能是:统计字符串中各元音字母(即:A、E、I、0、U)的个数。注意:字母不分大、小写。例如:若输入:THIsisaboot,则输出应该是:k0、2、2、Oo请改正程序中的错误,使它能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!12345678910Iincludevoidfun(char*s,intnum(5)intk,i三5;for(k-0;k-0)numi+;,A,:(i三0;break;*E,:(i-l
23、;break;)!,:i-2;break;*O,:(1*3/break;,U*:(1*4/break;main()charsi(l;intnuml59i;printf(wnPleaseenterastring:);gets(si);fun(si,numl);for(i-0;i5;i)printf(w%dwrnuml(i);printf(wn);35.给定程序MODlI.C中函数fun的功能是:首先把b所指字符串中的字符按逆序存放,然后将a所指字符串中的字符和b所指字符串中的字符,按排列的顺序交叉合并到C所指数组中,过长的剩余字符接在C所指数组的尾部。例如,当a所指字符串中的内容为“abcdef
24、g”,b所指字符串中的内容为“1234”1时,c所指数组中的内容应该为“a4b3e2dlefg;而当a所指字符串中的内容为力234,b所指字符串中的内容为“abedefg”时,c所指数组中的内容应该为“g2f3c4dcba请改正程序中的错误,使它能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!123456!includefincludevoidfun(chara,char*b,char*c)789101112131415intirj;charch;i三0;jstrlen(b)-1;*found*while(ij)(ch-bi;bi-bj;bj-ch;i;j一
25、;while(*a*b)(P*found*IfCa)a;c;a+;16iif(*b)*17;(*cwb;c;b;)1819*c0;202122232425262728main()(charsl100,s2(100,t200;printf(*nEntersistring:w);scanf(h%sm,si);printf(wnEnters2string:w);scanf(w%srs2);fun(si,s2,t);printf(wnTheresultisz%snrt);36.给定程序MODI1.C中函数fun的功能是:交换主函数中两个变量的值。例如:若变量a中的值原为8,b中的值为3。程序运行后a中
26、的值为3,b中的值为8o请改正程序中的错误,使它能计算出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!iIinclude;/f。Und/345 6789!voidfun(intx,Inty)i(intt;/f。Und*/it-x;x-y;ywt;!)10 J H !12 ;13 14 !15 ;main()inta,b;a-8;b-3;fun(&a,&b);printf(*,%dr%dnxa,b);37 .给定程序MODll.C中函数fun的功能是:输出M行M列整数方阵,然后求两条对角线上元素之和,返回此和数。请改正程序中的错误,使它能得出正确的结果。注意:不要
27、改动main函数,不得增行或删行,也不得更改程序的结构!34567891011121314151617181920main ()!include!defineM5*fOUnd*/intfun(intn,intxx)inti,jtSUmN0;printf(wnThe%d%dmatrix:nwrM,M);for(i-0;iM;i+)for(j三0;jM;j)/*foundw*/printf(%fIxxij);printf(wnw);for(i-0;in;i+)sum+-xxiijxxi(n-i-l;return(sum);(intaaMM1,2,3,4,5),(4,3,2,l,0,6,7,8,9,
28、0),9,8,7,6,5,3,4,5,6,7);printf(wnThesumofallelementson2diagnalsis%d.rfun(Mraa);38 .下列给定程序中,函数fun()的功能是:从3个红球,5个白球,6个黑球中任意取出8个作为一组,进行输出。在每组中,可以没有黑球,但必须要有红球和白球。组合数作为函数值返回。正确的组合数应该是15o程序中i的值代表红球数,j的值代表白球数,k的值代表黑球数。请改正程序中的错误,使它能得出正确的结果。注童:不要改动main函数,不得增行或删行,也不得更改程序的姑构。试题程序:#includeintfun()inti,j,k,sum=0
29、;printf(,nTheresult:nn,);/*found*/for(i=0;i=3;i+)for(j=l;j=l&k=6)sum=sum+l;printf(red:%4dwhite:%4dblack:%4dn,i,j,k);)returnsum;)main()intsum;sum=fun();printf(sum=%4dnn”,sum);)39 .给定程序MODI1.C中函数fun的功能是:求出以下分数序列的前n项之和。和值通过函数值返回到main函数。23581321T,2*3*5,T11,例如,若n=5,则应输出:8.391667o请改正程序中的错误,使它能计算出正确的结果。注意:
30、不要改动main函数,不得增行或删行,也不得更改程序的结构!include/*found*w*voidfun(intn)(inta,b,c,k;doubles;678910111213 1415s三0.0;a-2;b三1;for(k-1;k-n;k)/founds-s(Double)a/b;return s;c三a;a三ab;b三c;main()(intn-5;printf(wnThevalueoffunctionis:%lfn*,fun(n);1640.下列给定程序中函数fun()的功能是:从低位开始取出长整型变量s中偶数位上的数,依次构成一个新数放在t中。例如,当s中的数为7654321时
31、,t中的数为642。请改正程序中的错误,使它能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。试题程序:#include#include/*found*/voidfun(longs,longt)longsl=10;s=10;*t=s%10;/*found*/while(s0)s=s100;*t=s%10*sl*t;sl=sl*10;main()longs,t;clrscr();printf(,nPleaseenters:n);scanf(,%lds);fun(s,&t);printf(Theresultis:%ldn,t);)五、程序改错题(2题)41.已知一
32、个数列从0项开始的前3项为0,0,1,以后的各项都是其相邻的前3项之和。下列给定的程序中,函数ProC的功能是:计算并输出该数列前n项的和SUm。n的值通过形参传人。例如,当n=20时,程序的输出结果应为42762.OOOOOOo请修改程序中的错误,使它能得到正确结果。注意:不要改动maiil函数,不得增行或删行,也不得更改程序的结构。试题程序:#include#include#includedoubleproc(intn)(doublesum,s,si,s2,s;intk;sum=l.0;if(n=2)sum=O.0;sO=O.0;sl=O.0;s2=l.0;/*fV)und*for(k=4
33、;kn;k+)(s=s+sl+s2;sum+=S:s=sl;sl=s2;/*found*s2=s;returnsum;)voidmain(intn;system(CLS);printf(InputN=);scanf(%d,&nJ;printf(%fn,proc(n);42 .下列给定程序中,函数PrOCo的功能是:应用递归算法求某数a的平方根。求平方根的迭代公式如下:xl=(x+ax)2例如,3的平方根为L73205Io请修改程序中的错误,使它能得出正确的结果。注意:不要改动main()函数,不得增行或删行,也不得更改程序的结构。试题程序:indvdkinclude*t,/(rjf(proHdoubkadovblea)Idoublealy*l三(aO*B)LO/foundtUUdoublempnnt(rint(*The0*r*rocxo(11tHlfnn,procC)后,m的值为()。44 .使用VC+打开考生文件夹下modil中的解决方案。此解决方案的项目中包含一个源程序文件modil.c。在此程序中,函数fun()的功能是求出S所指字符串中最后一次出现的t所指字符串的地址,并将此地址通过函数值