2025年全国计算机等级考试二级c语言上机精选题库(共55套).docx

上传人:夺命阿水 文档编号:1488678 上传时间:2024-06-29 格式:DOCX 页数:64 大小:123.93KB
返回 下载 相关 举报
2025年全国计算机等级考试二级c语言上机精选题库(共55套).docx_第1页
第1页 / 共64页
2025年全国计算机等级考试二级c语言上机精选题库(共55套).docx_第2页
第2页 / 共64页
2025年全国计算机等级考试二级c语言上机精选题库(共55套).docx_第3页
第3页 / 共64页
2025年全国计算机等级考试二级c语言上机精选题库(共55套).docx_第4页
第4页 / 共64页
2025年全国计算机等级考试二级c语言上机精选题库(共55套).docx_第5页
第5页 / 共64页
点击查看更多>>
资源描述

《2025年全国计算机等级考试二级c语言上机精选题库(共55套).docx》由会员分享,可在线阅读,更多相关《2025年全国计算机等级考试二级c语言上机精选题库(共55套).docx(64页珍藏版)》请在课桌文档上搜索。

1、2025年全国计算机等级考试二级c语言上机精选题库(共55套)第1套题一、填空题请补充main函数,该函数的功能是:计算每个学生科目的平均分,并把结果保存在数组bb中。例如,当scoreNM=(78.5,84,83,65,63),88,91.5,89,93,95),72.5,65,56,75,77时,三个学生的平均分为:74.791.369.1o仅在横线上填入所编写的若干表达式或语句,勿改动函数中的其他任何内容。#includc#defineN3#dcfineM5main()(inti.j;sialicIloalscorcNMJ=78.5,84,83,65,63J,行include*found

