《2021年辽宁省铁岭市全国计算机等级考试C语言程序设计模拟考试(含答案).docx》由会员分享,可在线阅读,更多相关《2021年辽宁省铁岭市全国计算机等级考试C语言程序设计模拟考试(含答案).docx(39页珍藏版)》请在课桌文档上搜索。
1、2021年辽宁省铁岭市全国计算机等级考试C语言程序设计模拟考试(含答案)学校:班级:姓名:考号:一、2.填空题(10题)1 .以下程序段用于构成一个简单的单向链表。请填空。struetSTRUi11tx,y;floatrate;P;)a,b;a.x=0;a.y=0;a.rate=0;a.p=&b;b.x=0;b.y=O;b.rate=O;b.p=NULL;2 .以下程序通过函数指针P调用函数fun,请在填空栏内写出定义变量P的语句。voidfun(int*x,int*y).main()inta=10,b=20;:p=fun;p(&a,&b);3 .在进行模块测试时,要为每个被测试的模块另外设计
2、两类模块:驱动模块和承接模块,其中的作用是将测试数据传送给被测试的模块,并显示被测试模块所产生的结果。4 .以下程序的运行结果是:o#include#includechar*ss(char*s)returnsstrlen(s)2;main()char*p,*str=abcdefgh;p=ss(str)rintf(%sn,p);5 .有下列程序;#includemain()charc;while(c=getchar()!=;)putchar(+C);)程序运行时,如果从键盘输入:A,B,则输出结果为o6 .数据库设计分为以下6个设计阶段:需求分析阶段逻辑设计阶段、物理设计阶段、实施阶段、运行和维
3、护阶段。7 .以下程序的输出结果是()。#includefun()inta=0;a+=3;printf(%d,A);)main()intcc;fbr(cc=l;cc=4;cc+)fun();printf(n);)8 .需求分析的最终结果是产生【】。9 .在面向对象的方法中,描述的是具有相似属性与操作的一组对象。10 .下面程序的功能是将一个字符串Str的内容倒序,请填空。#inelude#includemain()inti,j,;charstr=,1234567,);for(i=0,j=strlen(str);ij;i+,j-)k=stri;stri=strjj;strj=k;printf(%
4、sn,str);二、单选题(10题)(19)若变量已正确定义,有以下程序段:i=0;doprintf(,%d,i)while(i+);PrimfC%dn*i);11 其输出结果是(。A)0,0B)0.1C)1,1D)程序进入无限循环12.有以下程序:mainintnum44=l,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,i,j;for(i=0;i4;i+)for(j=0;ji;j+)printf(%4c,);for(j=;J4;j+)printf(,%4d,numiUD;printf(nn);若要按以下形式输出数组右上半三角1234678111216则在程序下划
5、线处应填入的是()oA.i-1B.iC.i+1D.4i13 .给定下列代码:已知n是一个整数:foo()时间复杂度为0(1),上述代码的时间复杂度是()for(inti三l;In;i*=3)for(intj=i3;ji;j+)(F();)A.O(logn)B.O(n)C.O(n*log(n)D.O(log(n)2)14 .当执行下面的程序时,如果输入ABG则输出结紧是()。#include#includemain()charss10=l,2,3,4,5,三gets(ss);strcat(ss,6789);printf(,%sn,ss);)A.ABC6789B.ABC67C.12345ABC6D
6、.ABC45678915 .若有函数首部“intfun(doublex10,int*nf,则下列针对此函数的函数声明语句中正确的是。A.intfun(double,int);B.intfun(double*,int*);C.intfun(double*x,intn);D.intfun(doublex,int*n);16 .在下面的二维数组定义中,正确的是0。A.inta5;B.inta5;C.inta3=l,3,5,2);D.inta(10);17 .有以下程序:#includemain()intx=0x9;Printfr%cn”JA,+x);)程序运行后的输出结果是OOA.IB.JC.KD.
7、H18 .有以下程序#includemain()inta=1,2,3,4,5,6,7,8,9,10,11,12,*p=a+5,*q=NULL;*q=*(p+5);printf(%d%dn*p,*q);)程序运行后的输出结果是A.运行后报错B.66C.611D.51019 .有以下程序:#includeintadd(inta,intb)return(a+b);main()intk,(*f)(),a=5,b=10;f=add;)则以下函数调用语句错误的是OOA.k=f(a,b);B.k=add(a,b);C.k=(*f)(a,b);D.k=*f(a,b);20 .对于哈希函数H(key)=key%
8、13,被称为同义词的关键字是A.35和41B.23和39C.15和44D.25和51三、程序设计题(10题)21 .有N个学生,每个学生的信息包括学号、性别、姓名、四门课的成绩,从键盘上输入N个学生的信息,要求输出总平均成绩最高的学生信息,包括学号、性别、姓名和平均成绩。22 .使用VC+2010打开考生文件夹下progl中的解决方案。此解决方案的项目中包含一个源程序文件progLcO在此程序中,编写函数fun(),其功能是将SS所指字符串中所有下标为奇数的字母转换为大写(若该位置上不是字母,则不转换)。例如,若输入“abc4EFg”,则应输出“aBc4EFg注意:部分源程序给出如下。请勿改动
9、主函数main()和其他函数中的任何内容,仅在函数fun()的花括号中填入你编写的若干语句。试题程序:#include#include#includevoidfun(char*ss)()voidmain(void)(chartt51;printf(nPleaseenterancharacterstringwithin50charactersn,);gets(tt);PrintfVnnAfterchanging,thestringn%s,tt);fun(tt);printf(4nbecomesn%s,tt);23.使用VC+2010打开考生文件夹下PrOgl中的解决方案。此解决方案的项目中包含一
10、个源程序文件ProgLc。在此程序中,编写函数fun(),它的功能是求小于形参n同时能被3与7整除的所有自然数之和的平方根,并将其作为函数值返回。例如,若n为100O时,程序输出应为s=153.909064注意:部分源程序在文件ProgLC中。请勿改动主函数main()和其他函数中的任何内容,仅在函数fun()的花括号中填入你编写的若干语句。试题程序:1 1include2 1include3 doublefun(intn)4 56 7 main()/主函4t/8 voidNONO();printf(,s三%fnnrfun(1000);10 NONO();H)12 voidNONO()13 /
11、本函数用于打开文件、输入数据、调用函数、榆出数据及关闭文件*/14 FILE*fp,wf;15 inti,n;16 doubles;17 fpfopen(in.datn,rn);18 wf=fopen(out.datw,mww);19 for(i三0;i10;i+)Sfscanf(fpr,%d”,&n);Es=fn(n);22fprintf(wf,n%fn”,s);H24 fclose(fp);25 fclose(wf);)24 .三个整数a、b、c,由键盘输入,输出其中最大的一个数。25 .使用VC+2010打开考生文件夹下progl中的解决方案。此解决方案的项目中包含一个源程序文件prog
12、Lc。在此程序中,请编写函数fun().其功能是找出一维整型数组元素中最大的值及其所在的下标,并通过形参传回。数组元素中的值已在主函数中赋予。主函数中X是数组名,n表示X中的元素个数,max存放最大值,index存放最大值所在元素的下标。注意:部分源程序给出如下。请勿改动主函数main()和其他函数中的任何内容,仅在函数fun()的花括号中填入你编写的若干语句。试题程序:#include#include#includevoidfun(inta,intn,int*max,int*d)()voidmain()(inti,x20,max,index,n=10;srand(unsigned)time(
13、NULL);for(i=0;i=n;i+)(xi=rand()%50;printf(%4d,xi);*输出一个随机数组*/)printf(nnH);fun(xfnf&max,&index);printf(Max=%5d,Index=%4dn,max,index);)26 .使用VC+2010打开考生文件夹下progl中的解决方案。此解决方案的项目中包含一个源程序文件prog1co此程序定义了NxN的二维数组,并在主函数中自动赋值。请编写函数fun(),该函数的功能是将数组下三角元素中的值全部置成0。如a数组中的值为1 972 38456则返回主程序后a数组中的值应为097008000注意:部分
14、源程序给出如下。请勿改动main。函数和其他函数中的任何内容,仅在函数fun()的花括号中填入你编写的若干语句。试题程序:#include#include#include#defineN5voidfun(intaN)()voidmain()(intaNN,i,j;SyStem(CLS);printf(*Thearray*n,);for(i=0;in;i+)p=x/n;i+)/*产生一个随机的55矩阵*/(for(j=0;j(aij=rand()%10;printfC6%4d-aij);Printf(n);fun(a);printf(TheResultn,);for(i=0;in;i+)p=x/
15、n;i+)(for(j=OJprintf%4dVij);printfCn,);27.请编写一个函数VOidProC(Char*str),其功能是:将字符串Str中所有下标为偶数位置上的字母转化为大写(若该位置上不是字母,则不转换)。例如,若输入字符串:“thankyou6verymucFl则应输出:“TbAnKYoU6vErYMuCh注意部分源程序给出如下。请勿改动main0函数和其他函数中的任何内容,仅在函数proc()的花括号中填入所编写的若干语句。试题程序:CiadodeHncluk,includeVhvoidprocBidmn(ctar(51yntm(Cl-S1pntfemter,du
16、rcterMnngwthnSOcrertn)Ig(1t)Ipenff(*nAhrfChAnetngtbrrtngK.tt)tpcocpntf(anbvco*nX*t)28.数组point中存放着m个人的成绩,请编写函数fun().它的功能是:返回高于平均分的人数,并将高于平均分的分数放在high所指的数组中。例如,当Poim数组中的数据为50,60,65,70.75,80.88,90,95时,函数返回的人数应该是5,high中的数据应为75,80,88,90,95o请勿改动main()函数与其他函数中的任何内容,仅在函数fun()的花括号中填入所编写的若干语句。注意:部分源程序给出如下。试题程
17、序:includeVcon沁.h#include#inc!udeinifun(inPOinI.inn.inthiRh)(InainQ(intj.mhigh9tntPOinI9三50.60.65.70.75.80.88.90.95)lm三fun(point.9.high)pnni(nper5nNumj%d.m)*prinfor(j=三0*jtnjj+)(printf(d.highfjj);)rinf(n)J29 .请编写函数PrOC(),其功能是:计算并输出下列多项式值。S=(1+1/2)+(1/3+1/4)+.+(1/(2n-l)+1/2n)例如,若输入10,则输出为S=3.597740on的
18、值要求大于1但不大于1000注意:部分源程序给出如下。请勿改动函数main()和其他函数中的任何内容,仅在函数Pn)C()的花括号中填入所编写的若干语句。试题程序:$nciuckmiMcprocatn)VoMlmam)(IatBdouMeiprmff(a三fa*)30 .编写函数fun,其功能是:求SS所指字符串中指定字符的个数,并返回此值。例如,若输入字符串123412132,输入字符为1,则输出3。注意:部分源程序在文件PROGl.C中。请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。WinclucirMincluclr!r11eM81intfu
19、n(charm,charc)uun()IcharoM.chvoidNONO();printf(nPlrju*ePnlerastring:);p();printf(*nPleaeenterachar:);ch=grtchar();printf(*nThrnumberofthechnr:%dnR.fun(,ch);NoN0():voidNON(X)/.本函数用于打开文件.幅人测试数据,两MfUn函数.僮出数据关闭文件。/inti:FILErf.wfsraraM,bM,ch;rf=fopcn(m.dar)jWf=(bprn(out.dl.wn);for(i=0;iIOi)fec11f(rf,h%r*
20、.a);fwnf(rf.%r.b);ch=b;fprintf(wf,%c=%in*.ch.fun(a,ch);fcloe(if);fclxc(wf);四、2.程序修改题(10题)31 .下列给定的程序中,函数fun()的功能是:计算并输出k以内最大的6个能被7或11整除的自然数之和。K的值由主函数传入,若k的值为500,则函数的值为2925。请改正程序中的错误,使它能得到正确结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。试题程序:#include#includeintfun(intk)(intm=0,mc=0,j;/*found*/while(k=2)&(mc6)(/
21、*found*/if(k%7=0)(k%11=0)/*found*m=k;me+;)k-;)returnm;)main()(clrscr();printf(%dn,1fun(500);32 .下列给定程序中函数fun()的功能是计算ln!的值。例如:给n输入5,则输出0.0083330请改正程序中的错误,使它能得到正确结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。试题程序:#include#include*+*found*/intfun(intn)doubleresult=1.0;if(n=0)return1.0;while(n1&n170)/*found*/resu
22、lt*=n+;result=lresult;returnresult;)main()(intn;printf(lnputN:n);scanf(%dj&n);printf(nl%d!=%Ifn,ln,fun(n);33 .给定程序MOD11.C的功能是:读入一个英文文本行,将其中每个单词的第一个字母改成大写,然后输出此文本行(这里的“单词”是指由空格隔开的字符串)。例如,若输入:Iamastudenttotaketheexamination.1则应输出:IAmAStudentToTakeTheExamination.o请改正程序中的错误,使程序能得出正确的结果。注意:不要改动main函数,不得增
23、行或删行,也不得更改程序的结构!123467891011121314151617181920includeIinclude/*foundw*w*/include*found*/upfst(charp)intk-0;for(;*p;p+)if(k)if(*p,)k-0;)elseif(*p!*)k-1;*p三toupper(*p);)main()charchrstr(81;printf(wXnPleaseenteranEnglishtextline:w);gets(chrstr);printf(,nnBeforechanging:n%swchrstr);upfst(chrstr);printf(
24、wnAfterchanging:n%snwrchrstr);34 .下列给定程序中,fun()函数的功能是:根据形参m,计算下列公式的值。t=l-l2+l3-l4+.+(-l)(m+l)m例如,若输入5,则应输出0.783333。请改正程序中的错误,使它能得到正确结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。试题程序:#include#include/*found*/intfun(intm)(doublet=1.0,j=1.0;inti;/*found*/for(i=l;im;i+)j=-l*j;t+=j/i;returnt;)main()(intm;clrscr()
25、;printf(nPleaseenter1integernumber:,);scanf(%d,1j&m);printf(7nTheresultis%Ifn,fun(m);)35 .下列给定程序中,函数fun()的功能是:根据形参m的值(2加9),在m行m列的二维数组中存放如下所示的数据,由main()函数输出。例如,若输入2,则输出1224输入4,则输出1234246836912481216请改正程序中的错误,使它能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构.试题程序:#include#include#defineM10intaiMMI=0;/*found
26、*/fun(int*a,intm)intj,k;for(j=0;jm;j+)for(k=0;km;k+)/*found*/ajk=k*j;)main()inti,j,n;clrscr();printf(Enternn);scanf(,%d,9&n);fun(a,n);for(i=0;in;i+)for(j=O;jn;j+)printf(l%4dl,aij);printf(n,);36 .下列给定的程序中,函数fun。的功能是:计算并输出k以内最大的10个能被13或17整除的自然数之和。K的值由主函数传入,若k的值为500,则函数的值为4622。请改正程序中的错误,使它能得出正确的结果。注意:不
27、要改动main函数,不得增行或删行,也不得更改程序的结构。试题程序:#include#includeintfun(intk)intm=0,mc=0,j;while(k=2)&(mc10)(/*found*/if(k%13=0)(k%17=0)m=m+k;mc+;k-;/*found*/returnm;)main()clrscr();printf(%dn,fun(500);)37 .下列给定程序是建立一个带头结点的单向链表,并用随机函数为各结点赋值。函数fun()的功能是:将单向链表结点(不包括头结点)数据域为偶数的值累加起来,并作为函数值返回。其累加和通过函数值返回main。函数。例如,若n=
28、5,则应输出8.3916670注意不要改动main函数,不得增行或删行,也不得更改程序的结构。试题源程序#include#includetypedefstructaa(intdata;structaa*next;NODE;intfun(NODE*h)(intsum=0;NODE*P;/*found*/p=h;while(P-next)(if(p-data%2=0)sum+=p-data;/*found*/p=h-next;)returnsum;)NODE*creatlink(intn)(NODE*h,*p,*s,*q;inti,x;h=p=(NODE*)malloc(sizeof(NODE);
29、fbr(i=l;idata=rand()%16;s-next=p-next;p-next=s;p=p-next;)p-next=NULL;returnh;)outlink(NODE*h,FILE*Pf)(NODE*p;p=h-next;fprintf(Pf,nnTHELISTnnHEAD);while(P)(fprintf(Pf,-%du,p-data);p=p-next;)fprintf(pf,n);)outresult(ints,FILE*pf)(fprintf(Pf,nThesumofevennumbers:%dn,s);)main()(NODE*head;inteven;head=cr
30、eatlink(l2);head-data=9000;outlink(head,stdout);even=fun(head);printf(nTheresultn);outresult(even,stdout);38 .给定程序MoDn.C中函数fun的功能是:输出M行M列整数方阵,然后求两条对角线上元素之和,返回此和数。34567891011121314151617181920请改正程序中的错误,使它能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!include!defineM5/*“OUnd*/intfun(intn,intxx)inti,jtSUmN0
31、;printf(wnThe%d%dmatrix:nwrM,M);for(i-0;iM;i+)for(j三0;jM;j)/f。Und/printf(w%fIxx(i)(j);printf(wn);)for(iO;in;i+)sum+-xxi(ixxi(n-i-l;return(sum);)main()(intaaMM1,2,3,4,5),(4,3,2,l,0,6,7,8,9,0),9,8,7,6,5,3,4,5,6,7);printf(wnThesumofallelementson2diagnalsis%d.rfun(Mraa);39 .下列给定程序中,函数fun()的功能是:从n个学生的成绩中
32、统计出低于平均分的学生人数,此人数由函数值返回,平均分存放在形参aver所指的存储单元中。例如输入8名学生的成绩:40 .5607290.59851.58864则低于平均分的学生人数为4(平均分为75.5625)o请改正程序中的错误,使它能得出正确的结果。试题程序:#include#include#defineN20intfun(float*s,ihtn,float*aver)floatave,t=0.0;intCOUnt=O,k,i;for(k=0;kn;k+)/*found*/t=sk;ave=tn;for(i=0;in;i+)if(siave)count+;*found*/*aver=&
33、ave;returncount;)main()floats30,aver;intm,i;clrscr();printf(nPleaseenterm:);scanf(,%d,fem);printf(nPleaseenter%dmarkn,m);fbr(i=O;iprintf(nThenumberofstudents:%dn,fun(s,m,&aver);printf(Ave=%fn,aver);)40 .下列给定程序中函数fun()的功能是:计算n!。例如,给n输入5,则输出120.000000o请改正程序中的错误,使它能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序
34、的结构。试题程序:#include#includedoublefun(intn)doubleresult=1.0;/*found*/ifn=0return1.0;while(nl&n170)/*found*/result*=n-returnresult;)main()intn;printf(InputN:);scanf(,%d&n);printf(,nn%d!=%lfnn,n,fun(n);)五、程序改错题(2题)41 .下列给定程序中,函数proc()的功能是:通过某种方式实现两个变量值的交换,规定不允许增加语句和表达式。例如变量numl中的值原为2,num2中的值原为1,程序运行后,num
35、l中的值为Lnum2中的值为2。请修改程序中的错误,使它能得出正确的结果。注意:不要改动main()函数,不得增行或删行,也不得更改程序的结构。试题程序:9includeSdwdeVConio,h9include0hmtrccundmumvodmaM()amnuml,2.Mrtn2Iiy*tn*CLS)pnnH(*KdHAn*.numlnum2)ouml三protSincludeSinclude5tdio.hSincludeVstring.hvoidproc(charCharl)(intilI51S=Mrkn(n)Ifor(i=0ili+)/(ound*ti三sslfor(i-OsiVshi+
36、)tsli=si2*lj=*)voidmainjproc(st)Iprim1*Thcrouhis:六、操作题(2题)43 .使用VC+打开考生文件夹下modil中的解决方案。此解决方案的项目中包含一个源程序文件modil.c。在此程序中,函数fun()的功能是求出s所指字符串中最后一次出现的t所指字符串的地址,并将此地址通过函数值返回,在主函数中输出从此地址开始的字符串;若未找到,则函数值为NULLo例如,当字符串中的内容为“abedabfabedx”,t中内容为“ab”时,输出结果应是“abedx”。当字符串中的内容为,abedabfabedx”,t中内容为“abd”时,则程序输出未找到信息
37、“Notfound!”。请改正程序中的错误,使它能得出正确的结果。注意:不要改动main()函数,不得增行或删行,也不得更改程序的结构!试题程序:#include#include#include#includechar*fun(char*s,char*t)(char*p,*r,*a;/*found*/a=Null;while(*s)(p=s;r=t;while(*r)*found*/if(r=p)r+;p+;elsebreak;if(*r=,0,)a=s;s+;)returna;)voidmain()(charsl,t100,*p;SyStem(“CLS”);printf(nPleaseenterstrings:);SCanf(%s”,s);printfi4nPleaseentersubstringt:);scanf(u%s,t);p=fu11(s,t);if(P)printf(nTheresultis:%sn,p);elseprintf(nNotfound!n,);44 .请编写一个函数intfun(int*s