全国计算机等级考试二级c语言上机精选题库共40套.docx

上传人:b****5 文档编号:8631150 上传时间:2023-02-01 格式:DOCX 页数:159 大小:84.55KB
下载 相关 举报
全国计算机等级考试二级c语言上机精选题库共40套.docx_第1页
第1页 / 共159页
全国计算机等级考试二级c语言上机精选题库共40套.docx_第2页
第2页 / 共159页
全国计算机等级考试二级c语言上机精选题库共40套.docx_第3页
第3页 / 共159页
全国计算机等级考试二级c语言上机精选题库共40套.docx_第4页
第4页 / 共159页
全国计算机等级考试二级c语言上机精选题库共40套.docx_第5页
第5页 / 共159页
点击查看更多>>
下载资源
资源描述

全国计算机等级考试二级c语言上机精选题库共40套.docx

《全国计算机等级考试二级c语言上机精选题库共40套.docx》由会员分享,可在线阅读,更多相关《全国计算机等级考试二级c语言上机精选题库共40套.docx(159页珍藏版)》请在冰豆网上搜索。

全国计算机等级考试二级c语言上机精选题库共40套.docx

全国计算机等级考试二级c语言上机精选题库共40套

2020年全国计算机等级考试二级c语言上机精选题库(共40套)

 

第1套题

一、填空题

请补充main函数,该函数的功能是:

计算每个学生科目的平均分,并把结果保存在数组bb中。

例如,当score[N][M]={{78.5,84,83,65,63},{88,91.5,89,93,95},{72.5,65,56,75,77}}时,三个学生的平均分为:

74.791.369.1。

仅在横线上填入所编写的若干表达式或语句,勿改动函数中的其他任何内容。

#include

#defineN3

#defineM5

main()