2、*s*/fun(intm)(doubley=0.d;inti;*Uund*/for(i=l(X).i=ni+=100)(d=(double)i*(double)i;y+=1.0d;)return(y);)main()(intn=2000;printf(nTheresultis%IAn,fun(n);)三、编程题请编写函数fun,该函数的功能是:统计个年龄段的人数。N个年龄通过调用随机函数获得,并放在主函数的age数组中:要求函main()intageN,i,dM;FI1.E*out;for(i=0;iN;i+)agei=(int)(l15*rnd();printf(Tleoriginaldat

3、a:n);for(i=0;iN;i+)printf(i+l)%0=07%4dnf,%4d,ageli);printf(nn);fun(age,d);out=fopen(out.dat,w);for(i=0;i=50&ali=60&ai=70&a|i=80&ali=90&ai)=99)b9+=l;elseb101+=1;)第2套:填空题请补充main函数,该函数的功能是:从键盘输入一组字符串,以*结束输入,并显示出这个字符串。例如,输入abcdef*,结果显示abcdef。仅在横线上添入所编写的若干表达式或语句,勿改动函数中的其他任何内容。tfincludedefineN80main()(int

4、i=-1,j=0:charstrN;printf(z,nInputastringn);doprintf(Thelowest:%s,%dn.m.num.m.s);第二题:下列给定程序中,函数fun的功能是:将字符串P中的所有字符复制到字符串b中,要求每复制三个字符之后插入一个空格。例如,在调用fu11函数之前给字符串a输入Abcdefghijk,调用函数之后,字符串之后,字符串b中的内容则为ABCDEFGHIJK。请改正程序中的错误,使它能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!#includcvoidfun(char*p,char*b)(inti.k=

5、0:while(*p)(/*砧Und*/i=0;*tbund*/while(i3&*)(bkj=*p;k+;P+;i+;/才木车次*牟*Uund*木本木本率*/if(*p)blk+l)bk=30;)main()(chara80.b80;printf(Enterastring:,);gets(八);printf(Theoriginalsiring:);puts(八);fun(a,b);printf(nThestringafterinsertspace:);uts(b);printf(nn);)第三题:请编写一个函数fun,它的功能是:计算并输出给定整数n的所有因子(不包括1与自身)之和。规定n的

6、值不大于1000。例如,若主函数从键盘给n输入的值为856,则输出为sum=763o请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。#includcintfun(intn)main()(intn,sum;FI1.E*out;printf(Inputn:);scanf(ln);sum=fun(n);Prinlf(sum=%dn,sum);out=fopen(out.dat,w);fprintf(out,%dn,fun(123);frintf(out,%dn,fun(456);fprintf(out,%dn,fun(789);fpinlf(ot.%dn,

7、fun(147);fprintf(out,%d,fun(258);fclose(out);intfun(intn)(ints=0.i;for(i=2;i=n-1;i+)if(n%i=0)s+=i;returns;chars100,l100,Msg=PleaseCnlcrstringS:;FI1.E*out;printf(Msg);scanf(%s.s);fun(s,t);printf(nTheresultis:%sn,t);out=fopen(out.dat,w);fun(Msg.t);fprintf(out,%s,t);Iclose(out);)答案:第一题:第1处填空strli!=喊!=s

8、trlij第2处填空i+i或i+=l或i=i+l第二题:第I处:C=C-32;应改为c=c+32;第2处:c=c-5;应改为c=c+5;第三题:voidfun(char*s,chart)(intI,j=0,n;n=strlen(三);for(i=OJnj+)if(si%2=0)(ljl=si;j+;)tj=O第5套填空题请补充main函数,该函数的功能是:输出一个N*N矩阵,要求非周边元素赋值0,周边元素赋值1。仅在横线上填入所编写的若干表达式或语句,勿改动函数中的其他内容。/*RJUnd*/Sl=sl*100;)main()(longs,i;printf(nPleaseenters:);sc

9、anf(%ld,&s);fun(s,&t);rintf(Theresultis:%ldn,t);编程题清编写函数fun,其功能是:将两个两位数的正整数a、b合并形成一个整数放在C中。合并的方式是:将a数的十位和个位数依次放在c数的百位和个位上,b数的十位和个位数依次放在C数的十位和千位上。例如,当a=4如b=I2,调用该函数后,c=24150请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。#include#includevoidfun(inta,in(b,long*c)main()(inta.b:longc;FI1.E*out;printf(Inpu

10、ta,b;);scanf(%d%d,&a,&b);fun(a.b,&c);printf(Theresultis:%ldn,c);out=fopen(out.dat,w);for(a=20;a50;a+=3)fun(a,l()9-a.&c);frintf(out,%ldn,c);printf(n=%dn,n);3;main()printf(,%fn,zfun(50);第1处填空:=第2处填空:n+或n+=l或n=n+l第3处填空:returnS或return(三)改错题下列给定程序中,函数fun的功能是:根据整型参m的值,计算如下公式的值。例如,若m中的值为5,则应输出:0.536389请改正程

11、序中的错误,使程序能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!试题程序:#include#includedoublefun(intm)doubley=1.0;inti;*found*/for(i=2;im;i+)/*,*found*/y-=1/(i*i);return(y);main()intn=5;printf(11nTheresultis%lfnzfun(n);第I处:for(i=2:im:i+)应改为for(i=2;i=m;j+)第2处:y-=l(i*i);应改为y-=1.0(i*i)编程题请编写一个函数voidlun(chara,charb11J

12、ntn),其功能是:删除一j+;)bj=O;1第7套填空题函数fun的功能是:统计长整数n的各个位上出现数字1,2,3的次数,并通过外部(全局)变量cl,c2,c3返回主函数。例如,当=123114350时,结果应该为:cl=3,c2=l,c3=2.注意:部分源程序给出如下。请勿改动主函数main和其他函数中的任何内容,仅在fun函数的横线上填入所编写的若干表达式或语句。试题程序如下:Sincludeintcl,c2,c3;voidfun(longn)cl=c2=c3=0;while(n)switch(1)(case 1:cl+;2;case 2:c2+;3;case 3:c3+;n/=10;

13、main()longn=1231143501.;fun(n);printf(11nTheresult:n);for(i=0;im;i+)printf(%dz,ai);printf(,n);)第I处:p=j应改为p=j;第2处:p=i应改为p=j;编程题请编写一个函数inifun(int*s,inll,inl*k),用来求出数组的最大元素在数组中的卜标并存放在k所指的存储单位中。例如,输入如下整数:876675896101301401980431451777则输出结果为:6,980。注意:部分源程序给出如下。请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语

14、句。试题程序:#include#includevoidfun(intics,intt,int*k)main()inta10=(876,675,896z101,301,401z980,431,451,777,k;FI1.E*out;fun(a,10,&k);printf(,%dz%dn,zk,ak);out=foen(out.datzw);fprintf(out,%dn%d,k,ak);fclose(out);答案是:voidfun(int*s,intt.int*k)intI,max;nax=sf;for(i=0;imax)max=si;*k=I:)填空题请补充main函数,该函数的功能是:从键

15、盘输入一组整数,使用条件表达式找出最大的整数。当输入的整数为。时结束。例如,输入123540时,最大的数为5。请勿改动主函数main和其他函数中的任何内容,仅在fun函数的横线上填入所编写的若干表达式或语句。试题程序:带include#include#defineN100main()intnumN;inti-1;intmax=0;printf(,nlnputintegernumber:n);do(i+;printf(num%d=,zi);scanf(,%d,1);max=2numi:max;while(3);printf(,max=%dn,zmax);)第1处填空:&numi或num+i第2处

16、填空:maxmax?第3处填空:numi!=0或0!=numi改错题for(i=2;i=n;i+)(t=t+i;s=s+lt;)returns;填空题给定程序的功能是分别统计字符串中大写字母和小写字母的个数。例如,给字符串SS输入:AaaaBBb123CcCCCCd,则输出结果应为:upper=5.lower=9=请勿改动主函数main和其他函数中的任何内容,仅在fun函数的横线上填入所编写的若干表达式或语句。试题程序:#:1.nCIUdevoidfun(char*s,int*a,int*b)while(*s)if(*s=,A,&*s=,a,&*sn.P=加n!(rn-n)!例如:m=I2,n

17、=8时,运行结果为495.00注意:部分源程序给出如下。请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。试题程序:!include#includefloatfun(intm,intn)main()(FI1.E*out;printf(P=%fn,fun(12,8);out=fopen(out.dat,w);fprintf(out,%f,fun(12z6);fclose(out);答案是:floatfn(intn.intn)(floatp.t=1.0;inti;for(i=1j=mj+)t=t*i;P=tfor(t=1.0,i=l;i=n;i+)中。在此

18、处,要求tl和t2所指字符串的长度相同。例如,当S所指字符串的内容为abcdabfab,tl所指子串中的内容为ab,t2所指子串中的内容为99时,结果,在W所指的数组中的内容为99cd99290请改正程序中的错误,使程序能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!试题程序:卷include#include#include*found*/voidfun(char*s,*tl,*t2z*w)inti;char*p,*r,*astrcpy(v,s);while(*w)P=w;r=tl;/*found*while(r)if(*r=*p)(r+;P+;else(b

19、reak;if(*r=,0,)(a=w;r=t2;while(*r)(*a=*r;a+;r+;)w+=strlen(t2);试题程序:!include#:1.neIUdeincldeintfun(char*p)intn;/*found*/n=*p-,o,;P+;/*found*/while(*p!=0)(n=n*7*p-*o;p+;returnn;)main()chars6;inti;intn;printf(Enterastring(octaldigits):,);gets(三);if(strlen(三)5)(printf(Errorxstringtoolonger!nn);exit(O);)

20、for(i=0;si;i+)if(si7)(printf(Error:cnotisoctaldigits!nn11,si);exit(0);printf(Theoriginalstring:);puts(三);n=fun(三);printf(n%sisConVeredtointegenumber:%dnn,S/n);第1处:n=*p-;应改为n=*p-(;第2处:n=n*7+*p,o;应改为n=n*8+*p-0,;编程题卜.列程序定义了NXN的而维数组,并在主函数中自动赋值。诗编写函数fun(intaN),该函数的功能是:使数组左卜.半三角元素的值会全部置成0。例如:a数组中的值为097008

21、000197938a=,则返回主程序后a数组中的值应为456注意:部分源程序给出如下。请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。试题程序:#include#:1.nCIUde#include#defineN5voidfun(intaN)main()(intaNN,i,j;FI1.E*out;printf(,*Thearray*n);for(i=0;iN;i+)for(j=0;jN;j+)(aij=rand()%10;printf(%4d,aij);printf(,n);)fun(八);printf(THERESU1.Tn);for(i=0;iN

22、;i+)P=s;r=t;while(*r)/*found*if(r=p)r+;P+;else(break;if(*r=,0,)a=s;s+;)returna;)main()(chars100,t100,*p;printfnpleaseenterstrings:);scanf(s,zs);printf(npleaseentersubstringt:);scanf(s,t);P=fun(s,t);if(P)printf(,ntheresultis:%sn,fp);elseprintf(nnotfound1n);)第1处:a=NU1.1.;应改为a=NU1.1.;第2处:if(r=p)应改为if(*

23、r=*p)编程题下列程序定义了NXN的而维数组,并在主函数中自动赋值。请编写函数fun,函数的功能是:求出数组周边元素的平均值并作为函数值返回给主函数中的s则返回主程序后S的值应为3.375.注意:部分源程序给出如下。请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。试题程序:#include#include#include#defineN5doublefun(intwN)main()(intaNN=0,l,2,7,9,l,9,7,4,5,2,3,8,3,l,4,5,6,8,2,5,9zl,4zl;inti,j;FI1.E*out;doubles;pr

24、intf(,*Thearray*n);for(i=0;iN;i+)(for(j=0;jN;j+)(printf(%4d,aij);printf(,n);s=fun(八);printf(,*THERESU1.T*n);printf(Thesumis%1fn,s);out=fopen(,out.dat,w);fprintf(out,%lf,zs);fclose(out);答案是:t+=1.0/k;kfourid*iic.main()intm;printf(npleaseenter1integernumbers:n);scanf(,%dz&m);printf(nntheresultis%lfn,fu

25、n(m);第处:t+=1.0k;应改为t+=1.0i;第2处:应填returnt;编程凫I请编写一个函数voidfun(intttMN),tt提向一个M行N列的二维数组,求出二维数组每列中最小元素,并依次放入PP所指的一维数组中。二维数组中的数已在主函数中赋予。注意:部分源程序给出如下。请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。试题程序:#:1.nClUde#include#defineM3#defineN4voidfun(intttMNzintppN)main()inttMN=22,45,56,30),(19,33z45,38,20,22t6

26、6z40);intpN,i,jzk;FI1.E*out;printf(Theoriginaldatais:n,);for(i=0;iM;i+)for(j=0;jN;j+)returns;第16套填空题请补充fun函数,该函数的功能是:判断一个年份是否为闰年.例如,1900年不是闰年,2004是闰年.注意:部分源程序给出如下请勿改动主函数main和其他函数中的任何内容,仅在fun函数的横线上填如所编写的若干表达式或语句。试题程序:ffinclude#includeintfun(intn)intflag=0;if(n%4=0)if(1)flag=1;if(2)flag=1;return3;main

27、()intyear;printf(,Inpttheyear:);scanf(%d,&year);if(fun(year)printf(%disaleapyear.n,zyear);elseprintf(,%disnotaleapyear.n,year);J第1处填空:n%100!=0或0!=n%100第2处填空:N400=0或!(n%400)或0=n%400第3处填空:Dag改借题下列给定程序中的函数Creatlink的功能是:创建带头结点的单向链表,并为各结点数据域赋0到M-I的值。main()NODE*head;head=Creatlink(8z22);outlink(head);)第第第

28、1 处:p-ncxt=NU1.1.;应改为p=s;2 处:s-daa=rand()%m;应改为s-daa=rand()%(m-1)3 处:relump;应改为retumh;编程题清编写一个函数门OatfUn(doubleh),函数的功能是对变量h中的值保留2位小数,并对第三位进行四舍五入(规定h中的值为正数)例如:若h值为8.32433,则函数返回8.32,若h值为8.32533,则函数返回8.33#includeincldefloatfun(floath)main()floata;FI1.E*out;rintf(Entera:);SCanf(,%f,&a);printf(Theorigina

29、ldatais:);printf(%fnn,za);printf(Theresult:fn,fun(八));out=fopen(out.dat,w);fprintf(out,%fzfun(3.141593);fclose(out);答案是:for(i=0;i6;i+)printf(,%d,bi);printf(,n);)第1处填空:n第2处填空:else第3处填空:a.b改错题卜.列给定程序中,函数FUN的功能是:计算并输出K以内最大的10个能被13或17整除的自然数之和。K的值由主函数传入,若K的值为500,则函数值为4622。清改正程序中的错误或在横线处填上适当的内容并把横线删除,使它能得

30、出正确结果。注意:不要改动MAIN函数,不得增行或删行,也不要更改程序的结构!试题程序:#includeincldeintfun(intk)intm=0zme=0;while(k=2)&(mc10)(*found*/if(k%13=0)II(k17=0)(m=m+k;me+;k;returnm;*found*/IicOmain()printf(,%dnzfn(500);第1处:if(k%13=0)(k%17=0)Z7if(k%13=0)(k%17=0)main()inta,b;printf(Enterazb:,);scanf(%d%d,&a,&b);fun(&a,&b);printf(a=%d

31、b=%dn,fa,b);第1处:voidfun(inta,intb)应改为voidfun(int*a.int*b)第2处:t=b:b=a:a=t;应改为t=*b;*b=*a;*a=t;编程题编写程序,实现矩阵(3行列)的转置(即行列互换)例如,输入如下的矩阵:100200300400500600700800900则程序输出:100400700200500800300600900注意:部分源程序给出如Ko请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。试题程序:Finclude#includevoidfun(intarray33)main()(inti

32、rj;intarray33=(100z200z300z(400,500,600z(700,800,900);FI1.E*out;for(i=0;i3;i+)for(j=0;j3;j+)printf(%7ci,zarrayij);printf(,n);fun(array);printf(Convertedarray:n);out=fopen(out.datz,w);for(i=0;i3;i+)(for(j=0;j3;j+)(printf(%7dn,arrayij);fprintf(out,%7dzarrayij);)printf(n);fprintf(out,n);fclose(out);)答案

33、是:voidfun(inarray(33)(inti,j.temp:for(i=0;i3;i+)for(j=0;jI;j+)(tenp=array11jl;arrayij=arraylji:array皿i=temp;第19套填空题给定程序的功能是计算SCORE中M个人的平均成绩AVER,将低于AVER的成绩放在BE1.oW中,通过函数名返回人数。例如,当SCoRE=,Ou:);scanf(%cz&ch);fun(str,ch);printf(str=%snzstr);Strcpy(strzturbocandborlandc+,);fun(str,a);out=fopen(out.dat,zw)

34、;fprintf(out,%s,zstr);fclose(out);答案是:voidfun(chars(,inlc)(inti=0;char*p;p=s;while(*p)(if(*p!=c)(s(i=*p;i+;)p+;si=,0,;)第20套康空题给定程序的功能是求出能整除X且不是偶数的各整数,并放在数组PP中,这些除数的个数由N返回。例如,若X的值为30,则有4个数符合要求,它们是1,3,5,15.注意:部分源程序给出如卜请勿改动主函数main和其他函数中的任何内容,仅在横线上填入所编写的若干表达式或语句。intlow=O,high=N-l,mid;while(low=high)(mid

35、=(low+high)/2;if(m=amid)low=nid+l;elsereturn(mid);return(-1);nain()intizaN=-3,4,lt9,13,45,67,89,100,180),k,m;printf(aEyeODAEyYEIA:);for(i=0;i=0)printf(,m=%dzindex=%dn,m,k);elseprintf(Notbefound!n);)第1处:voidfun(inta11.intm)应改为intfun(inta11.intm)第2处:if(m=amid)应改为if(mamidj)编程题编写函数intfun(intlim,intaaMAX

36、),该函数的功能的求出小于或等于Iim的所有素数,并放在aa数组中,该函数返回所求出的素数的个数注意:部分源程序给出如下。请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。试题程序:#includek+;)returnk+;)第21套填空题给定程序中,函数FUN的功能是:将S所指字符串中的所有数字字符移到所有非数字字符之后,并保持数字字符串和非数字字符原有的先后次序。例如,形参S所指的字符串为:def35adh3kjsdf7.执行结果为:defadhkjsdf3537.注意:部分源程序给出如卜请勿改动主函数main和其他函数中的任何内容,仅在横线上填入所编写的若干表达式或语句。试题程序:#includevoidfun(char*s)intizj=0,k=0;chartl(80,t280;for(i=0;si!=,0,;i+)if(s

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 在线阅读 > 生活休闲


备案号:宁ICP备20000045号-1

经营许可证:宁B2-20210002

宁公网安备 64010402000986号