2025年全国计算机等级考试二级c语言上机精选题库(共55套).docx
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<sldio.h>#defineN3#dcfineM5main()(inti.j;sialicIloalscorcNMJ=78.5,84,83,65,63J,行include<stdio.h>*found*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;i<N;i+)agei=(int)(l15*rnd();printf("Tleoriginaldata:n");for(i=0;i<N;i+)printf(i+l)%0=07"%4dn"f,%4d'',ageli);printf("nn");fun(age,d);out=fopen("out.dat","w");for(i=0;i<10;i+)(printf("%4d-%4d:%4dn",i*10,i*I0+9.di);fprintf(out,"%4d-%4d:%4dn",i*10,i*l0+9,di);printf("Over100:%4dn".d10);fprintf(out,"Over100:%4dn",d10J);fclose(out);)答案:elseif(ai)>=50&&ali<=59)b5+=I;elseif(ai>=60&&ai<=69)b6+=l;elseif(a|i>=70&&a|i<=79)b71+=l;elseif(ali|>=80&&ali<=89)b8+=l;elseif(ali|>=90&&ai)<=99)b9+=l;elseb101+=1;)第2套:填空题请补充main函数,该函数的功能是:从键盘输入一组字符串,以'*'结束输入,并显示出这个字符串。例如,输入abcdef*,结果显示abcdef。仅在横线上添入所编写的若干表达式或语句,勿改动函数中的其他任何内容。tfinclude<stdio.h>defineN80main()(inti=-1,j=0:charstrN;printf(z,nInputastringn");doprintf("Thelowest:%s,%dn".m.num.m.s);第二题:下列给定程序中,函数fun的功能是:将字符串P中的所有字符复制到字符串b中,要求每复制三个字符之后插入一个空格。例如,在调用fu11函数之前给字符串a输入Abcdefghijk,调用函数之后,字符串之后,字符串b中的内容则为ABCDEFGHIJK。请改正程序中的错误,使它能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!#includc<stdio.h>voidfun(char*p,char*b)(inti.k=0:while(*p)(/*砧Und*/i=0;*tbund*/while(i<3&&*)(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的值不大于1000。例如,若主函数从键盘给n输入的值为856,则输出为sum=763o请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。#includc<stdio.h>intfun(intn)main()(intn,sum;FI1.E*out;printf("Inputn:");scanf("l"n);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",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!=喊''!=strlij第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=OJ<nj+)if(si%2=0)(ljl=si;j+;)tj='O'第5套填空题请补充main函数,该函数的功能是:输出一个N*N矩阵,要求非周边元素赋值0,周边元素赋值1。仅在横线上填入所编写的若干表达式或语句,勿改动函数中的其他内容。/*RJUnd*/Sl=sl*100;)main()(longs,i;printf("nPleaseenters:");scanf("%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<conio.h>#include<stdio.h>voidfun(inta,in(b,long*c)main()(inta.b:longc;FI1.E*out;printf("Inputa,b;");scanf("%d%d",&a,&b);fun(a.b,&c);printf("Theresultis:%ldn",c);out=fopen("out.dat","w");for(a=20;a<50;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请改正程序中的错误,使程序能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!试题程序:#include<conio.h>#include<stdio.h>doublefun(intm)doubley=1.0;inti;*found*/for(i=2;i<m;i+)/*,*found*/y-=1/(i*i);return(y);main()intn=5;printf(11nTheresultis%lfn"zfun(n);第I处:for(i=2:i<m:i+)应改为for(i=2;i<=m;j+)第2处:y-=l(i*i);应改为y-=1.0(i*i)编程题请编写一个函数voidlun(chara,charb11Jntn),其功能是:删除一j+÷)bj='O'1第7套填空题函数fun的功能是:统计长整数n的各个位上出现数字1,2,3的次数,并通过外部(全局)变量cl,c2,c3返回主函数。例如,当=123114350时,结果应该为:cl=3,c2=l,c3=2.注意:部分源程序给出如下。请勿改动主函数main和其他函数中的任何内容,仅在fun函数的横线上填入所编写的若干表达式或语句。试题程序如下:Sinclude<stdio.h>intcl,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;main()longn=1231143501.;fun(n);printf(11nTheresult:n");for(i=0;i<m;i+)printf('%dz"