2020年全国计算机等级考试二级c语言上机题库(共50套)_第1页
2020年全国计算机等级考试二级c语言上机题库(共50套)_第2页
2020年全国计算机等级考试二级c语言上机题库(共50套)_第3页
2020年全国计算机等级考试二级c语言上机题库(共50套)_第4页
2020年全国计算机等级考试二级c语言上机题库(共50套)_第5页
已阅读5页,还剩182页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

2020年全国计算机等级考试二级c语言上

机精选题库(共50套)

第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.1o

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

其他任何内容。

#include<stdio.h>

#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<N;i++)

1—;

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

for(j=0;j<M;j++)

2―;

bb[i]/=M;

}

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

printf("\nstudent%d\taverage=%5.If,i+1,bb[ij);

二、改错题

下列给定程序中,函数fun的功能是:根据整型行参,计算

如下公式的值。

1111

--------+----------------+---------+•••+---------

100x100200x200300x300mxm

例如,若m=2若0,则应该输出:0.0001600

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

#include<conio.h>

#include<stdio.h>

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

fun(intm)

(

doubley=0,d;

inti;

/**************/

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川中,把20至29岁年龄段的人数放在d[2]中,其余依此类推,

把100岁(含100)以上年龄的人数都放在d[10]中。结果在主函数

中输出。

请勿改动主函数main和其他函数中的任何内容,仅在函数fun

的花括号中填入所编写的若干语句。

#include<stdio.h>

#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<N;i++)

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

printf("Theoriginaldata:\n");

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

printf((i+l)%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*l0+9,d[i]);

)

printf("Over100:%4d\n",d[10]);

fprintf(out,"Over100:%4d\n",d[10]);

fclose(out);

)

答案:

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

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

bb[i]=score[i]fj]+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<M;j++)

b[j]=O;

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

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

b[0]+=l;

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

b[l]+=l;

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

b⑵+=1;

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

b[3]+=l;

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

b[4]+=l;

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

b[5]+=l;

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

b[6]+=l;

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

b[7]+=l;

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

b[8]+=l;

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

b[9]+=l;

else

b[10]+=l;

第2套

:填空题

请补充main函数,该函数的功能是:从键盘输入一组字符串,以'*'

结束输入,并显示出这个字符串。

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

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

任何内容。

ttinclude<stdio.h>

ttdefineN80

main()

