2021年内蒙古自治区乌兰察布市全国计算机等级考试C语言程序设计模拟考试(含答案).docx
2021年内蒙古自治区乌兰察布市全国计算机等级考试C语言程序设计模拟考试(含答案)学校:班级:姓名:考号:一、2.填空题(10题)1 .设有以下定义struetssintinfo;struetss*link;x,y,z;且已建立如下图所示链表结构:请写出删除结点y的赋值语句【】。2 .一般来说,算法可以用顺序、选择和三种基本控制结构组合而成。3 .设有下列程序:#include<stdio.h>#include<string.h>main()i11ti;charsIOJ1t10;gets(t);for(i=0;i<2;i+)gets(s);if(strcmp(t,s)<O)strcpy(t,s);)printf(,'%snn,t);)程序运行后,从键盘上输入(<CR>代表回车符):DEF<CR>BADEF<CR>QTHRG<CR>,则程序的输出结果是O4 .下列函数从字符数组s中删除和C一样的字符,请在下面横线处填空。voiddelete(s,C)charsjc;inti,j;for(i=j=0;();i+)if(si!-c!)sU+=si;sU=0't;)5 .下面程序的输出结果是【structaaintx,*y;j*p;inta8=10,20,30,40,50,60,70,80);structaab4=100,&al,200,&a3,10,&a5,20,&a7;main()P=b;printf(%d,*+p->y);printf(,%dn,+(p->x);6 .数据库系统阶段的数据具有较高独立性,数据独立性包括物理独立性和【】两个含义。7 .面向对象的模型中,最基本的概念是对象和8 .以下程序的输出结果是【】。#include<stdio.h>#defineMAX(x,y)(x)>(y)?(x):(y)main()inta=5,b=2,c=3,d=3,t;t=MAX(a+b,c+d)*10;printf("%dn',l);9 .数据库存管理系统常见的灵敏据模型有层次、网状和【】三种。10 .下面程序执行后输出的结果是【】。intm=13;intfun(intx,inty)intm+3;return(x*y-m);)main()inta=7,b,5;pmtf(',%dn,fun(a,B)m);二、单选题(10题)11 .作为信息处理热点技术之一的“多媒体技术”中的媒体,强调的是()oA.存储媒体B.表现媒体C.传输媒体D.感觉媒体12 .软件需求规格说明书的作用不包括()。A.软件设计的依据B.软件可行性研究的依据C.软件验收的依据D.用户与开发人员对软件要做什么的共同理解13 .同一个关系模型的任意两个元组值()。A.可以全相同B.不能全相同C.必须全相同D.以上都不对14 .有以下程序:mainchara-a',b;printf("%c,",+a);printf("%cn",b=a+):)程序运行后的输出结果是()。A.A.b,bB.bjcC.a,bD.ajC15 .设二叉树的中序序列为BCDA,前序序列为ABCD1则后序序列为OoA.CBDAB.DCBAC.BCDAD.ACDB16 .以下定义语句中正确的是A.inta=b=0;B.charA=65+l1b=,b,;C.noata=l,*b=&a,*c=&b;D.doublea=0.0;b=l.l;17 .下列有关数据库的描述,正确的是0A.数据库是一个DBF文件B.数据库是一个关系C.数据库是一个结构化的数据集合D.数据库是一组文件18 .有下列程序:#include<stdk>.h>main()Iinta123456,b;while(a)Ib=a%10;a/=10;switch(b)Idefault:Printf("%d*tb÷÷);case1:break;cae2:printf("%d,'b->÷);breakicase3:printf("%dw,b÷÷);case4:Print£("%d,.b÷÷)cas»e5:Prirltf(*%d*,b÷÷);程序执行后的输出结果是0。A.654321B.65432C.65453452D.65453452119 .有以下程序:#include<stdio.h>voidexch(inttJ)tO=ts;main()intx10=l,2,3,4,5,6,7,8,9,10,i=0;while(i<=4)exch(<fexi);i+;for(i=0;i<5;i+)printf(',%d'xi);printf(n");)程序运行后输出的结果是()oA.246810B.13579C.12345D.67891020 .设有定义“inta=l,b=2,c=3;",以下语句中执行效果与其他3个不同的是()。A.if(a>b)c=a,a=b,b=c;B.if(a>b)c=a,a=b,b=c;C.if(a>b)c=a;a=b;b=c;D.if(a>b)c=a;a=b;;b=c;三、程序设计题(10题)21.请编写一个函数introc(int*s,intt,int*k),用来求出数组的最大元素在数组中的下标并存放在k所指的存储单元中。例如,输入如下整数:876675896101999401980431451777则输出结果为4,999o注意:部分源程序给出如下。请勿改动main()函数和其他函数中的任何内容,仅在函数ProC()的花括号中填入所编写的若干语句。试题程序:&indud<*tdlUhdindudeVC(MMah>includeVQoK>intproe<M*tnttMIt)voadnuun4>mirr0-a7S.57S.8M.1Ol.m.4OI.MO.UI.4Sl711Lky*m<CIJJe)p>c(*rr10&khPErtKdHdnh.B11iL)l22.函数fun的功能是:将s所指字符串中下标为偶数同时ASCII值为奇数的字符删除,S所指串中剩余的字符形成的新串放在t所指的数组中。例如,若S所指字符串中的内容为“ABCDEFG12345”,其中字符C的ASCn码值为奇数,在数组中的下标为偶数,因此必须删除;而字符1的ASCn码值为奇数,在数组中的下标为奇数,因此不应当删除,其他依此类推。最后t所指的数组中的内容应是“BDF12345”。注意:部分源程序给出如下。请勿改动main函数和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。试题程序:#include<stdio-h>#include<string.h>voidfun(char*s,chartD(main().charslOOtt100;Printf(nPleaseenterstringS:");af("%s's);fu11(s.t);PKntf("nl¾eresultis:%sntl,t);23.请编写一个函数VoidPrOC(intm,intk,intxxE3),该函数的功能是:将大于整数m且紧靠m的k个素数存入所指的数组中。例如,若输入206,则应输出232931374143。注意:部分源程序给出如下。请勿改动main()函数和其他函数中的任何内容,仅在函数ProC()的花括号中填入所编写的若干语句。试题程序:$xnciu3e<*tdbKh>9include<<wwo,h>3InClUdeVNdah>Votdroc<nm*mik.miM>vodmam()mitn.n4ff(1000ay*en<*CLS)prmd(nPI<s<ECTtwotateg*ri)ttei*nft"½ti¼d4.&m.&.n)tproc<mnrr)Cor(tna0m<nm>÷)>rtatf(*Xd.a(m)rmd(n*)24.使用VC+2010打开考生文件夹析下progl中的解决方案。此解决方案的项目中包含一个源程序文件ProgLc。在此程序中,编写程序,实现矩阵(3行、3歹U)的转置(即行列互换)。例如,若输入下面的矩阵:100200300400500600700800900则程序输出:100400700200500800300600900注意:部分源程序在文件ProgLC中。请勿改动主函数main。和其他函数中的任何内容,仅在函数fun()的花括号中填入你编写的若干语句。试题程序:11 #include<stdio.h>2 #include<conio.h>3 #include<stdlib.h>4 voidfun(intarray33)5(67 )8 voidmain()910FILE*wf;11 inti,j;12 intarray33=100,200,300),400,500,600,700,800,900);13system(',CLS");14for(i=0;i<3;i+)15forO=0;j<3;j+)16printf(',%7d,',arrayij);17printf(',n);18 )19 fun(array);20 printf("Convertedarray:n',);21 for(i=0;i<3;i+)22forG=0;j<3;j+)23printf(',%7dn,arrayij);24 printf("n");25 )26 /*found*/27wf=fopen("out.datn,"w);28for(i=0;i<3;i+)29for(j=0;j<3;j+)30fprintf(wf,',%7dn,arrayij);31fprintf(wf,n);32 )33 fclose(wf);34 /*QUnd*/35 )25 .请编写函数ProC(),该函数的功能是:将放在字符串数组中的M个字符串(每串的长度不超过N).按顺序合并组成一个新的字符串。例如,若字符串数组中的M个字符串为:ABCDBCDEFGCDEFGHI则合并后的字符串内容应该是:Abcdbcdefgcdefghi0注意:部分源程序给出如下。请勿改动main()函数和其他函数中的任何内容,仅在函数ProC()的花括号中填入所编写的若干语句。试题程序:Ki>lu<kVlUdiCUb>ISHIClude<coftto.h>WdefineM3&finrN20midproc<cararrMjN.cKarb>voidtnaift<)IcUrMrMJLN-(wABC"D'.wBlDEFG,."CDEFGHr).lcharrr(l*<#9StfflffStfSSSllSSprm(<*Themnt*>for<iOi<Mi÷)pvt(*tri>prtfi(<n>prc(*trarr)pno«f("TheANrlnet*>»pnntf(*Hs*.rr)pnmf(aan">«26 .请编写fun()函数,其功能是:计算并输出3m所有素数的平方根之和。例如,若主函数从键盘给m输入50后,则输出为s=63.665791。注意:m的值要大于2但不大于100o部分源程序给出如下。请勿改动main()函数与其他函数中的任何内容,仅在函数fun()的花括号中填入所编写的若干语句。试题程序:indudeVmath.h>VittdudeV.tdao,h>double(un<ints>voidmaia()iatmdoubkMFtl.Eou1prmf<*ntb>M>m!")»»caid<*H<f*&.1.fun<m)Ipnc<<na¼(nn*>>outlopn(aowtGk.df*.w*)(or<n三0m<IOsm÷÷)fprn<f<outaKfB>(un<m-t-M>)kktfe<out>27 .规定输入的字符串中只包含字母和*号。编写函数fun,其功能是:删除字符串中所有的*号。编写函数时,不得使用C语言提供的字符串函数。例如,字符串中的内容为:*A*BC*DEF*G*删除*后字符串中的内容应当是:ABCDEFGo注意:部分源程序在文件PROGl.C中。请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。#inclutlc<fltdio.h>voidfin(char.>un()CharS!81;VoidNON()()srintf(mEnHTsiring:n*);grbi()fun()inntf("Thestringafterdelrtrdi11,*);PUbI(10;N(>NO();voidNONO(>"本函数用于打开文件,辎人数据,调用函数.*出数据,关闭文件./FlIJtin,out;iti;char81;in=oprn("in.<1"."r");mi!三ft>en(*oul.dal,'."wm);fbr(i=O;i<10;i)Ifftcanf(in,"%n"t»);fun(s);Fl(out."%11*,a);I<mc(in);felM(exit);28 .规定输入的字符串中只包含字母和。号。请编写函数fun,其功能是:将字符串尾部的。号全部删除,前面和中间的*号不动。例如,字符串中的内容为:"ABCDEFG”,刷除后.字符串中的内容应当ft:-A.BC.DEFG"在编写函数时,不得使用C语在提供的字符串函数。注意:部分源程序在文件PROGI.Co请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。include<«tdio.h>voidfun(chara)main()chars81;WidNoNO();>rintf("EnteraNring:n")grta();ftm(»);pri11tf("Thetringafterdeleted:na);put»(s);N0N0();voidNONO()×本函数用于打开文件,人数据,网用函数.输出数据,关闭文件。/FILEin.out;inii;chars81;in=fofn("in.dat,"r");out=fopen("out.<hl","w);for(i=O;i<IO;i÷÷)Ifcmf(in.-%*,s);ft():fjprintf(out,"n,);Ifcloe(in);fcloe(out);29 .编写fun()函数,它的功能是:利用以下所示的简单迭代方法求方程cos(y)-y=0的一个实根。yn+l=cos(yn)迭代步骤如下:取yl初值为0.0;(2)y0=yl,把yl的值赋给yO;(3)yl=cos(yO),求出一个新的yl;若y=yl的绝对值小于0.OOOOOl,则执行步骤(5),否则执行步骤(2);所求yl就是方程COS(y)-y=0的一个实根,作为函数值返回。程序将输出结果ReSUIt=0.739085o请勿改动main()函数与其他函数中的任何内容,仅在函数fun()的花括号中填入所编写的若干语句。部分源程序给出如下。试题程序:。nclu<k<r<NMh>4 includeVmith.h>5 nriudrV*tdao.h>11otfun(>void11Mn<)IFILC<nnoa<eo*(nn<)pntMf(aR*Mh*Haco)out,fopn<<Mt(Uc.dat*w*)fpntf(out*HPc<m)(cobc<ou()30 .使用VC+2010打开考生文件夹下progl中的解决方案。此解决方案的项目中包含一个源程序文件ProgLC。在此程序中,请编写函数fun(),该函数的功能是将S所指字符串中ASCll值为偶数的字符删除,字符串中剩余字符形成一个新字符串并将其存放在t所指的数组中。例如,若s所指字符串中的内容为“ABCDEFG123456",其中字符B的ASCn值为偶数,字符2的ASCll值为偶数,都应当删除,其他依此类推。最后t所指的字符串中的内容应是“ACEG135”。注意:部分源程序给出如下。请勿改动主函数main()和其他函数中的任何内容,仅在函数fun()的花括号中填入你编写的若干语句。试题程序:#include<stdlib.h>#include<stdio.h>#include<string.h>#include<conio.h>voidfun(char*s,chart)()voidmain()(chars100,t100;SyStem("CLS");printf(tnPleaseenterstrings:'');scanf(t%s,s);fun(s,t);printf(nTheresultis:%sn,t);)四、2.程序修改题(10题)31 .给定程序MODll.C中函数。fun的功能是:从3个红球,5个白球,6个黑球中任意取出8个作为一组,进行输出。在每组中,可以没有黑球,但必须要有红球和白球。组合数作为函数值返回。正确的组合数应该是15o程序中i的值代表红球数,j的值代表白球数,k的值代表黑球数。请改正函数fun中指定部位的错误,使它能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!123456789!include <stdio.h> int fun()(int i,j,k,sum0; printf(wnThe result :nn");* f。Und 'for (i0; i<3; i+)(for(j-l; j<=5; j÷÷) k8-i-j;fFound*1011121314if(K>-0 && K<-6)(sumsum+l;printf(nred:%4d %4d black:%4dnw, i,j,k);white:1516return sum;171819202122main()intsum;sum三fun();printf("sum三%4dnn,sum);32 .下列给定程序中,函数fun()的功能是:依次取出字符串中所有的数字字符,形成新的字符串,并取代原字符串。请改正函数fun()中的错误,使它能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。试题程序:#include<stdio.h>#include<conio.h>voidfun(char*s)inti,j;for(i=Oj=0;si!='0,;i+)if(si>=,0,si<='9,)/*found*/sj=si;/*Und*/Sj=',0;)main()charitem80;clrscr();printf("nEnterastring:n);gets(item);printf("nnThestringis%sn",item);fun(item);printf("nnThestringofchangingis:%sn",item);33 .给定程序MODn.C中函数fun的功能是:先将S所指字符串中的字符按逆序存放到t所指字符串中,然后把s所指串中的字符按正序连接到t所指串的后面。例如:当s所指的字符串为:“ABCDE”时,则t所指的字符串应为:“EDCBAABCDE”。请改正程序中的错误,使它能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!*include !include void fun4567891011121314151617181920found*<stdio.h><string.h>(char*srchar*t)inti;si三strlen(s);for(i三0;i<sl;i+÷)found*ti-ssl-i;for(i三0;i<sl;i+)t(sl÷i三s(i;t2*sl三0,;main()chars100,t(100;printf("XnPleaseenterstrings:;scanf(w%snrs);EUn(s,t);printf("Theresultis:%snwrt);34 .在主函数中从键盘输入若干个数放入数组中,用。结束输入并放在最后一个元素中。下列给定程序中,函数fun()的功能是计算数组元素中值为负数的平均值(不包括0)。例如:数组中元素的值依次为43,47,-21,53,-8,12,0,则程序的运行结果为-25.333333。请改正程序中的错误,使它能得到正确结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。试题程序:#include<conio.h>#include<stdio.h>doublefun(intx)(doublesum=0.0;intc=0,i=0;/*Und*/while(xi=0)(if(xi<0)(sum=sum+xi;c+;)i+;)/*f)und*/sum=sumc;returnsum;)main()(intx1000;inti=0;clrscr();printf("nPleaseentersomedata(endwith0):”);do(scanf(%dj&xi);while(xi+!=0);printf(%fn,tfun(x);35 .下列给定程序中,函数fun()的作用是,将字符串注中的大写字母都改为对应的小写字母,其他字符不变。例如,若输入“Ab,cD”,则输出ab,cdo请改正函数fun()中的错误,使它能得出正确的结果。注童:不要改动main函数,不得增行或删行,也不得更改程序的结构。试题程序:#include<stdio.h>#include<string.h>#include<conio.h>char*fun(chartt)(inti;for(i=0;tti;i+)/*found*/if(,A,<=tti(tti<='z')tti+=32;return(tt);)main()inti;chartt81;clrscr();printf("nPleaseenterastring:");gets(tt);printf(,nTheresultstringis:n%s,fun(tt);36 .下列给定程序中,函数fun()的功能是绐定n个实数,输出平均值,并统计平均值以上(含平均值)的实数个数。例如,n=8时,输入193.199,195.673,195.757,196.051,196.092,196.596,196.579,196.763,所得平均值为195.838745,在平均值以上的实数个数应为5。请改正程序中的错误,使它能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。试题程序:#include<conio.h>#include<stdio.h>intfun(floatx,intn)/*found*/ihtj,c=0;floatxa=0.0;for(j=0;j<n;.j+)xa+=xjn;printf("ave=%n",xa);for(j=0;j<n;j+)if(xj>=xa)c+;returnc;)main()floatx100=193.199,195.673,195.757,196.051,196.092,196.596,196,579,196.763;clrscr();printf("%dn',fun(x,8);37 .下列给定程序中,函数fun()的功能是:输出M行N列整数方阵,然后求两条对角线上的各元素之和,返回此和数。请改正程序中的错误,使它能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构.试题程序:#include<conio.h>#include<stdio.h>#defineM5ihtfun(intn,intxx)inti,j,sum=0;printf("nThe%dx%dmatrixn",M,M);for(i=0;i<M;i+)for(j=OJ<M;j+)printf("%4f,xxij);/printf(,n);)for(i=0;i<n;i+)sum+=xxii+xxin-i-l;return(sum);)main()intaaMM=1,2,3,4,5,4,3,2,1,0),(6,7,8,9,0,9,8,7,6,5,3,4,5,6,7);clrscr();printf("nThesumofallelementson2diagnalsis%d,fun(M,aa);)38 .给定程序中函数fun的功能是:从低位开始取出长整型变量S中偶数位上的数,依次构成一个新数放在t中。高位仍在高位,低位仍在低位。例如,当S中的数为7654321时,t中的数为642。请改正程序中的错误,使它能得到正确结果。注意不要改动main函数,不得增行或删行,也不得更改程序的结构。试题源程序#include<stdio.h>/*fk)und*/voidfun(longs,longt)(longsl=10;s/=10;*t=s%10;/*fk)und*/while(s<0)(s=s100;*t=s%10*sl+*t;sl=sl*10;)msin()(longs,t;printf("nPleaseenters:n);scanf(%ldu,&s);fun(s,&t);printf("Theresultis:%ldn",t);)39 .给定程序MOD11.C中函数fun的功能是:计算n!。例如,给n输入5,则输出120.000000。请改正程序中的错误,使程序能输出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!*include<stdio.h>doublefun(intn)doubleresult-1.0;found*0 91011121314151617return1.0;while(n>14&n<170)*found*result*en-returnresult;main()(intn;printf("InputN:w);scanf("%d"r&n);printf(wnn%ci!-%lfnn"rnrfun(n);40 .给定程序MoDHC中函数fun的功能是对N名学生的学习成绩,按从高到低的顺序找出前m(mW0)名学生来,并将这些学生数据存放在一个动态分配的连续存储区中,此存储区的首地址作为函数值返回。请改正函数fun中指定部位的错误,使它能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!23456789101112131415161718192021222324252627282930313233343536373839404142434445464748*include<stdio.h>include<stdlib.h>include<string.h>tdefineN10typedefstructss(charnum10;ints;STU;STU*fun(STUa,intm)STUbNr*t;inti,j,k;/*found*/t-(STU*)calloc(sizeof(STU),m)for(i-0;i<N;i÷+)bi三a(i;for(k-0;k<m;k+÷)(for(i-j-0;i<N;i+÷)if(bi.s>bj.s)j-i;found*/t(k)-b(j);b(j.s三0;returnt;Outresult(STUa(,FILE*pf)int1;for(i三0;i<N;1+)fprintf(pf,"No-%sMark-%dn",ai.num,a(i.s);fprintf(pf,"nnw);)main()(STUa(N)-("A01",81),("A02w,89h(A03"r66),("A04",87),"A05",77)f("A06w,90r("A07"r79),("A08"r61,wA09"r80,("A10",71);STU*prder;intirm;printf(*TheOriginaldata*n");Outresult(a,stdout);printf(wnGivethenumberofthestudentswhohavebetterscore:");scanf("%d",im);while(m>10)printf(wnGivethenumberofthestudentswhohavebetterscore:w);scanf("%d",&m);)prder-fun(arm);printf("*THERESULT*n");printf("Thetop:n");for(i三0;i<m;i+)printf("%s%dn",prderi.num,prderi.s);free(prder);五、程序改错题(2题)41 .下列给定程序中,函数fun()的功能是:将Str所指字符串中的字母转换为按字母序列的后续字母(Z转换A,Z转换a),其他字符不变。请修改函数fun()中的错误,得出正确的结果。注意:不要改动main。函数,不得增行或删行,也不得更改程序的结构。试题程序:4tftdude<to,h>,tncludr<ype.h>9include<como.h>void(un<carMr>IfoundWIM”r!''>(W(r>'A'&&r<三*Z*lItr<三*a'&&MYi«tr三三,Z*) mr三*A*elsetf<m三V> tr三* rtr÷三l/found(MF>+÷Iodmm()Huirtr(tjPHtM”nEnraMdngwithkmh<.an">et*(r)prtMf(aTheNrSCtnn*>PUENrIIwn(Mr)Irtf(nnTheConbtn0*)puB<Mr)42.下列给定程序中,函数ProC的功能是计算正整数m各位上数字的平方和。例如,输入498,则输出应该是161。请修改程序中的错误,使它能得到正确结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。试题程序:#include<stdlib.h>#include<stdio.h>#include<conio.h>longproc(10ngm)(II*jpQund*longsum=l;do(sum+=(m%10)*(m%10);m/=10;!I*jund*)while(m)return(sum);voidmainlongn;system(',CLS");printf("Pleaseenteranumber:");scanf(%1d”,&n);printf("n%ldn"