《2021年辽宁省抚顺市全国计算机等级考试C语言程序设计预测试题(含答案).docx》由会员分享,可在线阅读,更多相关《2021年辽宁省抚顺市全国计算机等级考试C语言程序设计预测试题(含答案).docx(28页珍藏版)》请在课桌文档上搜索。
1、2021年辽宁省抚顺市全国计算机等级考试C语言程序设计预测试题(含答案)学校:班级:姓名:考号:一、2.填空题(10题)1 .若有下列定义和语句:char*sl=,12345,*s2=,1234;printf(%dn,strlen(strcpy(sl,s2);则输出结果为O2 .实体之间的联系可以归结为一对一的联系,一对多的联系与多对多的联系。如果一个学校有许多学生,而一个学生只属于一个学校,则实体集学校与实体集学生之间的联系属于【】的联系。3 .为了列出当前盘当前目录中所有第三个字符为C的文件名的有关信息,应该使用命令【4 .有以下程序:intf(intn)if(n=l)retur1;els
2、ereturnf(-l)+l;)main()inti,j=0;for(i=l;i0)(case1:switch(b0)casel:printf();break;case2:pnntf(!);break;)case0:switch(c=5)caseO:pnntf(*);break;casel:printf(#);break;case2:printf($);break;)default:printf(&);)printf(,n);)6 .下列程序运行时输入1234567t则输出结果是0#includemain()inta=ltb;scanf(%2d%2d,&a,&b);printf(%d%dnta
3、,b);)7 .以下程序的输出结果是【】。#includevoidswap(int*a,int*b)int*t;t=a;a=b;b=t;)main()inti=3,j=5,*p=&i,*q=&j;swap(p,q);printf(%d%dNt*p,*q)8 .某二叉树中度为2的结点有18个,则该二叉树中有】个叶子结点。9 .有以下程序:#includemain()charc;While(C=getChar()!=?)PUtChar(-c);)程序运行时,如果从键盘输入:Y?N?,则输出结果为【】。10 .测试的目的是暴露错误,评价程序的可靠性;而的目的是发现错误的位置并改正错误。二、单选题(1
4、0题)IL下列语句中,()是错误的。A.x=x+1;B.x=x+y;C,x+y=x;D.x=4;(12)以下叙述中正确的是()A) C语言比其他语言高级B) C语言可以不用编译就能被计算机识别执行12 C)C语言以接近英语国家的自然语齐和数学语言作为语言的表达形式D)C语言出现的最晚,具有其他语言的一切优点13 .有以下程序:ftincludemain()inti,j,m=l;for(i=l;i0;j-)if(i*j3)break;m*=i+j;printf(m=%dn”,m);)程序运行后的输出结果是()。A.m=6B.m=2C.m=4D.m=314 .数据结构若采用链式存储结构,要求内存中
5、可用存储单元的地址()。A必须是连续的B.部分地址必须是连续的C一定是不连续的D.连续不连续都可以15 .下面关于数据库系统中叙述正确的是()oA数据库系统减少了数据冗余B.数据库系统避免了一切冗余C数据库系统中数据的一致性是指数据类型的一致D.数据库系统比文件系统能管理更多的数据(36)以下说法正确的是()A)宏定义是C语句,要在行末加分号B)可以使用#undefine提前结束宏名的使用O在进行宏定义时,宏定义不能嵌套D)双引号中出现的宏名也要进行替换17.(7)设有如下关系表:C) TRS则下列操作正确的是()。A) T=RISB) T=RXSD) T=RUS18.下列字符数组初始化语句中
6、,不正确的是()。A.A.charc=,goodmorning,;B.charc20=goodmorning;C.charc=,a,b,c,1,d);D.charc=ffgoodmorning;19 .用邻接矩阵A表示有向图G的存储结构,则有向图G中顶点i的入度为()。A.第i行非0元素的个数之和B.第i列非0元素的个数之和C.第i行O元素的个数之和D.第i列O元素的个数之和20 .以下程序的输出结果是()main()staticchara10=Chinese);printf(%d,strlen(a);A.7B.2C.9D.10三、程序设计题(10题)21 .请编写一个函数,用来删除字符串中的
7、所有空格。例如,输入abcdefgh,则输出为abcdefgh0注意:部分源程序给出如下。请勿改动main()函数和其他函数中的任何内容,仅在函数ProC()的花括号中填入所编写的若干语句。试题程序:tmcl3rnmcludktludrVetkiokbMualtMirvoidprocdmabtrtn(*Inputrmtt)gsputnrr)prmtfn。例如:m=12,n=8时,运行结果为495.000000。注意:部分源程序在文件ProgLC中。请勿改动主函数main()和其他函数中的任何内容,仅在函数fun()的花括号中填入你编写的若干语句。试题程序:1 iinclude2 floatfu
8、n(intmzintn)3 45 16 main()/*主函数/7 (voidNONO();8 printf(,P-%fn”,funQ2,8);9 NONO();io11 voidNONO()12 /本函数用于打开文件、输入数据、调用函数、输出数据及关闭文件*/13 FILE*fp,wf;14 intirm,n;15 floats;16 fp=fopen(win.daf,nrn);17 wf=fopen(nout.dat,w);18 for(i=0;i10;i+)19 fscanf(fprm%d,为d,&n);20 s=fun(m,n);21 fprintf(wfr,%fn,s);复23 fc
9、lose(fp);24 fclose(wf);25 )23 .规定输入的字符串中只包含字母和*号。请编写函数fun,其功能是:除了字符串前导的*号之外,将串中其他*号全部删除。在编写函数时,不得使用C语言提供的字符串函数。例如,字符串中的内容为:*A*BC*DEF*G*,删除后,字符串中的内容应当是:*ABCDEFGo注意:部分源程序在文件PRoGlC中。请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。Mincludeslvoidfun(char)main()ChArs81):voidNONO();Prin4(Enterastring:n);get(
10、);(un()trintf(Thesuingafterdeleted;n)puU(*);NONO():voidNONO()本语数用于打开文件,输入数据,调用函数,帕出数据,关闭文件。/FJLEin,out;i11ti;chars81;in三fopen(in.hl.r*);out=focn(out.dat.hw,t);for(i0ti);fun();fprintf(out.*%tn.)fcloe(in);IHOee(OUI);24 .使用VC+2010打开考生文件夹析下progl中的解决方案。此解决方案的项目中包含一个源程序文件ProgLc。在此程序中,编写程序,实现矩阵(3行、3列)的转置(即
11、行列互换)。例如,若输入下面的矩阵:100200300400500600700800900则程序输出:100400700200500800300600900注意:部分源程序在文件ProgLC中。请勿改动主函数main()和其他函数中的任何内容,仅在函数fun()的花括号中填入你编写的若干语句。试题程序:11 #include2 #include3 #include4 voidfun(intarray33)567 )8 voidmain()9 10 FILE*wf;11 inti,j;12 intarray33=100,200,300,400,500,600,700,800,900;13 SyS
12、teil(“CLS);14 for(i=0;i3;i+)15 for(j=0;j3;j+)16 printf(%7d,arrayij);17 printf(n);18 )19 fun(array);20 printf(,Convertedarray:n);21 for(i=0;i3;i+)22 for(j=0;j3;j+)23 printf(zz%7d”,arrayij);24 printf(z,n);25 )26 /*found*/27 wf=fopen(out.datn,w);28 for(i=0;i3;i+)29 for(j=0;j3;j+)30 fprintf(wf,7dn,array
13、ij);31 fprintf(wf,z*nz,);32 )33 fclose(wf);34 /*found*/35 )25 .使用VC+2010打开考生文件夹下progl中的解决方案。此解决方案的项目中包含一个源程序文件PrOgLc。在此程序中,学生的记录由学号和成绩组成,N名学生的记录已放入主函数的结构体数组S中。请编写函数fun(),其功能是把指定分数范围内的学生记录存放在b所指的数组中,分数范围内的学生人数由函数值返回。如输入的分数是60、69,则应当把分数在60、69的学生记录输出,包含60分和69分的学生记录。主函数中把60放在IOW中,把69放在high中。注意:部分源程序给出如下
14、。请勿改动主函数ITIain()和其他函数中的任何内容,仅在函数fun()的花括号中填入你编写的若干语句。试题程序:#includedefineN16typedefstruct(charnum10;ints;STREC;intfun(STREC*a,STREC*b,int1,inth)voidmain()(STRECsN=GA005w,85,GA003w,76,“GA002”,69,“GA004”,85,“GA001”,96,“GA007”,72,“GA008,64,“GA006”,87,“GA015”,85,“GA013”,94,“GA012”,64,GA014w,91,GA01,90,GA
15、017w,64,GA018w,64,aGA016w,72;STREChN;inti,n,low,high,t;printf(Enter2integernumberlow&high:,);scanf(%d%dw,&low,&high);if(highlow)t=highjhigh=low;low=t;n=fun(s,h,low,high);printf(Thestudent,sdatabetween%d%d:n”,low,high);for(i=0;iprintf(%s%4dnw,hi.num,hi.s);printf(n);26 .请编写函数PrOc,其功能是:将Str所指字符串中除下标为偶数
16、、同时ASCIl码值为奇数的字符外,其余的字符都删除,串中剩余字符所形成的一个新串放在t所指的数组中。例如,若Str所指字符串中的内容为ABCDEFGI2345,其中字符B的ASCII码值为偶数,所在元素的下标为奇数,因此必须删除;而字符A的ASCIl码值为奇数,所在数组中的下标为偶数,因此不应当删除。依此类推,最后t所指的数组中的内容应是ACEG。注意:部分源程序给出如下。请勿改动main函数和其他函数中的任何内容,仅在函数proc的花括号中填人所写的若干语句。试题程序:#include#include#include#includevoidproc(char*str,chart11)voi
17、dmaincharstr100,t100;system(CLS);printf(Pleaseenterstringstr:);scanf(%Ststr);proc(str,t);printf(TheresultiS:%sn1,1t);27 .使用VC+2010打开考生文件夹下progl中的解决方案。此解决方案的项目中包含一个源程序文件progl.c。在此程序中,请编写函数fun(),该函数的功能是求出二维数组周边元素之和,作为函数值返回。二维数组中的值在主函数中赋予。例如,若二维数组中的值为13579299946999813570则函数值为61o注意:部分源程序在文件ProgLC中。请勿改动主
18、函数main()和其他函数中的任何内容,仅在函数fun()的花括号中填入你编写的若干语句。试题程序l#include2#include3#include4#defineM45#defineN56intfun(intamn)78910voidmain()ll12FILE*wtl3intaaMN=l,3,57,9M21919,914,6,9,9,9,8,1.3,51710jl4inti,j,yjl5systemCCLS);16printf(Theoriginaldatais:n);17for(i=0;im;i+)18for(j=0;jn;j+)19printf(,z%6dz,aaij);20pri
19、ntf(n);2122y=fun(aa);23printfCnThesum%dnM,y);24printf(n);25/*/26wf=fopen(out.da;27fprintf(wf,%dz,y);28fclose(wf)29/*/3028 .从键盘上输出10个整数存入一维数组中,按由大到小的顺序输出。29 .使用VC+2010打开考生文件夹下progl中的解决方案。此解决方案的项目中包含一个源程序文件Progl.c.在此程序中,请编写一个函数fun(),该函数的功能是使变量h的值保留两位小数,并对第3位进行四舍五入(规定h的值为正数)。若h的值为1234.567,则函数返回1234.570
20、000;若h的值为1234.564,则函数返回1234.560000。注意:部分源程序在文件ProgLC中。请勿改动主函数main。和其他函数中的任何内容,仅在函数fun()的花括号中填入你编写的若干语句。试题程序:#include!include#includefloatfun(floath)()voidmain()(FILE*wf;floata;system(CLS);printf(,Entera:);scanf(,%f”,&a);printf(Theoriginaldatais:);printf(%fnn,a);printf(nTheresult:%fn,9fun(a);/*/wf=fo
21、pen(out.datrw);fprintf(wfl%f,fun(8.32533);fclose(wf);/*/)30 .n个人的成绩存放在SCore数组中,请编写函数PrOCO,它的功能是将低于平均分的人数作为函数值返回,将低于平均分的分数放在down所指的数组中。例如,当SCore数组中的数据为99,80,40,56,59,84,60,76,100时,函数返回的人数应该是4,down中的数据应为40565960。注意:部分源程序给出如下。请勿改动ITIainO函数和其他函数中的任何内容,仅在函数PrOCO的花括号中填入所编写的若干语句。试题程序:SndudeVMdiIhKHncudeVco
22、cuo.h9ndudcVMdKXh,includenlproc(m*coe(Jmumidowmidmaiacorc9*WM40S4S9ft4.ooy*trm(CUi)n-proc(kcor9downnt(ndownfotheaverageSCorear*)(ori*0tnntf(*%i*.dwnfi)PriiMf()四、2.程序修改题(10题)31 .给定程序Me)Dll.C中函数fun的功能是:统计一个无符号整数中各位数字值为零的个数,通过形参传回主函数;并把该整数中各位上最大的数字值作为函数值返回。例如,若输入无符号整数30800,则数字值为零的个数为3,各位上数字值最大的是8。请改正函数
23、fun中指定部位的错误,使它能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!234591012*found*13zerocount;14return max;!includeintfun(unsignedn,int*zero)intcount0#max=0,t;dot三n%10;found*if(t-0)count+;if(maxt)max三t;n三三n10;while(n);15161718192021main()(unsignedn;intZerO,max;printf(nnlnputn(unsigned):n);scanf(w%dnr&n);max-f
24、un(nr&zero);printf(wnTheresult:max三%dzero三%dn,max,zero);32 .数列中,第一项为3,后一项都比前一项的值增5。下列给定程序中,函数fun()的功能是:计算前n(4WnW50)项的累计和。在累加过程中把那些被4除后余2的当前累加值放入数组中,符合此条件的累加值的个数作为函数值返回主函数里。如,当n的值为20时,该数列为3,8,13,18,23,28,93,98o符合此条件的累加值应为42,126,366,570tIOlOo请改正程序中的错误,使它能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。试题程序:#
25、 include# defineN20intfun(ihtn,int*a)/*fQ(J(j*/intitj,k,sum;sum=0;for(k=3,i=0;in;i+,k+=5)sum=sum+k;/*Qj*/if(sum%4=2)aj+=sum;)/*fQ(J(j*/returnj;)main()intaNld,n,i;printf(Entern(4=n=50):);scanf(%d,&n);d=fun(n,a);printf(nnTheresult:n,);for(i=0;id;i+)printf(,%6d,ai);printf(,n);)33 .下列给定的程序中,函数fun()的功能是:
26、判断字符Ch是否与str所指字符串中的某个字符相同;若相同,则什么也不做,若相同,则将其插在申的最后。请改正程序中的错误,使它能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。试题程序:#include#include#include/*,ound*/voidfun(charstr,charch)while(*str&*str!=ch)str+;/*fQ(J(j*/if(*str=ch)strO=ch;/*fQ(J(j*/strl=O;)main()chars81,c;clrscr();printf(PleaseenteraStrzng:);gets(s);p
27、rintf(,nPleaseenterthecharactertosearch:,);c=getchar();fun(stc);printf(,Theresultis%sn,s);34 .给定程序MODII.C中函数fun的功能是;从低位开始取出长整型变量S中偶数位上的数,依次构成一个新数放在t中。高位仍在高位,低位仍在低位。例如,当S中的数为:7654321时,t中的数为:642。请改正程序中的错误,使它能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!2345678910111213141516171819!include/found*voidfun(lo
28、ngs,longt)longsl-10;s/-10;*t-s%10;/f。Und*while(s0)ss/100;*ts%10*slwt;si三si10;main()longs,t;printf(nnPleaseenters:,);scanf(w%ldr(s);fun(s,t);printf(,Theresultis%ldnrt);35 .下列给定的程序中,函数hn()的功能是:为一个偶数寻找两个素数,这两个素数之和等于该偶数,并将这两个素数通过形参指针传回主函数。请改正函数fun()中的错误,使它能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。试题程序:#
29、include#includevoidfun(inta,it*b,int*c)inti,j,d,y;for(i=3;i=a2ji=i+2)/*fQ(J(j*/y=0;for(j=2j=sqrt(double)i)jj+)if(i%j=0)y=0;if(E)/*fQ(J(j*/d=i-a;for(j-2;j=sqrt(double)d);j)if(d%j=O)y=0;if(y=-1)*b=i;*c=d;)main()inta,btc;doprintf(nlnputa:,);scantC,%d,&a);while(a%2);fun(a,&b,&c);printf(nn%d=%d+%dn,a,b,c
30、);)36 .给定程序中函数fun的功能是:从低位开始取出长整型变量S中偶数位上的数,依次构成一个新数放在t中。高位仍在高位,低位仍在低位。例如,当S中的数为7654321时,t中的数为642。请改正程序中的错误,使它能得到正确结果。注意不要改动main函数,不得增行或删行,也不得更改程序的结构。试题源程序#include/*f(J(j*/voidfun(longs,longt)(longsl=10;s=10;*t=s%10;/*f(J(j*/while(s0)(s=s100;*t=s%10*sl+*t;sl=sl*10;)msi()longs,t;printf(Pleaseenters:);
31、scanf(,%ld,&s);fun(s,&t);printf(,Theresultis:%ldn,t);)37.给定程序MODll.C中函数fun的功能是:应用递归算法求形参a的平方根。求平方根的迭代公式如下:xl三(xO+2x例如,a为2时,平方根值为:1.414214o请改正程序中的错误,使它能得出正确结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。1 ;1include3456789101112131415162 !include/*found*/doublefun(doublea,dounlex)doublexl,y;xl(xax)/2.0;*found*/i
32、f(fabs(xl-xo)000001)y=fun(a,xl);elsey-xl;returny;main()double;printf(Enterx:n);scanf(-%lf-r&x);printf(Thesquarerootof%lfLs%lfnrxrfun(xr1.0);38.给定程序MoDlI.C中函数fun的功能是:计算小于形参k的最大的10个能被13或17整除的自然数之和。k的值由主函数传入,若k的值为500,则函数值为4622。请改正程序中的错误,使程序能输出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!123456 789includeintf
33、un(intk)intm三0zmc三0;while(k三2)&(meIO)*fOUnd/101617if(k%13-O)II(k%17-O)mmk;me+;k一;printf(%dn-rfun(500);)39.下列给定程序中函数fun()的功能是:将长整型数中每一位上为偶数的数依次逆向取出,构成一个新数放在t中。高位在低位,低位在高位。例如当s中的数为25846513时,t中的数为6482o请改正函数fun()中的错误,使它能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。试题程序:#include#includevoidfun(longS,long*t)(
34、intd;longsl=l,i=l;*t=0;while(si0)i=i*10;i=i10;while(s0)(d=si/*fQ(J(j*/if(d%2!=0)(/*fQ(J(j*/t=d*sl+t;sl*=IO;)S=S%i;i=i10;)main()(longS1t;clrscr();printf(PleaseenterS:;scanf(%ld,11&s);fun(St&t);printf(,Theresultis:%ldn,t);)40 .下列给定程序中,fun()函数的功能是:根据形参m,计算下列公式的值。t=-l+l2+l3+l4+lm例如,若输入5,则应输出2.283333。请改正
35、程序中的错误,使它能计算出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。试题程序:#include#includedoublefun(intm)(doublet=1.0;inti;for(i=2;i=m;i+)/*fQ(J(j*/t+=1.0k;/*fQ(J(j*/returni;)main()intm;clrscr();printf(Pleaseenter!integernumber:);scanf(%d,&m);printf(,Theresultis%ln,fun(m);)五、程序改错题(2题)41 .给定程序MoDlIC中,函数fun的功能是:在有n名学生
36、,2门课成绩的结构体数组Std中,计算出第I门课程的平均分,作为函数值返回。例如,主函数中给出了4名学生的数据,则程序运行的结果为:第I门课程的平均分是:76.125000请改正函数fun中指定部位的错误,使它能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。试题程序1includetypedefstruct(charnum8;doublescor2;JSTU;doublefun(STUstd,intn)(inti;found/doublesum;/,found/for(i-0;iStincludeSinclude9includevoidProCcharJUr
37、)/found(whilc(str!s*(i(str=A&str-a&Mrif(sir=三*Z*)str=,Ielseif(str=三z5r*a*elsestr=11/found(Mr)+1voidmain(charMr8Jsyjuem(CIS)prinfnEnterstringwithlengthtputspuls(Mr)t六、操作题(2题)43 .以下程序运行后的输出结果是【Io#includevoidfun(char*s,intP,intk)iti;for(i=pjik-l;i+)si=si+2;main()charsQ=abcdefg;fun(s,3tstrlen(s);puts(s)44 .使用VC+2010打开考生文件夹下PrOgI中的解决方案。此解决方案的项目中包含一个源程序文件ProgLc。在此程序中,已知