{

inti,j;

staticfloatscore[N][M]=

{

{78.5,84,83,65,63},

{88,91.5,89,93,95},

{72.5,65,56,75,77}

};

floatbb[N];

for(i=0;i

___1___;

for(i=0;i

{

for(j=0;j

___2___;

bb[i]/=M;

}

for(i=0;i

printf("\nstudent%d\taverage=%5.1f",i+1,bb[i]);

}

二、改错题

下列给定程序中,函数fun的功能是:

根据整型行参m,计算如下公式的值。

y=

例如,若m=2000,则应该输出:

0.000160。

请改正程序中的错误,使它能得出正确的结果。

#include

#include

/********found********/

fun(intm)

{

doubley=0,d;

inti;

/********found********/

for(i=100,i<=m,i+=100)

{

d=(double)i*(double)i;

y+=1.0/d;

}

return(y);

}

main()

{

intn=2000;

printf("\nTheresultis%lf\n",fun(n));

}

三、编程题

请编写函数fun,该函数的功能是:

统计个年龄段的人数。

N个年龄通过调用随机函数获得,并放在主函数的age数组中;要求函数把0至9岁年龄段的人数放在d[0]中,把10至19岁年龄段的人数放在d[1]中,把20至29岁年龄段的人数放在d[2]中,其余依此类推,把100岁(含100)以上年龄的人数都放在d[10]中。

结果在主函数中输出。

请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。

#include

#defineN50

#defineM11

voidfun(int*a,int*b)

{

}

doublernd()

{

statict=29,c=217,m=1024,r=0;

r=(r*t+c)%m;

return((double)r/m);

}

main()

{

intage[N],i,d[M];

FILE*out;

for(i=0;i

age[i]=(int)(115*rnd());

printf("Theoriginaldata:

\n");

for(i=0;i

printf((i+1)%10==0?

"%4d\n":

"%4d",age[i]);

printf("\n\n");

fun(age,d);

out=fopen("out.dat","w");

for(i=0;i<10;i++)

{

printf("%4d---%4d:

%4d\n",i*10,i*10+9,d[i]);

fprintf(out,"%4d---%4d:

%4d\n",i*10,i*10+9,d[i]);

}

printf("Over100:

%4d\n",d[10]);

fprintf(out,"Over100:

%4d\n",d[10]);

fclose(out);

}

答案:

一、1、bb[i]=0或*(bb+i)=0

2、bb[i]+=score[i][j]或bb[i]=b[i]+score[i][j]或bb[i]=score[i][j]+bb[i]

二、1、fun(intm)应改为doublefun(intm)

2、for(i=100,i<=m,i+=100)应改为for(i=100;i<=m;i+=100)

三、

voidfun(int*a,int*b)

{

inti,j;

for(j=0;j

b[j]=0;

for(i=0;i

if(a[i]>=0&&a[i]<=9)

b[0]+=1;

elseif(a[i]>=10&&a[i]<=19)

b[1]+=1;

elseif(a[i>=20&&a[i]<=29)

b[2]+=1;

elseif(a[i]>=30&&a[i]<=39)

b[3]+=1;

elseif(a[i>=40&&a[i]<=49])

b[4]+=1;

elseif(a[i]>=50&&a[i]<=59)

b[5]+=1;

elseif(a[i]>=60&&a[i]<=69)

b[6]+=1;

elseif(a[i]>=70&&a[i]<=79)

b[7]+=1;

elseif(a[i]>=80&&a[i]<=89)

b[8]+=1;

elseif(a[i]>=90&&a[i]<=99)

b[9]+=1;

else

b[10]+=1;

}

第2套

:

填空题

请补充main函数,该函数的功能是:

从键盘输入一组字符串,以’*’结束输入,并显示出这个字符串。

例如,输入abcdef*,结果显示abcdef。

仅在横线上添入所编写的若干表达式或语句,勿改动函数中的其他任何内容。

#include

#defineN80

main()

{

inti=-1,j=0;

charstr[N];

printf("\nInputastring\n");

do

{

i++;

scanf(_1_);

}while(_2_);

printf("\n*******displaythestring*******\n");

while(j

{

printf(_3_);

j++;

}

}

答案:

(1)“%c”,&str[i]

(2)str[i]!

=’*’

(3)”%c”,str[j]

改错题:

下列给定程序中,函数fun的功能是:

计算并输出high以内最大的10个素数之和。

High由主函数传给fun函数。

若high的值为100,则函数的值为732。

#include

#include

#include

intfun(inthigh)

{

intsum=0,n=0,j,yes;

while((high>=2)&&(n<10))

{

yes=1;

for(j=2;j<=high/2;j++)

/********found********/

if(high%j==0)

{

yes=0;

break

}

if(yes)

{

sum+=high;

n++;

}

high--;

}

returnsum;

}

main()

{

printf("%d\n",fun(100));

}

答案:

break改为break;

程序设计:

请编写函数fun,该函数的功能是:

统计一行字符串中单词的个数,作为函数值返回。

一行字符串在主函数中输入,规定所有单词由小写字母组成,单词之间由若干个空格隔开,一行的开始和结束都没有空格。

#include

#include

#defineN80

intfun(char*s)

{

}

main()

{

charline[N];

intnum=0;

FILE*out;

char*test[]={"HelloWorld!

","Thisisateststring.","ab","cdefg,sfl"};

printf("Enterastring:

\n");

gets(line);

num=fun(line);

printf("Thenumberofwordis:

%d\n\n",num);

out=fopen("out.dat","w");

for(num=0;num<4;num++)

printf(out,"%d\n",fun(test[num]));

fclose(out);

}

第3套

第一题:

已知学生的记录由学号和学习成绩构成,N名学生的数据已存入a结构体中,给定程序的功能是找出成绩最低的学生记录,通过形参返回函数。

请勿改动主函数main和其他函数中的任何内容,仅在fun函数的横线上填入所编写的若干表达式或语句。

#include

#include

#defineN10

typedefstructss

{

charnum[10];

ints;

}STU;

fun(STUa[],STU*s)

{

stuh;

inti;

h=a[0];

for(i=1;i

if(a[i].s

h=a[i];

*s=h;

}

main()

{

STUa[N]=

{

{"A01",81},{"A02",89},{"A03",66},{"A04",87},

{"A05",77},{"A06",90},{"A07",79},{"A08",61},

{"A09",80},{"A10",71}

},m;

inti;

printf("*****Theoriginaldata*****\n");

for(i=0;i

printf("No=%sMark=%d\n",a[i].num,a[i].s);

fun(a,&m);

printf("*****THERESULT*****\n");

printf("Thelowest:

%s,%d\n",m.num,m.s);

}

第二题:

下列给定程序中,函数fun的功能是:

将字符串p中的所有字符复制到字符串b中,要求每复制三个字符之后插入一个空格。

例如,在调用fun函数之前给字符串a输入ABCDEFGHIJK,调用函数之后,字符串之后,字符串b中的内容则为ABCDEFGHIJK。

请改正程序中的错误,使它能得出正确的结果。

注意:

不要改动main函数,不得增行或删行,也不得更改程序的结构!

#include

voidfun(char*p,char*b)

{

inti,k=0;

while(*p)

{

/********found********/

i=0;

/********found********/

while(i<3&&*p)

{

b[k]=*p;

k++;

p++;

i++;

}

/********found********/

if(*p)

b[k++]='';

}

b[k]='\0';

}

main()

{

chara[80],b[80];

printf("Enterastring:

");

gets(a);

printf("Theoriginalstring:

");

puts(a);

fun(a,b);

printf("\nThestringafterinsertspace:

");

puts(b);

printf("\n\n");

}

第三题:

请编写一个函数fun,它的功能是:

计算并输出给定整数n的所有因子(不包括1与自身)之和。

规定n的值不大于1000。

例如,若主函数从键盘给n输入的值为856,则输出为sum=763。

请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。

#include

intfun(intn)

{

}

main()

{

intn,sum;

FILE*out;

printf("Inputn:

");

scanf("%d",&n);

sum=fun(n);

printf("sum=%d\n",sum);

out=fopen("out.dat","w");

fprintf(out,"%d\n",fun(123));

fprintf(out,"%d\n",fun(456));

fprintf(out,"%d\n",fun(789));

fprintf(out,"%d\n",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;

}

第4套

填空题

请补充main函数,该函数的功能是:

把字符串str1中的非空格字符拷贝到字符串str2中.

例如,若str1=”nicetomeetyou!

”,则str2=”nicetomeetyou!

仅在横线上填入所编写的若干表达式或语句,勿改动函数中的其他任何内容.

#include

#defineN80

main()

{

staticcharstr1[N]="nicetomeetyou!

";

charstr2[N];

inti=0,j=0;

printf("\n******str1******\n");

puts(str1);

while(str1[i])

{

if(___1___)

str2[j++]=str1[i];

___2___;

}

printf("\n******str2******\n");

for(i=0;i

printf("%c",str2[i]);

}

改错题

下列给定程序中,函数fun的功能是:

将大写字母转换为对应小写字母之后的第五个字母;若小写字母为v~z,使小写字母的值减21.转换后的小写字母作为函数值返回.例如,若形参是字母A,则转换字母为小写字母f;若形参是字母W,则转换为小写字母b.

请改正函数fun中的错误,使它能得出正确的结果。

注意:

不要改动main函数,不得增行或删行,也不得更改程序的结构!

#include

#include

charfun(charc)

{

/********found********/

if(c>='A'&&c<='Z')

c=c-32;

/********found********/

if(c>='a'&&c<='u')

c=c-5;

elseif(c>='v'&&c<='z')

c=c-21;

returnc;

}

main()

{

charc1,c2;

printf("\nEnteraletter(A-Z):

");

c1=getchar();

if(isupper(c1))

{

c2=fun(c1);

printf("\n\nTheletter%cchangeto%c\n",c1,c2);

}

else

{

printf("\nEnter(A-Z)!

\n");

}

}

编程题

请编写函数fun,其功能是:

将s所指字符串中ASCII值为奇数的字符删除,串中剩余字符形成一个新串放在t所指的数组中。

例如,若s所指字符串中的内容为ABCDEFG12345,其中字符A的ASCII码值为奇数、……、

字符1的ASCII码值也为奇数、……都应当删除,其他依次类推。

最后t所指的叔祖中的内容应是BDF24。

请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。

#include

#include

#include

voidfun(char*s,chart[])

{

}

main()

{

chars[100],t[100],Msg[]="PleaseenterstringS:

";

FILE*out;

printf(Msg);

scanf("%s",s);

fun(s,t);

printf("\nTheresultis:

%s\n",t);

out=fopen("out.dat","w");

fun(Msg,t);

fprintf(out,"%s",t);

fclose(out);

}

答案:

第一题:

第1处填空str1[i]!

=’’或’’!

=str1[i]

第2处填空i++或++i或i+=1或i=i+1

第二题:

第1处:

c=c-32;应改为c=c+32;

第2处:

c=c-5;应改为c=c+5;

第三题:

voidfun(char*s,chart[])

{

intI,j=0,n;

n=strlen(s);

for(i=0;i

if(s[i]%2==0)

{

t[j]=s[i];

j++;

}

t[j]=’\0’

}

第5套

填空题

请补充main函数,该函数的功能是:

输出一个N*N矩阵,要求非周边元素赋值0,周边元素赋值1。

仅在横线上填入所编写的若干表达式或语句,勿改动函数中的其他内容。

#include

#defineN10

main()

{

intbb[N][N];

inti,j,n;

printf("\nInputn:

\n");

scanf("%d",&n);

for(i=0;i

for(j=0;j

{

if(i==0||i==n-1||j==0||j==n-1)

___1___;

else

___2___;

}

printf("\n*****theresult*******\n");

for(i=0;i

{

printf("\n\n");

for(j=0;j

printf("%4d",bb[i][j]);

}

}

改错题

下列给定程序中函数fun的功能是:

从低位开始取出长整型变量s中奇数位上的数,依次构成一个新数放在t中,例如,当s中的数为7654321时,t中的数为7531。

请改正程序中的错误,使它能得出正确的结果。

注意:

不要改动main函数,不得增行或删行,也不得更改程序的结构!

#include

#include

/********found********/

voidfun(longs,longt)

{

longs1=10;

*t=s%10;

while(s>0)

{

s=s/100;

*t=s%10*s1+*t;

/********found********/

s1=s1*100;

}

}

main()

{

longs,t;

printf("\nPleaseenters:

");

scanf("%ld",&s);

fun(s,&t);

printf("Theresultis:

%ld\n",t);

}

编程题

请编写函数fun,其功能是:

将两个两位数的正整数a、b合并形成一个整数放在c中。

合并的方式是:

将a数的十位和个位数依次放在c数的百位和个位上,b数的十位和个位数依次放在c数的十位和千位上。

例如,当a=45,b=12,调用该函数后,c=2415。

请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。

#include

#include

voidfun(inta,intb,long*c)

{

}

main()

{

inta,b;

longc;

FILE*out;

printf("Inputa,b;");

scanf("%d%d",&a,&b);

fun(a,b,&c);

printf("Theresultis:

%ld\n",c);

out=fopen("out.dat","w");

for(a=20;a<50;a+=3)

{

fun(a,109-a,&c);

fprintf(out,"%ld\n",c);

}

fclose(out);

}

答案

第一题(填空题)

第1处填空:

bb[i][j]=1

第2处填空:

bb[i][j]=0

第二题(改错题)

第1处:

voidfun(longs,longt)应改为voidfun(longs,long*t)

第2处:

s1=s1*100;应改为s1=s1*10;

第三题(编程题)

voidfun(int

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

当前位置:首页 > 教学研究 > 教学案例设计

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1