《2021年内蒙古自治区兴安盟全国计算机等级考试C语言程序设计预测试题(含答案).docx》由会员分享,可在线阅读,更多相关《2021年内蒙古自治区兴安盟全国计算机等级考试C语言程序设计预测试题(含答案).docx(42页珍藏版)》请在课桌文档上搜索。
1、2021年内蒙古自治区兴安盟全国计算机等级考试C语言程序设计预测试题(含答案)学校:班级:姓名:考号:一、2.填空题(10题)1 .排序是计算机程序设计中的一种重要操作,常见的排序方法有插入排序、【】和选择排序等。2 .下列程序的输出结果【】。#definePR(ar)printf(ar=%d,ar)main()i11tj,a=l,3,5,719j11,13,1),*p=a+5;for(j=3;j;j-)switch(j)case1:case 2 :PR(*p+);break;case 3 :PR(*(-p);3 .若变量a,b已定义为int类型并分别赋值21和55,要求用printf函数以a
2、=21,b=55的形式输出,请写出完整的输出语句行:【】。4 .结构化程序设计方法的主要原则可以概括为自顶向下、逐步求精、和限制使用goto语句。5 .阅读程序:main()charstrl=howdoyoudo,str210J;char*pl=strl,*p2=str2;scanf(%s,p2);Printfe%s”,p2);printf(%sn,1pl);)运行上面的程序,输入字符串HOWDe)YOUDo则程序的输出结果是【6 .以下程序的功能是:利用指针指向三个整型变量,并通过指针运算找出三个数中的最大值,输出到屏幕上。请填空。main()intx,y,z,max,*px,*py,*pz
3、,*pmax;scanf(%d%d%dxyz);PX=&x;Py=&y;pz=&z;pmax=&max;;if(*pmax*py)*pmax=*py;if(*pmax*pz)*pmax=*pz;printf(max=%dn,max);7 .若有下列定义和语句:char*s1=12345,*s2=1234m;printf(%dn,strlen(strcpy(sl,s2);则输出结果为O8 .有以下程序voidf(inty,int*x)y=y+*x;*X=*X+y;main()intx=2,y=4;f(y,&x);printf(%d%dn,x,y);)执行后输出结果是O9 .下面程序main()i
4、ntx,y,m,n;x=5;y=8;m=+x,x;n=y+y+;printf(%d,%d,%d,%d,x,y,m,n);)运行后,X,y,m,n的值是。10 .用以下语句调用库函数malloc,使字符指针St指向具有11个字节的动态存储空间,请填空。St=(Char*)【】;二、单选题(10题)11 .若有定义“inta,b,c;以下程序段的输出结果是()。a=ll;b=3;c=0;Printfr%dn,c=(ab,a%b);A.2B.0C.3D.l12 .下面判断正确的是A.char*a=,china;等价于char*a;*a=china;B.charstr5=,china);等价于Char
5、Str=china”;C.char*s=china;等价于char*s;s=china;D.charc4=nabc,ld4J=,abc;等价于Chare4=d4=abc”;13 .设R是一个2元关系,有3个元组,S是一个3元关系,有3个元组。如T=RXS,则T的元组的个数为OoA.6B.8C.9D.1214 .有下列程序:irclulVt*tCfirIeN4intun(int三CJCNJ)Iirti.y=OforiO;iN;i+)y+=三CiOJaiJCN-for(ia=1;iN-1i)y+=aCOCiJ+CNIJCiJjrx*ttryImain()Iinty.xCNJCNJ=12.3.41,
6、2.1.4.3I.3.4.1.2I.,3,2,1M;y三fun(x)sprintf(,%d,y)i程序执行后的输出结果是0。A.30B.35C.40D.3215 .下列程序的输出结果是()。#includemaininti;for(i=l;i=20)(i*i=100)break;)printf(%dn,i*i;)A.49B.36C.25D.6416 .有以下程序main()inti,s=O,t=l,2,3,4,5,6,7,8,9);for(i=0;i9;i+=2)s+=*(t+i);printf(%dn,s);)程序执行后的输出结果是A.A.45B.20C.25D.3617 .(39)设x=0
7、61.y=016*则Z=Xly的值是(D) 11000000A)OOOOlillB)11H1111C)0011111118 .在结构化方法中,软件功能分解属于下列软件开发中的阶段是A.详细设计B.需求分析C.总体设计D.编程调试19 .若有定义inta=5,b=7;,则表达式a%=(b%2)运算后,a的值为()。A.OB.1C.11D.320 .在关系代数运算中,有5种基本运算,它们是()。A.并(U)、差()、交)、除()和笛卡儿积(X)21 并(U)、差()、交S)、投影()和选择()C并(U)、交S)、投影(兀)、选择()和笛卡儿积(X)D.并(U)、差(一)、投影(兀)、选择()和笛卡
8、儿积(X)三、程序设计题(10题)21.规定输入的字符串中只包含字母和*号。编写函数fun,其功能是:删除字符串中所有的*号。编写函数时,不得使用C语言提供的字符串函数。例如,字符串中的内容为“*A*BC*DEF*G*,删除后,字符串中的内容应当是“ABCDEFG”。注意:部分源程序给出如下。请勿改动maini)函数和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。试题程序:#include<conio.h>#include<stdio.h>voidfun(chara)voidmainchars81;print(Enterastring:n);get
9、s(s):fun(三);printf(Thestringafterdeleted:n);puts(s);)22.M名学生的成绩已在主函数中放入一个带头结点的链表结构中,h指向链表的头结点。请编写函数ProC(),它的功能是:找出学生的最高分,由函数值返回。注意:部分源程序给出如下。请勿改动main()函数和其他函数中的任何内容,仅在函数ProC()的花括号中填入所编写的若干语句。试题程序:*cludrHIilClUdeU(MineM8BtmrtbIuidoubleattrvrtIminrwIyPedr,MtMMUSTBEL*IumM*ProrSTREVlTRRrr*tmHtSTRKCb.qn三
10、0h-p-三三0wklrKMJtatmAma.4FAa7ocp*(F-三三lne三,NULiUmurh./1MatffaMmmIH1.0(*,p-U*r-r,/用品whHp-ars!NUlX)pew9vodmaHIdoubleWM*H870.0.t0.t574.*OMMiSTRErhbscmt(ttt)OtffMh)ana*racm*a)23.某学生的记录由学号、8门课程成绩和平均分组成,学号和8门课程的成绩已在主函数中给出,请编写函数,其功能是:求出该学生的平均分,并放入记录的ave成员中。例如,学生的成绩是:85.5,76,69.5,85,91,72,64.5,87.5,则他的平均分应为7
11、8875o注意:部分源程序给出如下。请勿改动main函数和其他函数中的任何内容,仅在函数fun部位中填入你编写的若干语句。试题程序:#include<stdio.h>#defineN8typedefstruct(charnum10;doublesN:doubleave;STREC;voidfun(STREC*a)()voidmainSTRECs=GA005n,85.5,76,69.5,85,91,72,64.5,87.5;inti;fun(&s);printf(The%ssstudentdata:n,s.num);for(i=0;i<N;i+)printf(%4.If
12、kn,s.si);printf(nknave=%7.3fkn,s.aVe);printf(n);)24 .使用VC+2010打开考生文件夹下progl中的解决方案。此解决方案的项目中包含一个源程序文件progl.co在此程序中,编写函数fun(),其功能是将SS所指字符串中所有下标为奇数的字母转换为大写(若该位置上不是字母,则不转换)。例如,若输入“abc4EFg”,则应输出“aBc4EFg注意:部分源程序给出如下。请勿改动主函数main()和其他函数中的任何内容,仅在函数fun()的花括号中填入你编写的若干语句。试题程序:#include#include#includevoidfun(cha
13、r*ss)()voidmain(void)chartt51;printf(nPleaseenterancharacterstringwithin50characters,);gets(tt);PrintffnnAfterchanging,thestringn%s,tt);fun(tt);printf(4nbecomesn%s,tt);)25 .使用VC+2010打开考生文件夹下PrOgI中的解决方案。此解决方案的项目中包含一个源程序文件Progl.c。在此程序中,请编写一个函数fun(),该函数的功能是使变量h的值保留两位小数,并对第3位进行四舍五入(规定h的值为正数)。若h的值为1234.5
14、67,则函数返回1234.570000;若h的值为1234.564,则函数返回1234.5600000注意:部分源程序在文件prog1.c中。请勿改动主函数main。和其他函数中的任何内容,仅在函数fun()的花括号中填入你编写的若干语句。试题程序:2122include#include#includefloatfun(floath)()voidmain()(FILE*wf;floata;system(nCLSu);printf(Entera:);scanf(,%f“,&a);printf(Theoriginaldatais:);printf(fl%fnnfa);printf(nTheresu
15、lt:%fntl9fun(a);/*/wf=fopen(out.datnrw);fprintf(wf,%ffun(8.32533);fclose(wf);/*/)26 .编写函数fun(),其功能是:实现两个字符串的连接(不要使用库函数strcat),即把p2所指的字符串连接到Pl所指的字符串的后面。例如,分别输入下面两个字符串:FirstStringSecondString”程序输出:FirstStringSeColIdString”注意:部分源程序给出如下。请勿改动main()函数和其他函数中的任何内容,仅在函数fun()的花括号中填入你编写的若干语句。试题程序:include#inclu
16、deVMdio.h7includeVconio.hvoidfun(CharP1charp2)()voidmain()(charsl80s240syMen(*CI)Iprinf(Entersiands211*canf(*%ss.si.s2)PrinIf(si=%nsi)printf(2=%sn.s2)printf(Invokefun(si.s2)n)ftm(tl*B2)printf(Afterinvoking:nprintf(snsi)t27 .假定输入的字符串只包含字母和“#”号,请编写函数fun(),它的功能是:删除字符串中所有的#”号。在编写函数时,不得使用C语言提供的字符串函数。例如,若
17、字符串中的内容为“#w#el#Come#,删除后,字符串中的内容则应当是“welcome”。请勿改动main()函数与其他函数中的任何内容,仅在函数fun()的花括号中填入所编写的若干语句。试题程序:Sincludestdio.h#includedefinestrcpyvoidfun(chars)voidmain()charJnr81:HLEutprintf(Enterastringtna)gei5(Mr)Iun(Mtr)IPritHKThestringafterdeletedn)tputs(tr)outfopen(outfile,dat*w)strcpy(str.HsUT三EStTsJst5
18、rSsl)*(un(5r)Ifprnt(out.s.5tr)closc28 .请编写函数PrOc,其功能是:将Str所指字符串中除下标为偶数、同时ASen码值为奇数的字符外,其余的字符都删除,串中剩余字符所形成的一个新串放在t所指的数组中。例如,若StI所指字符串中的内容为ABCDEFG12345,其中字符B的ASCIl码值为偶数,所在元素的下标为奇数,因此必须删除;而字符A的ASCn码值为奇数,所在数组中的下标为偶数,因此不应当删除。依此类推,最后t所指的数组中的内容应是ACEGo注意:部分源程序给出如下。请勿改动main函数和其他函数中的任何内容,仅在函数ProC的花括号中填人所写的若干语
19、句。试题程序:#include#include#include#includevoidproc(char*str,chart)()voidmain(charstr100,t100;system(,CLS);printf(nPleaseenterstringstr:);scanf(,%S,str);proc(str,t);printf(,nTheresultiS:%sn,1t);29 .请编写函数ProC(),它的功能是计算:s=(I-In(1)-In(2)-In(3)-.-In(m)2s作为函数值返回。在C语言中可调用Iog(n)函数求In(11)oIog函数的引用说明是doublelog(d
20、oublex)o例如,若m的值为10,则proc()函数值为198.9344540注意:部分源程序给出如下。请勿改动main()函数和其他函数中的任何内容,仅在函数PrOC0的花括号中填入所编写的若干语句。试题程序:*M-iudeV*SHKiIMk.ncudMt*ndudrdcMbhprocywtefln(*CU)p1111tf*nproc30 .编程将文件read.txt中的字符读出显示到屏幕上。四、2.程序修改题(10题)31 .已知一个数列从第。项开始的前三项分别为0,0,1,以后的各项都是其相邻的前三项之和。给定程序MODIl.C中函数fun的功能是:计算并输出该数列前n项的平方根之和
21、。n的值通过形参传入。例如,当n=10时,程序的输出结果应为:23.197745o请改正程序中的错误,使程序能输出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!8910111213141516171819202122* * * *found*return sum!include!include*foundfun(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;main
22、()intn;printf(InputN三);scanf(*%dwr&n);printf(n%fnrfun(n);32 .下列给定程序中,函数fun()的功能是:用冒泡法对6个字符串按由小到大的顺序进行排序。请改正程序中的错误,使它能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构.试题程序:#include#include#defineMAXLINE20/*found*/fun(char*pstr6)inti,j;char*p;for(i=0;i5;i+)for(j=i+hj0)(p=*(pstr+i);/*Und*/* (pstr+i)-pstr+j;* (
23、pstr+j)=p;main()i11ti;char*pstr6,str6MAXLINE;clrscr();for(i=0;i6;i+)pstrLi=stri;printf(nEnter6string(lstringateachline):n);for(i=0;i6;i+)scanf(%s,pstri);fun(pstr);printf(Thestringsaftersorting:n);for(i=0;i6;i+)printf(%sn,pstrLi);33.给定程序中函数fun的功能是:从低位开始取出长整型变量s中偶数位上的数,依次构成一个新数放在t中。高位仍在高位,低位仍在低位。例如,当s
24、中的数为:7654321时,t中的数为:642o请改正程序中的错误,使它能得到正确结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。试题源程序#include/*fY)und*/voidfun(longs,longt)(longsl=10;s/=10;*t=s%10;/*fk)und*/while(s0)(s=s100;*t=s%10*sl+*t;SI=SI*10;)mein()(longs,t;printf(nPleaseenters:);SCanf(Id”,&s);fun(s,&t);printf(,Theresultis:%ldnjt);34 .下列给定程序中函数f
25、un()的功能是:计算n!。例如,给n输入5,则输出120.000000。请改正程序中的错误,使它能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。试题程序:#include#includedoublefun(intn)doubleresult=1.0;/*found*/ifn=0return1.0;while(nl&n170)/*Und*/result*=n-returnresult;)main()intn;printf(InputN:,);scanf(%d&n);printf(nn%d!=%lfnn,n,fun(n);)35 .给定程序MODll.C中函数
26、fun的功能是:首先将大写字母转换为对应小写字母;若小写字母为au,则将其转换为其后的第5个字母;若小写字母为vz,使其值减21。转换后的小写字母作为函数值返回。例如,若形参是字母A,则转换为小写字母f若形参是字母W,则转换为小写字母b。请改正函数fun中指定部位的错误,使它能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!2345678910111213141516171819202122!include*includecharfun(charc)if(c-,A,&c-,a,&c三,v,z,)cc-21;returnc;main()(charcl,c2;pr
27、intf(wnEnteraletter(A-Z):w);cl-getchar();if(isupper(cl)(c2-fun(cl);printf(wnnTheletter%c,changeto,%cn,cl,c2);elseprintf(wnEnter(A-Z)!n);36 .下列给定的程序中,函数fun()的功能是:计算并输出k以内最大的10个能被13或17整除的自然数之和。K的值由主函数传入,若k的值为500,则函数的值为4622。请改正程序中的错误,使它能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。试题程序:#include#includeintf
28、un(intk)intm=O,mc=O,j;while(k=2)&(mc1O)(/*found*/if(k%13=0)(k%17=0)m=m+k;mc+;k-;/*found*/returnm;)main()clrscr();printf(%dn,fun(500);)37 .下列给定程序中,函数fun()的功能是:判断一个整数m是否是素数,若是返回1,否则返回0。在main()函数中,若fun()返回1则输出YES1若fun()返回0则输出NO!请改正程序中的错误,使它能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构.试题程序:#include#include
29、intfun(intm)intk=2;while(k=m&(m%k)/*Und*/k+/*Qund*/if(m=k)return1;elsereturnO;main()ihtn;clrscr();printf(nPleaseentern:,);scanf(,%d,(fen);if(fun(n)printf(YESn,f);elseprintf(,NO!n);)38 .下列给定的程序中,函数fun()的功能是:判断字符Ch是否与Str所指字符串中的某个字符相同;若相同,则什么也不做,若相同,则将其插在申的最后。请改正程序中的错误,使它能得出正确的结果。注意:不要改动main函数,不得增行或删行,
30、也不得更改程序的结构。试题程序:#include#include#include/*found*/voidfun(charstr,charch)while(*str&*str!=ch)str+;/*Und*/if(*str=ch)str0=ch;/*Und*/strl=O,;)main()chars81,c;clrscr();printf(nPleaseenteraStrzng:);gets(s);printf(nPleaseenterthecharactertosearch:);c=getchar();fun(s,c);printf(nTheresultis%sn,s);39 .给定程序MO
31、DIl.c中函数fun的功能是;由形参给定n个实数,输出平均值,并统计在平均值以上(含平均值)的实数个数。例如,n=8时,输入:193.199,195.673,195.757,196.051,196.092,196.596,196.579,196.763所得平均值为:195.838745,在平均值以上的实数个数应为:5请改正程序中的错误,使程序能输出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!123456789IO1213!includeintfun(doublex(),intn),*a*found*iintj,c三0rdoublexa-0.0;for(j-0
32、;jn;j)a-x(j)/n;printf(wave-%fnrxa);for(j-0;ja)c;returnc;14;15main()16(doublex100-193.199,195.673r;195.757,196.051,196.092,196.596,196.579,196.763);17;printf(,%dnrfun(x,8);18;140 .下列给定程序中,函数fun()的功能是:用冒泡法对6个字符串按由大到小的顺序进行排序。请改正程序中的错误,使它能得到正确结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。试题程序:#include#include#def
33、ineMAXLINE20voidfun(char*pstr6)(inti,j;char*p;for(i=0;i5;i+)for(j=i+l;j6;j+)/*Und*/if(strcmp(pstr+i),(pstr+j)0)(p=*(pstr+i);*(pstr+i)=*(pstr+j);/*Und*/*(PStr+j)=*p;)main()(inti;char*pstr6,str6JLMAXLINE;clrscr();for(i=0;i6;i+)pstri=stri;printf(nEnter6string(lstringateachline):n);for(i=0;i6;i+)scanf(%
34、su,pstri);fun(pstr);printf(Thestringsaftersorting:n);for(i=0;i6;i+)printf(,%snu,pstri);)五、程序改错题(2题)41.下列给定程序中,函数ProC()的功能是:利用插入排序法对字符串中的字符按从大到小的顺序进行排序。插入法的基本方法是:先对字符串中的头两个元素进行排序,然后把第3个字符插入前2个字符中,插入后前3个字符依然有序,再把第4个字符插入前3个字符中,待排序的字符串已在主函数中赋予。例如,原始字符串为goodluck”,则排序后的字符串为uoolkgdc”。请修改程序中的错误,使它能得到正确结果Q注意
35、:不要改动main()函数,不得增行或删行,也不得更改程序的结构。试题程序:SmcludWinclude0defineM80rodproc-aai,jl-Ii/fou*dwk三0liM(jJ)三G1m(jj-/IouMJ.HmvoidfMn(1charrfM3三aoodl*pnntf(aTbconginaltnnPrarmpnntf(aTbeSlraICafterMctn(Annatr)42.下列给定程序中,函数PtoC的功能是:利用插入排序法对字符串中的字符按从小到大的顺序进行排序。插入法的基本方法是:先对字符串中的头两个元素进行排序,然后把第3个字符插入前两个字符中,插入后前3个字符依然有
36、序;再把第4个字符插入前三个字符中,待排序的字符串已在主函数中赋予。请修改程序中的错误,使它能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。试题程序:#includeinclude#defineM80voidproc(char*arr)inti,j,n;charch;n=strlen(arr):for(i=l;i=o)&(ChVan)(arrj+l=arrj;)arrj+l=ch;)voidmain(charaM=QWERTYUIOPASDFGHJKLMNBVCXZ;printf(Theoriginalstring:%sn,a);proc(a);printf
37、(Thestringaftersortin9:%snn,a);六、操作题(2题)43.请补充函数proc(),其功能是:计算并输出给定10个数的方差。例如,给定的10个数为12.0,9.0,26.0,5.0,6.0,31.0,9.0,3.0,8.0,18.0,输出为s=8.877500o注意:部分源程序给出如下。请勿改动main()函数和其他函数中的任何内容,仅在函数ProC0的横线上填入所编写的若干表达式或语句。试题程序:0nclu4rm0tnciu4rnMprocduulkKtl0:)IMlidoublevg-0.0doubleMmfl*l0.0douleb*三0,0doul4rd(or(
38、i三0l0i)vg=MJtn?Ofoedou14rh.n4,0J*(U.0.9.0M.0S.0.0.31.0.9v03.0.B.0.11.0)Itiprint(nTrOnKItkd(UtAtnakr(i三0iIOi+)pcntf(*H1,l11Mi)*rntf(*ana)tproc(tr)pctf(*lna*)44设有下列程序:#include#includemain()i11ti;chars10,t10;gets(t);for(i=0;i2;i+)gets(s);if(strcmp(t,s)O)strcpy(t,s);)printf(,%sn,t);)程序运行后,从键盘上输入(代表回车符):DEFBADEPQTHRG,则程序的输出结果是。参考答案1 .交换排序交换排序解析:常见的排序方法有插入排序(包括简单插入排序法和希尔排序法等)、交换排序(包括冒泡排序和快速排序法等)和选择排序(包括简单选择排序和堆排序等)。注意:常见的排序方法及其作用机制和区别。2 .ar=