《2021年内蒙古自治区锡林郭勒盟全国计算机等级考试C语言程序设计真题(含答案).docx》由会员分享,可在线阅读,更多相关《2021年内蒙古自治区锡林郭勒盟全国计算机等级考试C语言程序设计真题(含答案).docx(36页珍藏版)》请在课桌文档上搜索。
1、2021年内蒙古自治区锡林郭勒盟全国计算机等级考试C语言程序设计真题(含答案)学校:班级:姓名:考号:一、2.填空题(10题)1 .树中度为零的结点称为O2 .函数fun的功能是计算xn。doublefun(doublex,intn)inti;doubley=l;fbr(i=l;i3;printf(x=%o,x);5 .下列程序的运行结果是#definePOWER(x)(x)*(x)main()inti=l;printf(%d,%d,POWER(i+),i);)6 .数据的逻辑结构有线性结构和两大类。7 .下列程序的输出结果是omain()inta+,b=2,C=3,t=0;ifaB)t=a;
2、a=b;b=t;ifaC)t=a;a=c;c=t;printf(%d,%d,%dln,a,b,C);)8 .以下sum函数的功能是计算下列级数之和。_-X2,X*xnS=l+x+2!3!请给函数中的各变量正确赋初值。doublesum(doublex,intn)inti;doublea,b,s;fbr(i=l;i=n;i+)a=a*x;b=b*i;s=s+ab;returns;)9 .关系模型的数据操纵即是建立在关系上的数据操纵,一般有增加、删除和修改四种操作。10 .数据库系统中实现各种数据管理功能的核心软件是二、单选题(10题)(22) if语句的基本形式为:if(表达式)语句,其中“表达
3、式”()。A)可以是任意合法的表达式B)必须是逻辑点达式H.O必须是逻辑表达式或关系表达式D)必须是关系去达式12 .在黑盒测试方法中,设计测试用例的主要根据是()oA.程序外部功能B.程序内部逻辑C.程序数据结构D.程序流程图13 .有以下程序:nt(un(int,inln)1 sUticintsumn0,i;fbr(i=0;in;i+)SUm三i;returnsum;main()Iim三112,34.51b三6,7,8,9.三0;M=fun(a,5)fun(b.4);Primf(dn;程序执行后的输出结果是()oA.45B.50C.60D.5514 .以下选项中错误的是OoA.printf
4、(%sn,s,);B.printf4%d%cnJs,s);C.printf(%cn,s,-32);D.printfC%cn”,65);15 .当一个函数无返回值时,定义它的函数类型应是0。A.voidB.intC.任意D.无16 .对n个关键字的序列进行快速排序,平均情况下的空间复杂度为A.0(1)B.0(Iogn)C.0(n)D.0(nlogn)17 .对一个关系投影操作以后,新关系的元组个数原来关系的元组个数。A.小于B.小于或等于C.等于D.大于18 .线处应填入().func(intb,intn)WWVWVAAAAAWV*wWWint;for(i=0;i/IndUekiAcludcV*
5、voidprocctarl(31yatm(Cl-S)pnnt(nngH.tt)tproctt)pntf(anbvco*nH-)22.请编写函数PrOC(),它的功能是计算:s=(In(1)4-ln(2)+In(3)4-.+In(m)0.5在C语言中可调用log(n)函数求In(n)o例如,若nl的值为30,则proc()函数值为8.640500o注意:部分源程序给出如下。请勿改动main()函数和其他函数中的任何内容,仅在函数ProC()的花括号中填入所编写的若干语句。试题程序:0in*3vincludrVeomo.hincludeVMddhSSincludrubl*PfoC(mlm)voed
6、ownyxienpntf(,*Hn*proc(30)t23.规定输入的字符申中只包含字垛和号C请编写函数fun.其功能是:将字符串尾部的号全部倒除,前面和中间的号不动。例如,字符串中的内容为JABC*DEF*C”,勒除后.字符申中的内容应当是“ABC*DEF*G在编写函数时,不得使用C语言提供的字符串函数。注蹙:部分源程序惊出如下。请初改动支离4Imain和其他围敕中的任何内客,仅在3敦Rm的花括号中填入你触写的苏干语句。试题程序:*inclndeincludevoidfjn(char*a)void疝M)(dw481kpr附Enleratrinr,);庐MA;fuMXPrintfftTstri
7、ngafterdelctedAn):24. 使用VC+2010打开考生文件夹下progl中的解决方案。此解决方案的项目中包含一个源程序文件Proglc0在此程序中,编写函数fun(),其功能是根据以下公式计算S,并将计算结果作为函数值返回,通过形参传入。s=+-J-+!1+21+2+31+2+3+北例如,若n的值为11时,函数的值为1.833333。注意:部分源程序给出如下。请勿改动主函数main()和其他函数中的任何内容,仅在函数fun()的花括号中填入你编写的若干语句。试题程序:#include#include#include#includefloatfun(intn)()voidmain
8、()(intn;floats;SyStem(CLS);printf(nPleaseenterN:);scanf(%d,11);s=fun(n);PrintfrTheresultis%fn,s);)25.请编写函数proc(),它的功能是计算下列级数和,和值由函数值返回。sum=l-x+x2/2!-x3/31.+(-l*x)n/n!例如,当n=23,X=O.3时,函数值为0.740818o注意:部分源程序给出如下。请勿改动main()函数和其他函数中的任何内容,仅在函数PrOC()的花括号中填人所编写的若干语句。试题程序:#inclv4VMdbhb)#includeadudtdo.h*DcltM
9、kVnMmhdoublepvocvoidmain)ytcm(CLS)pnd*f.pror26 .从键盘上输出10个整数存入一维数组中,按由大到小的顺序输出。27 .请编写函数PrOC(),其功能是:计算并输出下列多项式值。S=(1+1/2)+(1/3+1/4)+.+(1/(2n-l)+1/2n)例如,若输入10,则输出为S=3.597740on的值要求大于1但不大于1000注意:部分源程序给出如下。请勿改动函数main()和其他函数中的任何内容,仅在函数ProC()的花括号中填入所编写的若干语句。试题程序:SnciudcmiMcprocmn)(VOMImaan)iaBi4oubAeprmpro
10、Hn)IpnMf(三%(n*)28 .使用VC+2010打开考生文件夹下progl中的解决方案。此解决方案的项目中包含一个源程序文件PrOgl.c在此程序中,请编写函数fun(),其功能是统计S所指字符串中的数字字符个数,并将其作为函数值返回。例如,s所指字符串中的内容是2def35adh253kjsdf7kj8655x,函数fun()返回值为11注意:部分源程序在文件PrOgLC中。请勿改动主函数main()和其他函数中的任何内容,仅在函数fun()的花括号中填入你编写的若干语句。试题程序:1 tinclude2 voidNONO();3 intfun(chars)4 (56 )7 main
11、()8 char*s-w2def35adh253kjsdf7kj8655x,;9 printf(m%snw,s);10 printf(m%dn,fun(s);HNONO();12 )13 voidNONO()14 /本函数用于打开文件、输入数据、调用函数、输出数据及关闭文件。/15 FILEfp,*wf;16 inti;17 chars256;18 fp=fopen(nin.dat,wrn);wf=fopen(out.datwrmwh);jfor(iO;iwincludeVCWWo.hvoidproHchafrVoedu*ftcwr(Stpnntf(Entert11Mn*Hgea(*fOC)t
12、pnnt(eThr“Effrrdelrr(ijn)pu4*30 .学生记录由学号和成绩组成,N名学生的数据已放入主函数中的结构体数组中,请编写函数fun,其功能是:把分数最低的学生数据放入b所指的数组中,注意:分数最低的学生可能不止一个,函数返回分数最低的学生人数:注意:部分源程序在文件PROGl.C中。请勿改动主函数main和其他函数中的任何内容,仅在函数flm的花括号中填入你编写的若干语句。includeo.hN16typedeftn*ctIcharnum10:ints;ISTREC;inifun(STRECa.STRECb)IIm*in()STREC(N-H-CA05,85JGA03.7
13、6J-CAO2”,691,-GA(H-,851.|-GA0r,91|,|-CA07-.72|.|-GA08,64|.|-GA06,871.-CA015,Wl.rCAOB,91,-CA012-.641,mCA0I4,911,-GAOH-.911.1CA01764J-GA018.64JMCA016-,72;STTlEChN;m,n;FILEoui;n=fun(,h);rintf(Te%dlowestscoren,n);for(i=0;in;i+)printf(%4dn,hi.nu11j,hi.);pr(i0;in;i)fjxintf(out,w%4dn,hi)fee(out)i四、2.程序修改题(
14、10题)31 .下列给定程序中,函数fun的功能是按以下递归公式求函数值。FUm)=iXrt(ll.)2例如:当给n输入5时,函数值为240;当给n输入3时,函数值为60。请改正程序中的错误,使它能得到正确结果。注意;不要改动main函数,不得增行或删行,也不得更改程序的结构。试题程序:#include/*found*+*/fun(intn);(intc;/*found*+*/if(n=l)c=15;elsec=fun(n-l)*2;retum(c);)main()(intn;printf(Entern:);scanf(%d,j&n);printf(Theresult:%dnn,fun(n);
15、)32 .下列给定程序中,函数fun()的功能是;求出两个数的最大公约数,并作为函数值返回。例如,若给numl和IWm2输入49和21,则输出的最大公约数为7:若给numl和num2分别输入27和81,则输出最大公约数为27o请改正函数fun()中的错误,使它能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。试题程序:#includeintfun(inta,intb)i11tr,t;if(ab)/*found*/t=a;b=a;a=t;r=a%b;while(r!=0)a=b;b=r;r=a%b;)/*found*/retum(a);)main()intnum
16、l,num2,a;printf(lnputnumlnum2:1);scanf(,%d%d,&numl,&num2);printf(num1=%dnum2=%dnn,num1,num2);a=fun(numl,num2);printf(Themaximuncommondivisoris%dnn,a);33 .下列给定程序中函数fun()的功能是:从低位开始取出长整型变量s中偶数位上的数,依次构成一个新数放在t中。例如,当s中的数为7654321时,t中的数为642。请改正程序中的错误,使它能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。试题程序:#includ
17、e#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);)34 .下列给定程序中,函数fun()的功能是:对N名学生的学习成绩,按从低到高的顺序找出前m(mR0)名学生来,并将这些学生数据存放在一个动态分配的连续存储区中,此存储区的首地址作为函
18、数值返回。请改正程序中的错误,使它能得到正确结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。试题程序:#include#include#include#include#defineN10typedefstructSScharnum10;ints;STU;STU*fun(STUa,intm)STUbN,*t;inti,j,k;/*found*/*t=calloc(m,sizeof(STU);for(i=0;iN;i+)bi=ai;for(k=0;km;k+)/*found*/for(i=j=0;iN;j+)if(bi.sbj,s)/*found*/tk.s=bj.s;bJ
19、.s=100;returnt;)outresult(STUa,FILE*pf)inti;for(i=0;i10)(printf(tnGivethenumberofthestudentswhohavelowerscoref,);SCanff%d”,&m);)porder=fun(a,m);Primfr*THERESULT*);PrimfrThelow:nn);for(i=0;im;i+)Printff%s%dr,porderij.num,porderi.s);free(porder);)35 .给定程序中,函数fun()的功能是:求输入的两个数中较小的数。例如:输入510,结果为minis5。请
20、改正fun()程序中的错误,使它能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。试题程序、#include#include*found*/intfun(intx,y)intz;z=xy?x:y;return(z);)main()inta,b,c;scanf(%d,%dn,&a,&b);c=fun(a,b);printf(minis%d,c);36 .下列给定程序中,函数fun()的功能是:在字符串str中找出ASCII码值最大的字符,将其放在第一个位置上,并将该字符前的原字符向后顺序移动。例如,调用fun()函数之前给字符串输入ABCDeFGH,调用后字符串
21、中的内容为eABCDFGHo请改正程序中的错误,使它能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。试题程序:#include/*found*/fun(char*p)charmax,*q;inti=0;max=pi;while(pi!=0)if(maxpi)(/*found*/p=q+i;max=pi;)i+;)/*ound*/while(qp)*q=*(q-l);q-;)p0=max;)main()charstr8O;printf(Enterastring:,);gets(str);printf(nTheoriginalstring:”);puts(str
22、);fun(str);printf(nThestringaftermoving:);puts(str);printf(nn);37 .下列给定程序中,函数fun()的功能是:传入一个整数m,计算如下公式的值。t=l2-l3-.-lm例如,若输入5,则应输出-0.283333。请改正程序中的错误,使它能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。试题程序:#include#includedoublefun(intm)(doublet=1.0;inti;for(i=2;i=m;i+)/*found*/t=1.0-li;*found*/)main()intm;c
23、lrscr();printf(nPleaseenter1integernumbers:In);scanf(n%d,&m);printf(nnTheresultis%lfln,fun(m);)38 .给定程序MoDI1.C中函数fun的功能是:将字符串中的字符按逆序输出,但不改变字符串中的内容。例如,若字符串为abed,则应输出:dcba0请改正程序中的错误,使它能计算出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!1!include3 45678910111213142/*found*/fun(charif(*a)fun(a+l);printf(h%c wa);
24、/f。Undmain()(chars10三abcdw;Printf(处理前字符串-sn处理后字符串,s);fun(s);printf(wnH);39.已知一个数列从第。项开始的前三项分别为0,0,1,以后的各项都是其相邻的前三项之和。给定程序MODIl.C中函数fun的功能是:计算并输出该数列前n项的平方根之和。n的值通过形参传入。例如,当n=10时,程序的输出结果应为:23.197745o请改正程序中的错误,使程序能输出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!8910111213141516171819202122!include!include*fou
25、ndfun(intn)doublesum,srsi,s2,s;intk;sum-1.0;if(n2)sum-0.0;s三0.0;si三0.0;s21.0;for(k三4;ken;k+)(s三ssis2;sum-sqrt(s);s三si;si=s2;s2-s;*found*returnsummain()intn;printf(InputN三);scanf(*%dwr&n);printf(n%fnrfun(n);40.给定程序MODlI.C中函数fun的功能是:将S所指字符串中的字母转换为按字母序列的后续字母(但Z转换为A,z转换为a),其他字符不变。请改正函数fun中指定部位的错误,使它能得出正
26、确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!456789101112includeIincludevoidfun(char*s)(/*found*/while(*s!*,)if三,A,&*s三,a,“*s-,z,)* *found*if(*s-,Z)ws-A,;elseif(*s-三,z,)*s三,a,;else*s+三1;13 (*s)+;14 i)15 ;16 main()171819202122chars80;printf(nEnterastringwithlength/foundintfunmtb)(mial2i*0/IouMi(or三S0j+)(2jI
27、Olj-atIOl(I(KOj*/IoundEqnljvoidmain()Iinfa50*inn,fun(apnlf(*theEUitn*)forrt(4dai)nt(n)42 .下列给定程序中,proc()函数的功能是:根据形参m,计算下列公式的值。t=l+l/2+1/3+1/4+1/m例如,若输入10,则应输出2.9289680请修改程序中的错误,使它能计算出正确的结果。注意:不要改动main()函数,不得增行或删行,也不得更改程序的结构。试题程序:三includeVsQdIib.hSincludesincludestdio.hdoublePrOC(inim)(doubleI=i.Osin
28、ii:for(i=2i(inim8ystcm(CLS)iphntf(nPlcscenterintRernumber:)sc11(%d*&m)iprin(nTheresultis%lfn.proc(m)1六、操作题(2题)43 .使用VC+打开考生文件夹下modil中的解决方案。此解决方案的项目中包含一个源程序文件modil.c。在此程序中,函数fun()的功能是求出s所指字符串中最后一次出现的t所指字符串的地址,并将此地址通过函数值返回,在主函数中输出从此地址开始的字符串;若未找到,则函数值为NULLo例如,当字符串中的内容为“abedabfabedx”,t中内容为“ab”时,输出结果应是“a
29、bedx”。当字符串中的内容为“abedabfabedx”,t中内容为“abd”时,则程序输出未找到信息“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)/*UrId*/if(r=p)r+;p+;elsebreak;if(*r=,0,)a=s;s+;)returna;voidmain(
30、)chars100,t100,*p;SyStem(CLS);printf(nPleaseenterstrings:“);SCanf(%s,s);printf(4nPleaseentersubstringt:);scanf(%s,t);p=fun(s,t);if(p)printf(nTheresultis:%sn,9p);elseprintf(nNotfound!n,);3456789101112131415161718192021222344.请编写函数fun,它的功能是:计算并输出n(包括n)以内能被5或9整除的所有自然数的倒数之和。例如,在主函数中从键盘给n输入20后,输出为:s=0.58
31、3333o注意:要求n的值不大于100。部分源程序在文件PRoGLC中。请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。includedoublefun(intn)NONO()(/*请在此函数内打开文件,愉入测试数据.调用fun函数,输出数据,关闭文件./FILE*rfr*wf;intn,1;doubles;rf-fopen(win.datHrwrH);wf-fopen(outdat,w);for(i0;i10;i)(fscanf(rfrSn)Js-fun(n);fprintf(wfrw%lfn,s);fclose(rf);fclos(wf);Ima
32、in()(Intn;doubles;printf(nlnputn:);acanf(%dw,4n);sfun(n);printf(nns-%fnwra);NONO();参考答案1.叶子结点叶子结点解析树中度为零的结点,也就是没有后件的结点,称为叶子结点。2.fun(a4)+fun(b4)-fun(a+b)3);fun(a,4)+fun(b,4)-fun(a+b),3);解析:函数fun的功能是计算X的n次方,a的4次方的调用函数为fun(a,4),b的4次方的调用函数为fun(b,4),(a+b)的3次方的调用函数为fun(a+b),3),计算m=a4+b4-(a+b)3的函数调用语句为:fun
33、(a,4)+fun(b,4)-fu11(a+b),3);3 .floatfloat解析:在此表达式中X是float类型的变量,经过开方所得到的结果仍是Iloat类型,再和2.8进行运算时,应该先将2.8转换成float类型再运算,最后结果仍是float型。4 .x=lIx=Il解析:在对无符号数的右移是高位补0。5.111,1解析:POWER(i+)中先引用i的值1,再将i的值加1,PoWER(i+)=l*1=1。6.非线性结构非线性结构1 .3123,1,2解析:分析程序,第一个if句,a=l,b=2,控制条件ab成立,则交换a、b的值,此时a=2,b=l第二个if语句,a=2,c=3,控制
34、条件ac成立,则交换a、C的值,此时a=3,c=28 .a=l;b=l;s=l;或a=b=s=l;或a=l.b=ls=l或给abs赋1或1.0或l.a=l;b=l;S=I;或a=b=s=l;或a=l.b=l,S=I或给a,b,S赋1或1.0或1.解析:sum函数的功能是求表达式s的级数之和,该函数的大致思路是:在该函数中,定义了一个整型变量i用作循环计数器,定义一个变量a用来表示各个子项的分子,初始为第一个子项的分子,故为1,定义了一个变量b用来表示各个子项大分母,初始为第一个子项的分母,故为1.定义一个变量S存放累加和,初始为第一个子项的值即为1,然后给各个定义的变量初始化,然后通过一个for循环将题目中的数学表达式的各个子项求出来并累加到S中,所以说,在该题的空格处应该填写将a、b和S赋初值的语句,即为a=l;b=l;S=I:(说明:语句的顺序可任意)或a=b=s=l;(说明:变量的顺序可任意)或a=l,b=l,s=l(说明:赋值表达式的顺序可任意)给a,b,s赋1或1.0或1都可以。9 .查询查询10 .数据库管理系统数据库管理系统解