(

inti=-1,j=0;

charstr[N];

printf(z,\nInputastring\n");

do

i++;

scanf(_1_);

}while(_2_);

printf(,z\n*******displaythestring*******;

while(j<i)

(

printf(_3_);

j++;

)

)

答案:⑴“%c”,&str[i]

(2)str[i]!=,*'

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

改错题:

下列给定程序中,函数fun的功能是:计算并输出high以内最大的

10个素数之和。High由主函数传给fun函数。若high的值为100,

则函数的值为732。

ftinclude<conio.h>

ftinclude<stdio.h>

ftinclude<math.h>

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<stdio.h>

#include<string.h>

#defineN80

intfun(char*s)

{

}

main()

(

charline[N];

intnum=0;

FILE*out;

char*test[]={"HelloWorld!“Thisisatest

string.z,,"ab","cdefg,sf1"};

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<stdio.h>

#include<string.h>

#defineN10

typedefstructss

(

charnum[10];

ints;

}STU;

fun(STUa[],STU*s)

(

stuh;

inti;

h=a[0];

for(i=l;i<N;i++)

if(a[i].s<h.s)

h=a[i];

*s=_h;

}

main()

(

STUa[N]=

(

{"AOI",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<N;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<stdio.h>

voidfun(char*p,char*b)

(

inti,k=0;

while(*p)

(

/********^)und********/

i=0;

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

while(i<3&&*p)

|

b[k]=*p;

k++;

P++;

i++;

)

/********^Qund********/

if(*p)

bfk++l='

)

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=763o

请勿改动主函数main和其他函数中的任何内容,仅在函数

fun的花括号中填入所编写的若干语句。

#include<stdio.h>

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-l;i++)

if(n%i==0)

s+=i;

returns;

第4套

填空题

请补充main函数,该函数的功能是:把字符串strl中的非空格字符拷贝

到字符串str2中.

例如,若strl=,,nicetomeetyou!”,则str2=,,nicetomeetyou!

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

何内容.

#include<stdio.h>

#defineN80

main()

(

staticcharstrl[N]="nicetomeetyou!";

charstr2[N];

inti=0,j=0;

printfn******str]******\n

puts(strl);

while(strl[i])

(

if(—1—)

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

—2—;

)

printf(*****str2******\n

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

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

)

改错题

下列给定程序中,函数fun的功能是:将大写字母转换为对应小写字母

之后的第五个字母;若小写字母为v〜z,使小写字母的值减21.转换后的

小写字母作为函数值返回例如,若形参是字母A,则转换字母为小写字

母f;若形参是字母W,则转换为小写字母b.

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

注意:不要改动main函数,不得增行或删行,也不得更改程序的结

构!

#include<stdio.h>

#include<ctype.h>

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()

(

charcl,c2;

printf("\nEnteraletter(A-Z):");

cl=getchar();

if(isupper(cl))

(

c2=fun(cl);

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

)

else

(

printf("\nEnter(A-Z)!\n");

)

)

编程题

请编写函数fun,其功能是:将s所指字符串中ASCII值为奇数的字

符删除,串中剩余字符形成一个新串放在t所指的数组中。

例如,若s所指字符串中的内容为ABCDEFG12345,其中字符A的

ASCII码值为奇数、...、

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

后t所指的叔祖中的内容应是BDF24o

请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花

括号中填入所编写的若干语句。

#include<conio.h>

#include<stdio.h>

#include<string.h>

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处填空strl[i]!=''或'’!=strl[i]

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

第二题:

第1处:c=c-32;应改为c=c+32;

第2处:c=c-5;应改为c=c+5;

第三题:

voidfun(charts,chart[])

(

intI,j=0,n;

n=strlen(s);

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

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

(

j++;

)

第5套

填空题

请补充main函数,该函数的功能是:输出一个N*N矩阵,要求

非周边元素赋值0,周边元素赋值1。

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

他内容。

#include<stdio.h>

#defineN10

main()

(

intbb[NJ[N];

inti,j,n;

printf("\nlnputn:\n");

scanf("%d",&n);

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

for(j=0;j<n;j++)

(

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

else

—2—;

)

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

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

(

printf("\n\n");

for(j=0;j<n;j++)

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

)

)

改错题

下列给定程序中函数fun的功能是:从低位开始取出长整型变量s

中奇数位上的数,依次构成一个新数放在t中,例如,当s中的数为

7654321时,t中的数为7531。

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

注意:不要改动main函数,不得增行或删行,也不得更改程序的

结构!

#include<conio.h>

#include<stdio.h>

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

voidfun(longs,longt)

{',

longsi=10;

*t=s%10;

while(s>0)

(

s=s/100;

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

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

si=si*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=2415o

请勿改动主函数main和其他函数中的任何内容,仅在函数fun的

花括号中填入所编写的若干语句。

#include<conio.h>

#include<stdio.h>

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:%Id\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]=l

第2处填空:bb[i][j]=O

第二题(改错题)

第1处:voidfun(longs,longt)应改为voidfun(longs,

long*t)

第2处:sl=sl*100;应改为sl=sl*10;

第三题(编程题)

voidfun(inta,intb,long*c)

(一

*c=(b%10)1000+(a/10)*100+(b/10)*10+a%10;

)

第6套

填空题

给定程序的功能是计算并输出下列级数的前N项之和除,直到

SN大于Q为止,Q的值通过形参传入。

例如,若Q的值为50.0,则函数值为50.416687-

请勿改动主函数main和其他函数中的任何内容,仅在fun函数

的横线上填入所编写的若干表达式或语句。

试题程序:#include<stdio.h>

doublefun(doubleq)

(

intn;

doubles;

n=2;

s=2.0;

while(s1q)

(

s=s+(double)(n+1)/n;

2;

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

3;

main()

{

printf("%f\n",fun(50));

)

第1处填空:<=

第2处填空:n++或n+=l或n=n+l

第3处填空:returns或return(s)

改错题

下列给定程序中,函数fun的功能是:根据整型参m的值,计算

如下公式的值。

例如,若m中的值为5,则应输出:0.536389

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

注意:不要改动main函数,不得增行或删行,也不得更改程序

的结构!

试题程序:#include<conio.h>

#include<stdio.h>

doublefun(intm)

(

doubley=1.0;

inti;

I********founci********/

for(i=2;i<m;i++)

/*************/

y_=1/(i*i);

return(y);

)

main()

{

intn=5;

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

)

第1处:for(i=2;i<m;i++)应改为for(i=2;i<=m;j++)

第2处:y-=l/(i*i);应改为y-=1.0/(i*i)

编程题

请编写一个函数voidfun(chara[],charb[],intn),其功能是:删除一

个字符串中指定下标的字符。其中,a指向原字符串,删除后的字符

串存放在b所指的数组中,n中存放指定的下标。

例如,输入一个字符串World,然后输入3,则调用该函数后的结

果为Wordo

注意:部分源程序给出如下。

请勿改动主函数main和其他函数中的任何内容,仅在函数fun的

花括号中填入所编写的若干语句。

试题程序:#include<stdio.h>

#include<conio.h>

#defineLEN20

voidfun(chara[],charb[],intn)

main()

{

charstrl[LEN],str2[LEN];

intn;

FILE*out;

printf("Enterthestring:\n");

gets(strl);

printf("Enterthepositionofthestring

deleted:");

scanf("%d",&n);

fun(strlAstr2,n);

printf("Thenewstringis:%s\n",str2);

fun("HelloWorld!",str2,9);

out=fopen("out.daf',"w");

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

fclose(out);

)

答案是:

voidfun(chara[],charb[],intn)

(

intI,j=0;

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

if(i!=n)

b[j]=a[i];

j++;

}

b[j]='\0';

第7套

填空题

函数fun的功能是:统计长整数n的各个位上出现数字1,2,3的次

数,并通过外部(全局)变量cl,c2,c3返回主函数。

例如,当=123114350时,结果应该为:cl=3,c2=l,c3=2.

注意:部分源程序给出如下。

请勿改动主函数main和其他函数中的任何内容,仅在fun函数的

横线上填入所编写的若干表达式或语句。

试题程序如下:#include<stdio.h>

intcl,c2,c3;

voidfun(longn)

(

cl=c2=c3=0;

while(n)

{

switch(1)

(

case1:

cl++;

—2;

case2:

c2++;

—3;

case3:

c3++;

)

n/=10;

)

)

main()

longn=123114350L;

fun(n);

printf("\nTheresult:\n");

printf("n=%ldcl=%dc2=%dc3=%d\n”,n,cl,c2,

c3);

)

第1处填空:n%10

第2处填空:break

第3处填空:break

改错题

下列给定程序中函数fun的功能是:用选择法对数组中的n个元

素按从小到大的顺序进行排序。

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

注意:不要改动main函数,不得增行或删行,也不得更改程序

的结构!

试题程序:#include<stdio.h>

#defineN20

voidfun(inta[],intn)

{

inti,j,t,p;

for(j=0;j<n-l;j++)

{

/丈★大★丈夫夫*fc)und■夫夫1

p=j

for(i=j;i<n;i++)

if(a[i]<a[p])

(

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

P=i;

t=a[p];

a[p]=a[i];

a[i]=t;

)

main()

(

inta[N]={9,6,8,3,-1},i,m=5;

printf("AADoQ°£°");

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

printf(n%d,",a[i]);

printf("\n");

fun(a,m);

printf(nAADdo6£o");

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

printf("%d,",a[i]);

printf("\n");

)

第1处:p=j应改为p=j;

第2处:p=i应改为p=j;

编程题

请编写一个函数intfun(int*s,intt,int*k),用来求出数组的最大元素在

数组中的下标并存放在k所指的存储单位中。

例如,输入如下整数:

876675896101301401980431451777

则输出结果为:6,980o

注意:部分源程序给出如下。

请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花

括号中填入所编写的若干语句。

试题程序:#include<conio.h>

#include<stdio.h>

voidfun(int*s,intt,int*k)

main()

{

int

a[10]={876,675,896,101,301,401,980,431,451,777},

k;

FILE*out;

fun(a,10,&k);

printf("%d,%d\n",k,a[k]);

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

fprintf(out,"%d\n%ci",k,a[k]);

fclose(out);

)

答案是:

voidfun(int*s,intt,int*k)

(

intI,max;

max=s[0];

for(i=0;i<t:i++)

if(s[i]>max)

max=s[i];

*k=I;

)

)

第8套

填空题

请补充main函数,该函数的功能是:从键盘输入一组整数,使用条

件表达式找出最大的整数。当输入的整数为。时结束。

例如,输入123540时一,最大的数为5。

请勿改动主函数main和其他函数中的任何内容,仅在fun函数的横

线上填入所编写的若干表达式或语句。

试题程序:#include<stdio.h>

#include<conio.h>

#defineN100

main()

(

intnum[N];

inti=-1;

intmax=0;

printf("\nlnputintegernumber:\n");

do

|

i++;

printf("num[%d]=",i);

scanf("%d",__1___);

max=__2___num[i]:max;

}while(3);

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

)

第1处填空:&num[i]或num+i

第2处填空:max<num[i]?或num[i]>max?

第3处填空:num[i]!=0或0!=num[i]

改错题

下列给定程序中,函数fun的功能是:在字符串str中找出ASCII码

值最大的字符,将其放在第一个位置上;并将该字符前的原字符向后

顺序移动。例如,调用fun函数之前给字符串输入:ABCDeFGH,调

用后字符串中的内容为eABCDFGH

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

注意:不要改动main函数,不得增行或删行,也不得更改程序的结

构!

试题程序:#include<stdio.h>

/********found********1

voidfun(char*p);

(

charmax,*q;

inti=0;

max=p[i];

while(p[i]!=0)

{

if(max<p[i])

(

丈★*found*****★丈*/

max=p[i];

p=q+i;

)

i++;

)

while(q>p)

(

*q=*(q-1);

q--;

)

p[0]=max;

}

main()

{

charstr[80];

printf("Enterastring:");

gets(str);

printf("\nTheoriginalstring:");

puts(str);

fun(str);

printf("\nThestringaftermoving:");

puts(str);

printf("\n\n");

第1处:voidfun(char*p);应改为voidfun(char*

第2处:p=q+I;应改为q=p+i;

编程题

编写函数fun,函数功能是:根据以下公式计算s,计算结果作为函

数值返回;n通过型参传入。

11

s=1+—+——;——+..…+-------;-------

1+21+2+31+2+3+...J2

例如:若n的值为11时,函数的值为1.833333。

注意:部分源程序给出如下。

请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花

括号中填入所编写的若干语句。

试题程序:#include<conio.h>

#include<stdio.h>

#include<string.h>

floatfun(intn)

}

main()

{

intn;

floats;

FILE*out;

printf("\nPleaseenterN:");

scanf("%d",&n);

s=fun(n);

printf("Theresultis:%f\n",s);

s=fun(28);

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

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

fclose(out);

)

答案是:

floatfun(intn)

inti;

floats=l.O,t=l.O;

for(i=2;i<=n;i++)

(

t=t+i;

s=s+l/t;

)

returns;

}

第9套

填空题

给定程序的功能是分别统计字符串中大写字母和小写字母的个数。

例如,给字符串SS输入:AaaaBBbl23CCccccd,则输出结果应为:

upper=5,lower=9。

请勿改动主函数main和其他函数中的任何内容,仅在fun函数的横

线上填入所编写的若干表达式或语句。

试题程序:#include<stdio.h>

voidfun(char★s,int*a,int*b)

{

while(*s)

{

if(*s>=1A*&&*s<=*Z*)

1;

if(*s>=*a*&&*s<=*z*)

—2;

s++;

)

)

main()

{

chars[100];

intupper=0,lower=0;

printf("\nPleaseastring:");

gets(s);

fun(s,Supper,slower);

printf("\nupper=%dlower=%d\n",3);

}——

第1处填空:(*a)++或++(*a)或*a=*a+l或*a+=l

第2处填空:(*b)++或++(*b)或*b=*b+l或*b+=l

第3处填空:upper,lower

改错题

下列给定程序中,函数fun的功能是:从n个学生的成绩中统计出低

于平均分的学生人数,此人数由函数值返回,平均分存放在行参aver

所指的存储单元中。例如,若输入8名学生的成绩:

80.5607290.59851.58864

则低于平均分的学生人数为4(平均分为:75.5625).

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

注意:不要改动main函数,不得增行或删行,也不得更改程序的

结构!

试题程序:#include<conio.h>

#include<stdio.h>

#defineN20

intfun(float*s,intn,float*aver)

{

floatave,t=0.0;

intcount=0,k,i;

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

for(k=0;k<n;k++)

t=s[k];

ave=t/n;

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

if(s[i]<ave)

count++;

I*★*****★found********I

*aver=&ave;

returncount;

)

main()

{

floats[30],aver;

intm,i;

printf("\nPleaseenterm:");

scanf(n%d",&m);

printf("\nPleaseenter%dmark:\n",m);

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

scanf("%f"zs+i);

printf("\nThenumberofstudents:%d\n",fun(s,

m,&aver));

printf("Ave=%f\n",aver);

)

第1处:t=s[k];应改为t+=s[k];

第2处:*aver=&ave;应改为*aver=ave;

编程题

编写函数fun,它的功能是:根据以下公式求p的值,结果由函数值

带回。M与n为两个正整数且要求m>n。

P=__

及!(加一〃)!

例如:m=12,n=8时,运行结果为495.000000

注意:部分源程序给出如下。

请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花

括号中填入所编写的若干语句。

试题程序:#include<conio.h>

#include<stdio.h>

floatfun(intm,intn)

main()

(

FILE*out;

printf("P=%f\n",fun(12,8));

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

fprintf(out,"%f",fun(12,6));

fclose(out);

)

答案是:

floatfun(intm,intn)

(

floatp,t=1.0;

inti;

for(i=l;i<=m;i++)

t=t*i;

p=t;

for(t=1.0,i=l;i<=n;i++)

t=t*i;

p=p/t;

for(t=1.0,i=1;i<=m-n;i++)

t=t*i;

p=p/t;

returnp;

)

第10套

填空题

请补充main函数,该函数的功能是:从键盘键盘输入3个整数然后

找出最大的数并输出。

例如,输入:124543,输出为45

注意:部分源程序给出如下。

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

他任何内容。

试题程序:#include<stdio.h>

#include<conio.h>

main()

{

inta,b,c,max;

printf("\nlnputthreenumbers:\n");

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

printf("Thethreenumbersare:%d,%d,%d\n",a,b,

c);

if(a>b)

—1—;

else

—2;

if(max<c)

—3;

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

)

第1处填空:max=a

第2处填空:max=b

第3处填空:max=c

改错题

下列给定程序中,函数fun的功能是:将s所指字符串出现的tl所指

子串全部替换成t2所指子字符串,错形成的新串放在w所指的数组

中。在此处,要求tl和t2所指字符串的长度相同。例如,当s所指

字符串的内容为abcdabfab,tl所指子串中的内容为ab,t2所指子串中

的内容为99时;结果,在w所指的数组中的内容为99cd99f99。

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

注意:不要改动main函数,不得增行或删行,也不得更改程序的结

构!

试题程序:#include<conio.h>

#include<stdio.h>

#include<string.h>

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

voidfun(char★s,*t1,*t2,*w)

{

inti;

char*p,★rf*a;

strcpy(w,s);

while(*w)

|

p=w;

r=tl;

/丈★大★丈夫夫*fc)und■夫夫★★★★★文/

while(r)

if(*r==*p)

(

r++;

p++;

)

else

(

break;

)

if(*r——1\01)

(

a=w;

r=t2;

while(*r)

(

*a=*r;

a++;

r++;

)

w+=strlen(t2);

}

else

w++;

)

)

)

main()

(

chars[100]ztl[100],t2[100],w[100];

printf("\nPleaseenterstrings:");

scanf("%s",s);

printf("\nPleaseentersubstringtl:");

scanf("%s",tl);

printf("\nPleaseentersubstringt2:");

scanf("%sn,t2);

if(strlen(tl)==strlen(t2))

{

fun(s,tl,t2,w);

printf("\nTheresultis:%s\n",w);

)

else

{

printf("Error:strlen(tl)!=strlen(t2)\n");

)

)

第1处:voidfun(char*s,*tl,*t2,*w)应改为voidfun(char*s,char

*tl,char*t2,char*w)

第2处:while(r)应改为while(*r)

编程题

编写函数fun,它的功能是:利用以下所示的简单迭代方法求方程式

cos(x)-x=0的一个实根。

X“M=cos(X“)

迭代步骤如下:

(1)取X1初值为0.0;

(2)xO=xl,把xl的值赋给x0;

(3)xl=cos(x0),求出一个新的xl;

(4)若xO-xl,的绝对值小于0.000001,则执行步骤(5),否则执行

步骤(2);

(5)所求xl就是方程cos(x)-x=0的一个实根,作为函数值返回。

程序将输出结果Root=0.739085o

注意:部分源程序给出如下。

请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花

括号中填入所编写的若干语句。

试题程序:#include<conio.h>

#include<math.h>

#include<stdio.h>

floatfun()

main()

{

FILE*out;

floatf=fun();

printf("Root=%f\n",f);

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

fprintf(out,"%f",f);

fclose(out);

)

答案是:

floatfun()

(

floatxl=0.0,x0;

do

(

xO=xl;

xl=cos(xO);

)

while(fabs(xO-x1)>=le-6);

returnxl;

)

第11套

填空题

给定程序中,涵数fun的功能是:把形参s所指字符串中下标为奇数

的字符右移到下一个奇数位置,最右边被移出字符串的字符串的字符

绕回放到第一个奇数位置,下标为偶数的字符不动(注:字符串的长

度大于等于2)

例如,形参s所指的字符串为:abcdefgh,执行结果为:ahcbedgf.

注意:部分源程序给出如下。

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

他任何内容。

试题程序:#include<stdio.h>

voidfun(char*s)

{

inti,n,k;

charc;

n=0;

for(i=0;s[i]!=*\0*;i++)

n++;

if(n%2==0)

k=n-1;

else

k=n-2;

c=2;

for(i=k-2;i〉=l;i=i-2)

s[i+2]=s[i];

s[l]=3;

main()

(

chars[80]="abcdefgh";

printf("\nTheoriginalstringis:%s\n",s);

fun(s);

printf("\nTheresultis:%s\n",s);

)

第1处填空:1

第2处填空:s[k]或*(s+k)

第3处填空:c

改错题

下列给定程序中,函数FUN的功能是:将一个由八进制数字字符组

成的字符串转换为与其面值相等的十进制整数。规定输入的字符串最

多只能包含5位8进制数字。例如,若输入77777,则输出将是32767。

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

注意:不要改动MAIN函数,不得增行或删行,也不要更改程序的

结构!

试题程序:#include<stdio.h>

#include<stdlib.h>

#include〈string.h>

intfun(char*p)

(

intn;

/夫丈夫丈夫丈★.found,夫夫★★★★丈★/

n=*p-*o*;

p++;

/夫丈夫★★★夫夫founcl***夫夫/

while(*p!=0)

{

n=n*7+*p-*o*;

p++;

)

returnn;

}

main()

{

chars[6];

inti;

intn;

printf("Enterastring(octaldigits):");

gets(s);

if(strlen(s)>5)

(

printf("Error:stringtoolonger!\n\n");

exit(0);

)

for(i=0;s[i];i++)

if(s[i]<'0'||s[i]>'7')

{

printf("Error:%cnotisoctaldigits!\n\n",

s[i]);

exit(0);

}

printf("Theoriginalstring:");

puts(s);

n=fun(s);

printf("\n%sisconveredtointegen

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论