全国计算机等级考试C语言上机考试题库80题答案

全国计算机等级考试C语言上机考试题库80题答案

ID:83018199

大小:204.62 KB

页数:194页

时间:2023-09-19

上传者:灯火阑珊2019
全国计算机等级考试C语言上机考试题库80题答案_第1页
全国计算机等级考试C语言上机考试题库80题答案_第2页
全国计算机等级考试C语言上机考试题库80题答案_第3页
全国计算机等级考试C语言上机考试题库80题答案_第4页
全国计算机等级考试C语言上机考试题库80题答案_第5页
全国计算机等级考试C语言上机考试题库80题答案_第6页
全国计算机等级考试C语言上机考试题库80题答案_第7页
全国计算机等级考试C语言上机考试题库80题答案_第8页
全国计算机等级考试C语言上机考试题库80题答案_第9页
全国计算机等级考试C语言上机考试题库80题答案_第10页
资源描述:

《全国计算机等级考试C语言上机考试题库80题答案》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

第1套一、填空题给定程序的功能是求1/4的圆周长。函数通过形参得到圆的直径,函数返回1/4的圆周长(圆周长公式为:L=rid,在程序中定义的变量名要与公式的变量相同)。例如:输入圆的直径值:19.527,输出为:15.336457请勿改动主函数main与其他函数中的任何内容,仅在横线上填写所需的若干表达式或语句。#includedoublefun(doubled)(return3.14159*d/4.0;}main()(doublez;printf("Inputthedoftheround:");scanf("%lf',&z);printf("L=%lf

1",fun(z));二、改错题下列给定程序中函数fun的功能是:计算正整数m的各位上的数字之积。例如,若输入202,则输出应该是0。请修改程序中的错误,得出正确的结果注意:不要改动main函数,不能增行或删行,也不能更改程序的结构#include#includelongfun(longn)(longr=l;do(r*=n%10;n/=10;}while(n);return(r);)main()(longm;printf(n

2pleaseenteranumber:H);scanf(M%ld",&m);printf(',

3%ld

4",fun(m));三、编程题

5请编写一个函数fun,它的功能是:求出1到m之内(含m)能被7或11整初的所有整数放在数组b中,通过n返回这些数的个数。例如,若传送给m的值为20,则程序输出71114o请勿改动主函数main与其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。#include#include#defineN100voidfun(intm,int*b,int*n)(inti,j=O;*n=O;fbr(i=l;i<=m;i++)if(i%7=0lli%11==0)(j++;}*n=j;)main()(inta[N],n,i;FILE*out;fun(20,a,&n);for(i=0;i

6,,,a[i]);elseprintf(,,%4dn,a[i]);printfCAn");out=fopen(,'outfile.dat",,,w,');fun(100A&n);fbr(i=O;i

7'\a[i]);elsefprintf(out;'%4dn,a[i]);fclose(out);)第2套一、填空题

8函数fun的功能是:统计长整数test的各位上出现数字5、6,7的次数,并通过外部(全局)变量sum5、sum6>sum7返回主函数。例如:当test=89431676时,结果应该为:sum5=0sum6=2sum7=lo请勿改动主函数main与其它函数中的任何内容,仅在fun函数的横线上填写所需的若干表达式或语句。#includeintsum5,sum6,sum7;voidfun(longtest){sum5=sum6=sum7=0;while(test)(switch(test%10)(case5:sum5++;break;case6:sum6++;break;case7:sum7++;}test/=10;))main()(longtest=89431676L;fun(test);printfCAnThecountresult:

9M);printf("test=%ldsum5=%dsum6=%dsum7=%d

10n,test,sum5,sum6,sum7);)二、改错题下列给定程序中,函数fun的功能是:将字符串str中的小写字母都改为对应的大写字母,其它字符不变.例如,若输入“asAS”,则输出“ASAS”。请修改程序中的错误,使它能统计出正确的结果。注意:不要改动main函数,不能增行或删行,也不能更改程序的结构#include#include#includechar*fun(charstr[])(inti;for(i=0;str|i];i++)if((str[i]>=,a'&&str[i]<='z,))str[i]-=32;retum(str);

11}main()charstr[81];printf(',

12pleaseenterastring:n);gets(str);printf(M

13Theresultstringis:

14%sM,fun(str));}三、编程题请编写一个函数fun,它的功能是:找出一维整型数组元素中最小的值和它所在的下标,最小的值和它所在的下标通过形参传回。数组元素中的值已在主函数中赋予。主函数中a是数组名,n是a中的数据个数,min存放最小值,flag存放最小值所在元素的下标请勿改动主函数main与其它函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。#include#include#includevoidfun(intb[],intn,int*min,int*d)(inti;*min=b[0];*d=0;for(i=0;i

15n);fun(a,n,&min,&flag);printf(',min=%5dJndex=%4d

16M,min,flag);out=fopen("outflie.dat,,,,,wn);memcpy(a;3.1415926535897932384626433832790,32);fun(a,8,&min,&flag);

17fprintf(out,Hmin=%5dJndex=%4dn,min,flag);fclose(out);)第3套上机考试试题一、填空题请补充main函数,该函数的功能是:从键盘输入一组整数,使用条件表达式找出最大的整数。当输入的整数为-1时结束。例如:输入9612123343232548936589-1时,最大的数为365o仅在横线上填写所需的若干表达式或语句,请勿改动函数中的其它任何内容#include#include#defineNUM100main()(intn[NUMJ;inti="l;intMAX=-l;printfCAnlnsertintegerwiththe1'asend:

18M);do(i++;printf(Mn[%d]=M,i);scanf(n%d';&n[i]);MAX=MAX

19M,MAX);二、改错题下列给定程序中,函数fun的功能是:将一个由八进制数字字符组成的字符串转换为与其数值相等的十进制整数。例如,若输入11111,则输出将是4681。请修改程序中的错误,使它能得出正确结果。注意:不要改动main函数,不能增行或删行,也不能更改程序的结构#include#include#includeintfun(char*s)(intn;n=*s-*0*;s++;while(*s!=0){n=n*8+*s-'0*;

20s++;returnn;)main()(charstr[6];inti;intn;printf('Enterastring(octaldigits):n);gets(str);if(strlen(str)>5)(printf(MError:stringtoolonger!

21

22M);exit(O);)for(i=0;str[i];i++)if(str[i]<'O,llstr[i]>'7,)(printf("Error:%cnotisoctaldigits!

23

24M,str|i]);exit(O);)prinlf('*Theoriginalstring:n);puts(str);n=fun(str);printf(An%sisconveredtointegenumber:%d

25

26H,str,n);}三、编程题下列程序定义了NXN的二维数组,并在主函数中赋值。请编写函数fun,函数的功能是:求出数组周边元素的平均值并作为函数值返回给主函数中的r»例如:若c数组中的值为:197C=452383则返回主程序后r的值应为4.625000请勿改动主函数main与其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句#include#include#include#defineN3doublefun(intb[][N])

27inti,j,k=O;doubler=0.0;for(j=0;jvN;j++)(r+=b[O][j];k++;for(j=0;j

28,for(i=0;i

29H);printf('Theris%lf

30H,r);out=fopen("outfile.dat"/'w,');fclose(out);

31第4套上机考试试题一、填空题请补充fun函数,该函数的功能是将字符串str中的小写字母都改为时应的大写字母,其它字符不变。例如:若输入"Welcome!”,程序输出结果是“WELCOME!”。请勿改动主函数main与其它函数中的任何内容,仅在fun函数的横线上填写所需的若干表达式或语句。#include#include#includechar*fun(charstr[])(intj;for(j=O;str[j];j++)(if((strU]>='a')&&(strU]<='z'))str[j]-=32;}return(str);)main()(charstr[100];printf("

32pleaseenterastring:");gets(str);printf("

33Theresultstringis:

34%s",fun(str));)二、改错题下列给定程序中,函数fun的功能是:计算并输出n以内最大的10个能被11或19整除的自然数之和。n的值由主函数传入,若n的值为300,则函数值为2646。请修改程序中的错误或在横线处填上适当的内容并把横线删除,使程序能得出正确的结果。注意:不要改动main函数,不能增行或删行,也不能更改程序的结构。#include#includeintfun(intn){intm=0,mix=0;while((n>=2)&&(mix<10))(if((n%ll=0)ll(n%19)==0)(m=m+n;mix++;)n-;)returnm;}main()(printf("%d

35",fun(300));}

36三、编程题请编写函数fijn,其功能是:将str所指字符串中除了下标为偶数、同时ASCII值也为偶数的字符外,其余的全部删除;串中剩余字符所形成的一个新串放在s所指的数组中。例如,若str所指字符串中的内容为ABCDEFG123456,其中字符A的ASCII码值为奇数,因此应当删除;其中字符B的ASCH值为偶数,但在数组中的下标为奇数,因此也应当删除:而字符2的ASCII码值为偶数,所在数组中的下标也为偶数,因此不应当删除,其它以此类推。最后s所指的数组中的内容应是246。请勿改动主函数main与其它函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。注意:部分源程序给出如下。#include#include#includevoidfun(char*str,chars[])(inti,j=O,n;n=strlen(str);for(i=0;i

37pleaseenterstring:n);scanf(n%sn,str);fun(str,s);printf(M

38Theresultis:%s

39n,s);out=fopen(,'outfile.dat,,,,,wn);strcpy(str,Mpleaseenterstring:1');fun(str,s);fprintf(oul,"%s”,s);fclose(out);)第5套上机考试试题一、填空题请补充fun函数,该函数的功能是:依次取出字符串中所有大写字母,形成新的字符串,并取代原字符串。例如,输入sdfASDsd,则输出ASD。

40请勿改动主函数main与其它函数中的任何内容,仅在fun函数的横线上填写所需的若干表达式或语句。注意:部分源程序给出如下。#include#includevoidfun(char*s)(intj=O;char*p=s;while(*p)(if(*p>=,A,&&*p<=,Z')|s|j]=*p;j++;}P++;)sOAO';)main()(charstr[100];printf(M

41PleaseInputastring:H);gets(str);printf(u

42

43Theoriginalstringis:%s

44",str);fun(str);printf(M

45

46Thestringofchangingis:%s

47H,str);)二、改错题下列给定程序中,函数fun的功能是:先从健盘上输入一个3行3列矩阵的各个元素的值,然后输出主对角线元素之和。请修改函数fun中的错误或在横线处填上适当的内容并把横线删除,得出正确结果。注意:不要改动main函数,不能增行或删行,也不能更改程序的结构。#includevoidfun()(intaa[3][3],sum;inti,j;sum=0;for(i=0;i<3;i++)for(j=0;j<3;j++)

48scanf("%d",&aa[i][j]);for(i=0;i<3;i++)sum=sum+aa[i][i];printf("sum=%d

49",sum);}main()(fun();)三、编程题请编写一个函数voidfun(int*s,intt,int*resull),用来求出数组的最小元素在数组中的下标,并存放在result所指的存储单元中。例如,输入如下整数:564,165,567,121,948,324,329,454,5345,783,434,124,561,985,555则输出结果为:3,121.请勿改动主函数main与其它函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。注意:部分源程序给出如下。#include#includevoidfiin(int*s,intt,int*result){inttemp,min;min=s[0];for(temp=0;temp

50",result,store[result]);out=fopen("outfile.dat",“w");fprintf(out,"%d

51%dH,result,store[result]);fclose(out);)

52第6套上机考试试题一、填空题给定程序的功能是判断字符串S中的某个字符是否与字符ch相同,若相同什么也不做,若不同则插在字符串的最后。例如,输入test,如果输入e,输出的结果不变,但如果输入a,结果testa。请勿改动主函数main与其它函数中的任何内容,仅在横线上填写所需的若干表达式或语句。注意:部分源程序给出如下。#include#includevoidfun(char*s,charch)(while(*s&&*s!=ch)s++;if(*s!=ch)(s[0]=ch;s[l]=0;))main()(charstr[81],c;printf(n

53Pleaseinputastring:

54M);gets(str);printf(u

55Pleaseenterthecharactertosearch:");c=getchar();fun(stnc);printf("

56Theresultis%s

57",str);)二、改错题下列给定程序中,函数fun的功能是:按顺序给t所指数组中的元素赋予从2开始的偶数。然后再按顺序对每5个元素求一个平均值,并将这些值依次存放在r所指的数组中。若t所指数组中元素的个数不是5的倍数,多余部分忽略不计。例如,t所指数组有14个元素,则只对前10个元素进行处理,不对最后的4个元素求平均值。请修改程序中的错误,得出正确的结果。注意:不要改动main函数,不能增行或删行,也不能更改程序的结构。#include#defineNUM20intfun(double*t,double*r)(intj,i;doublesum;

58for(j=2,i=0;i

59

60Theresult:

61H);forG=0;i

62

63M);1三、编程题请编写一个函数voidfun(intx,intsum,intselect[]),该函数的功能是:将大于整数x且紧靠x的sum个素数存入select所指的数组中。例如,输入:1218,则应输出:127131137139149151157163.请勿改动主函数main与其它函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。注意:部分源程序给出如下。#include

64#includevoidfun(intx,intsum,intselect[])(intr=O,temp,p,sign=1;for(temp=x+1;temp=temp)(if(sum>=0){select[r++]=temp;sum—;}elsebreak;main()intx,y,a[500];FILE*out;printf("

65lnputtwonumber:n);scanf(H%d,%dM,&x,&y);fun(x,y,a);fbr(x=0;x

66H);fun(l21,10,a);out=fopen(,'outfile.dat",,,wn);for(x=0;x<10;x++)fprintf(out,"%d

67",a|x]);fclose(out);

681第7套上机考试试题一、填空题给定程序的功能是计算score中n个人的平均成绩aver,将高于aver的成绩放在high中,通过函数名返回人数。例如,score=88,75,50,60,80,90},n=6时,函数返回的人数应该是4,high={88,75,80,90}o请勿改动主函数main与其他函数中的任何内容,仅在横线上填写所需的若干表达式或语句。注意:部分源程序给出如下。#include#includeintfun(intscore||,intm,inthigh[])(inti,j=0;floataver=0.0;for(i=0;iaver)high[j+4-]=;returnj;)main()(inti,n,high[6];intscore[6]={88,75,50,60,80,90};n=fun(score,6,);printf(M

69Thehighofaveragescoreare:");fbr(i=0;i

70n);二、改错题已知一个数列从第0项开始的前三项分别为0、0、1,以后的各项都是其相邻的前三项之和。下列给定程序中,函数fun的功能是:计算并输出该数列前n项的平方根之和sum。n的值通过形参传入。例如,当n=4时,程序输出结果应为2.000000。请修改程序中的错误,使程序能得出正确的结果。注意:不要改动main函数,不能增行或删行,也不能更改程序的结构。#include#include#includedoublefun(intn)(

71doublesum,a0,al,a2,a;inti;sum=1.0;if(n<=2)sum=0.0;a0=0.0;a1=0.0;a2=1.0;fbr(i=4;i<=n;i4-+)(a=a0+al+a2;sum+=sqrt(a);a0=al;al=a2;a2=a;}returnsum;)main()(intn;printf('InputN=");scanf(M%du,&n);三、编程题学生的记录由学号和成绩组成,M名学生的数据已在主函数中放入结构体数组score中,请编写函数fun,它的功能是把分数最低的学生数据放在low所指的数组中,注意:分数最低的学生可能不只一个,函数返回分数最低的学生的人数。请勿改动主函数main与其它函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。注意:部分源程序给出如下。#include#defineM10typedefstruct{charnum[10];ints;}SCORE;intfun(SCORE*a,SCORE*b)(inti,j=0,n=0,min;min=a[0].s;for(i=0;i

72if(a[i].s==min){*(b+j)=a[i];j++;n++;)returnn;)main()(SCOREstu[M]={{"GA03V76},{“GA04”,85},{“GA01”,91},{“GA08”,64},{“GA06”,87},{“GA014”,91},{”GAO11”,77},{”GAO17M,64),{nGA018”,64},{“GAO16”,72}};SCORElow[M];inti,n;FILE*out;n=fun(stu,low);printf('The%dlowestscore:

73",n);for(i=0;i

74,',low|i].num,low[i].s);printf('^

75,^);out=fopen("outfile.dat,',,,wn);fprintf(out,"%d

76,',n);fbr(i=O;i

77n,low[i].s);fclose(out);)第8套上机考试试题一、填空题请补充main函数,该函数的功能是:从键盘输入3个整数,然后找出最小的数并输出。例如:输入78,53,123,则输出为53。请勿改动主函数main与其它函数中的任何内容,仅在横线上填写所需的若干表达式或语句。注意:部分源程序给出如下。#include#includemain()(intx,y,z,min;printffAnlnputthreenumber:

78M);scanf(,,%d,%d,%dH,&x,&y,&z);printf('Thethreenumbersare:%d,%d,%d

79”,x,y,z);if(xz)min=z;printf("min=%d

80n,min);}

81二、改错题下列给定程序中,fun函数的功能是:分别统计字符串中小写字母和大写字母的个数。例如,给字符串t输入:adfsFFssefSCGSDew,则应输出结果:big=7,small=101.请修改程序中的错误,使它能计算出正确的结果。注意:不要改动main函数,不能增行或删行,也不能更改程序的结构。#include#includevoidfun(char*t,int*c,int*d)(while(*t)(if(*t>='A,&&*t<='Z')(*c)++;if(*t>±a&&*tv='z)(♦d)++;t++;}}main()chart[200];intbig=O,small=O;printf(',

82pleaseinputastring:n);gets(t);fun(t,&big,&small);printf("

83big=%dsmall=%d

84M,big,small);)三、编程题请编一个函数voidfun(inta[M][N],intb[N]),c指向一个M行N列的二维数组,求出二维数组每列中最大元素,并依次放入b所指一维数组中。二维数组中的数己在主函数中赋予。请勿改动主函数main与其它函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。注意:部分源程序给出如下。#include#include#defineM3#defineN4voidfun(inta|M][N],intb[N])(inti,j,max;for(j=0;jvN;j++)(max=a|0]|j];

85for(i=0;imax)max=a[i][j];}b|j|=max;))main()(intc[M][N]={{10,22,15,30},{19,33,45,38},{20,22,66,40}};intp[N],ij,k;FILE*out;printf('Theoriginaldatais:

86u);for(i=0;i

87Theresultis:

88n);for(k=0;k

89H);out=fopen("oulfile.dat",“w");for(k=0;k

90u,p[k]);fclose(out);}第9套上机考试试题一、填空题请补充fun函数,该函数的功能是:从健盘输入一个下标n,把数组a中比元素批足小的元素放在它的左边,比它大的元素放在它的右边,排列成的新数组仍然保存在原数组中。例如,数组a={33,55,66,44,77,22,88,99,ll,10},输入2,则结果输出“33554422111066778899”。请勿改动主函数main与其他函数中的任何内容,仅在fun函数的横线上填写所需的若干表达式或语句。注意:部分源程序给出如下。#include#defineN10voidftin(inta[],intn)

91(inti,j=O,k=O,t;intb[N];t=a[n];for(i=0;it)b|j++]=a[i];if(a[i]

92M);for(i=0;i

93suffixn:");scanf(n%d",&n);fun(a,n);printfCThenewarray:

94n);for(i=0;i

95");}二、改错题下列给定程序中,fun函数的功能是:求a=xx…xx-…・xx-xx-x(此处xx…xx表示n个x,x和n的值在1至9之间)。例如x=3,a=6,则以上表达式为:a=333333-33333-3333-333-33-3其值是296298。X和n是fun函数的形参,表达式的值作为函数值传回main函数。请修改程序的错误,使它能计算出正确的结果。注意:不要改动main函数,不能增行或删行,也不能更改程序的结构。#include#includelongfun(intxjntn)(intj;longa=O,t=1;for(j=O;j<=n;j++)

96t=t*l0+x;a=t;fbr(j=l;j

97'\fun(x,n));)三、编程题请编写函数fun,其功能是:计算并输出:F=l+(1+V2)+(l+V2+V3)+-+(1+V2+-\/3+…y[m)例如,若主函数从键盘给m输入10后,则输出为F=104.478749。请勿改动主函数main与其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。注意:m的值要求大于1但不大于100。部分源程序给出如下。#include#includedoublefun(intm)main()(intm;doublef;FILE*out;printfC^Inputm:");scanf(,,%d,',&m);fcfun(m);printf("

98

99f=%f

100

101",f);oul=fopen("outfile.dal",“w");fbr(m=0;m<10;m++)fprintf(out,"%f

102,,,fun(m+20));fclose(out);

103差第10套#include#includevoidfun(longa,long*b)(intd;longs=l;*b=0;while(a>0)(d=a%10;if(d%2!=0)(*b=d*s+*b;s*=10;)a/=10;))main()(longa,b;printf("

104Pleaseentera:");scanf("%ld”,&a);fun(a,&b);printf('Theresultis:%ld

105M,b);第11套上机考试试题一、填空题请在函数ftin横线上填写表达式,使从键盘上输入一个整数m,输出斐波纳契数列。斐波纳契数列是一种整数数列,其中每个数等于前面两个数之和,例如:0112358……请勿改动主函数main与其他函数中的任何内容,仅在fun函数的横线上填写所需的若干表达式或语句#includeintfun(intm);main()(inti,m=0;scanf(,,%d,',&m);for(i=0;i

106intfun(intm)(if(m=O)return0;elseif(m==l)return1;elsereturnfun(m-1)+fun(m-2);}二、改错题下列给定程序中,函数fun的功能是:通过某种方式实现两个变量值的交换,规定不允许增加语句或表达式.例如变量x中的值原为l,y中的值原为2,程序运行后x中的值为2,y中的值为1。请修改程序中的错误,得出正确的结果。注意:不要改动main函数,不能增行或册I行,也不能更改程序的结构。#include#includeintfun(int*a,intb)(inttemp;temp=*a;*a=b;returntemp;}main()(intx=l,y=2;printf(nx,y%d%d

107n,x,y);y=fun(&x,y);printfC^heresultis%d%d

108M,x,y);1三、编程题请编写一个函数voidfun(char*t,intp口),统计在t字符串中“a”至U“z”26个字母各自出现的次数,并依次放在p所指数组中。例如,当输入字符串sdfssdrefggrthdg后,程序的输出结果应该是:00031231000000000231000000请勿改动主函数main与其它函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。注意:部分源程序给出如下。#include#includevoidfun(char*t,intp[])

109intj;for(j=0;j<26;j++)plj]=O;while(*t)(switch(*t)(case'a':p[O]++;break;case*b':p[l]++;break;case'c*:p[2]++;break;cased:p[3]++;break;case'e':p[4]++:break;caseT:p[5]++;break;case'g':p[6]++;break;case*h':p[7]++;break;case*i':p[8]++;break;case'j':p[9]++;break;case*k*:p[10]++;break;caseT:p[ll]++;break;case7n':p[l2]++:break;case,n':p[13]++;break;case'o':p[14]++;break;case*p*:p[15]++;break;case'q':p[16]++;break;caseY'lpl17|++;break;case's':p[18]++;break;case't':p[19]-H-;break;case'u':p[20]++;break;caseV:p[21]++;break;case,w,:p[22|++;break;case,x':p[23]++;break;casey:p[24]++;break;case,z,:p[25]++;break;1t++;main()(chara[2000];intb[26],i;FILE*out;printfCAnPleaseinputacharstring:**);scanf(M%sH,a);

110fun(a,b);for(i=0;i<26;i++)printf(H%d';b[i]);printfCXn");fun("abosomfriendafterbringsadistantlandnear",b);out=fopen(,'outfile.dat,,,Mw,');for(i=0;i<26;i++)fprintf(out,"%d

111”,b[i]);fclose(out);)第12套上机考试试题一、填空题请补充函数,该函数的功能是求一维数组a[N]的平均值,并对所得结果进行四舍五入保留两位小数.例如,当a[10]={23.1,12.3,5.3,56.4,10.0,13.7,24.5,42,1.2,9.9}时,输出结果为:average=19.840000.请勿改动主函数main与其它函数中的任何内容,仅在fun函数的横线上填写所需的若干表达式或语句。#include#includedoublefun(doublea[10])(inti;longtemp;doubleaverage=0.0;doublesum=0.0;fbr(i=0;i<10;i++)sum+=a[i];average=sum/10;average=average*1000;temp=(average+5)/10;average=(double)temp/100;returnaverage;)main()(doubleaverage,a[l0]={23.1,12.3,5.3,56.4,10.0,13.7,24.5,42,1.2,9.9};inti;printf(AnThedata:

112H);for(i=0;i<10;i++)printf(u%6.1f;a[i]);printf(M

113

114");average=fun(a);printf('Theaverage=%f

115

116",average);

117)二、改错题下列给定程序中fun函数的功能是:将n个无序整数从小到大排列。请修改程序中的错误,得出正确的结果。注意:不要改动main函数,不能增行或删行,也不能更改程序的结构。#include#include#includefun(intn,int*b)(inti,j,p,t;for(j=O;jb[i])P=i;if(p!=j){t=b(j];b[j]=b[p];b[p]=t;}))putarr(intn,int*z)(inti;for(i=l;iv=n;i++,z++)(printf(n%4d",*z);if(!(i%10))printfCAn1');}printf(',

118n);1main()(inta[10]={0,4,2,8,6},n=5;printf(M

119

120Beforesorting%dnumbers:

121M,n);putarr(n,a);fun(n,a);printf(n

122Aftersorting%dnumbers:

123M,n);putarr(n,a);

124)三、编程题编写函数fun,函数的功能是:根据以下公式计算,计算结果作为函数值返回。5=1+——++…+请勿改动主函数main与其它函数中的任何1+21+2+31+2+3+…〃内容,仅在函数fun的花括号中填入所编写的若干语句。注意:部分源程序给出如下。#include#include#includefloatfun(intn)(intk;floatstr=1.0,sum=1.0;fbr(k=2;k<=n;k-H-)(sum=sum+k;str=str+l/sum;)returnstr;}main()(intn;floatstr;FILE*out;printf("

125Pleaseinputtheintegern:");scanf("%d”,&n);str=fun(n);printf('Theresultis:%f

126M,str);str=fun(10);out=fopen("outfHe.dat","w");fprintf(out,"%F',str);fclose(out);}第13套上机考试试题一、填空题请补充fun函数,该函数的功能是:分类统计一个字符串中元音字母和其它字符的个数(不区分大小写)。例如,输入UdsaeyiEosu,结果为A:1E:2I:I0:1U:2other:4。请勿改动主函数main与其它函数中的任何内容,仅在fun函数的横线上填写所需的若干表

127达式或语句。注意:部分源程序给出如下。#include#include#defineN100voidfun(char*s,inta[]){char*r=s;inti=0;fbr(i=0;i<6;i++)a[i]=0;while(*r){switch(*r){case'A1:case,a,:a[0]++;break;case*E*:case'e*:a[l]++;break;case11:case,i':a[2]-H-;break;case'O':case'o':a[3]++;break;case'U':case\i,:a[4]++;break;default:a[5]++;}r++;)1main()(chars[N],yy[5]=',AEIOUM;inti;inta[6];printf(nPleaseinputasingtocountAn");gets(s);printf('Thesingis:

128M);puts(s);fun(s,a);fbr(i=0;i<5;i++)printf(M

129%c:%d,',yy[i],a[i]);printf(,f

130other:%d

131';a[i]);

132二、改错题假定整数不重复数列{99,2,6,1,3,4,・1}中的数存放在整数s中。下列给定程序中,函数fun的功能是:删除数列中值为a的元素,同时将其它元素前移。sum中存放的是数列中元素的个数。请修改程序中的错误,得出正确的结果。注意:不要改动main函数,不能增行或删行,也不能更改程序的结构。#include#defineM100fun(int*x,intsum,inta)(inttemp=0,j;x[sum]=a;while(a!=x[temp])temp=temp+l;if(temp==sum)(return-1;)else{for(j=temp;j

133");fbr(j=0;j

134Pleaseinsertdatawanttodeleted:1');scanf(,'%d,',&a);printf(,,Delete:%d

135M,a);sum=fun(s,sum,a);if(sum=="l){printf(H***Notbefound!***

136

137");)elseprintf('Thearrayafterdelete:

138");for(j=O;j

139

140M);

141三、编程题请编写一个函数voidfun(charorig[],charresult[],intfig),其功能是:删除一个字符串中指定下标的字符。其中,orig指向原字符串,删除后的字符串存放在result所指的数组中,fig中存放指定的下标。例如:输入一个字符串:HelloWorld,然后输入4,则调用该函数后的结果为:HellWorldo请勿改动主函数main与其它函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。#include#include#defineNUM100voidfun(charorig[],charresult[],intfig)(intn,m=0;for(n=0;n

142M);gets(sl);printf('Inputwanttodelectd:11);scanf(H%d",&ng);fun(sl,s2,flg);printf('Theresultis:%s

143H,s2);fun("testString'1,s2,9);out=fopen("outfile.dat",“w");fprintf(out,"%s",s2);fclose(out);第14套上机考试试题一、填空题s是全部由小写字母字符和空格字符组成的字符串,由len传入字符串的长度,请补充fun函数,该函数的功能是:统计字符串s中的单词数,结果由变量len传回。每个单词之间都由空格隔开,并且字符串s开始不存在空格。例如,s="welcomewelcome”,结果为:len=2。请勿改动主函数main与其它函数中的任何内容,仅在fun函数的横线上填写所需的若干表达式或语句。注意:部分源程序给出如下。#include

144#defineM100voidfun(char*s,int*len)(intj,n=O;for(j=0;j<*len;j-H-)if(s[j]>=,a,&&s|j]<,z,&&s|j+l]=''HsU+l^O*)n++;*len=n;)main()(chars[M];intlen=0;printf(,rEnterastring:

145H);gets(s);while(s[len|)len++;fun(s,&len);printf('Thelenberofwordis:%d

146

147M,len);)二、改错题下列给定程序中函数fun的功能是:用选择法对数组中的n个元素按从小到大的顺序进行排序。请修改程序中的错误,使它能计算出正确的结果。注意:不要改动main函数,不能增行或删行,也不能更改程序的结构。#include#defineM100voidfiin(intsort[],intn)(inti,j,temp,p;fbr(j=0;j

148(intsort[M]={23,3,67,-2,9,-6,27,12},i,num=8;printf("Beforesort:*');for(i=0;i

149n);fun(sort,num);printf("aftersort");fbr(i=O;i

150H);}三、编程题请编写一个函数fun,它的功能是:计算并输出给定整数m的所有因子(不包括1与自身)之和。规定m的值不大于1000例如,若主函数从键盘给m输入的值为111,则输出为sum=40。请勿改动主函数main与其它函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。注意:部分源程序给出如下。#includeintfiin(intm)(intsum=0,i;for(i=2;i<=m-1;i++)if(m%i==0)sum+=i;returnsum;}main()(intn,num;FILE*out;printf(HInputn:n);scanf(n%dn,&n);num=fun(n);printf(,,num=%d

151'

152um);out=fopen(',outfile.dat,',,,wn);fprintf(out,"%d

153",fun(123));fprintf(out/'%d

154n,fun(456));fprintf(out;,%d

155",fun(789));fclose(out);)

156第15套上机考试试题一、填空题S是一个由数字和字母字符串组成的字符串,由变量len传入字符串长度。请补充fun函数,该函数的功能是把字符串s中的数字字符转换成数字并存放到整型数组a中,函数返回数组a的长度。例如,s="Abcl23e456hui7890”,结果为:1234567890。请勿改动主函数main与其它函数中的任何内容,仅在fun函数的横线上填写所需的若干表达式或语句。注意:部分源程序给出如下。#include#defineM80inta[M];intfun(chars[],inta||,intlen)(intj=0,m=0;for(j=0;j=,0,&&s[j|<=<9,)(a[m]=sLj]-'O';m++;)returnm;}main()(chars[M];intlen=0,m,j;printf("Pleaseinputastring:

157");gets(s);while(s[len])len++;m=fun(s,a,len);printf(u

158Theresultstring:n);for(j=0;j

159H);二、改错题下列给定程序中,函数fun的功能是:在字符串s中找出ASCII码值最小的字符,将其放在第一个位置上;并将该字符前的原字符向后顺序移动。例如,调用ftin函数之前给字符串输入:asdfEiopr,调用后字符串中的内容为:Easdfiopr。请修改程序中的错误,使程序能得出正确结果。注意:不要改动main函数,不能增行或删行,也不能更改程序的结构。#includevoidfunction(char*str)

160(charMIN,*temp;intn=0;MIN=str[n];while(str|n]!=O)(if(MIN>str[n]){MIN=str|n];temp=str+n;)n++;}while(temp>str)(*temp=*(temp-l);temp—;)str[0]=MIN;)main()(chars[100];printf(Inputastringtomove:**);gets(s);printf(H

161Thestringyourinter:n);puts(s);function(s);printf("

162Thestringaftermoving:'1);puts(s);printf(',

163

164n);三、编程题请编写函数fun,它的功能是:求Fibonacci数列中大于-a(a>3)的最小的一个数,结果由函数返回。其中Fibonacci数列F(n)的定义为:F(0)=0,f(l)=lF(n)=F(m-l)+F(m-2)例如,当a=500时,函数值为610。请勿改动主函数main与其它函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。注意:部分源程序给出如下。#include#include#include

165intfun(inta)(intx=l,y=l,z=0,i;fbr(i=4;i<=au-H-){if(z

166M,m,fun(m));out=fopen("outfile.dat',,,,w,');for(m=500;m<3000;m+=500)fprintf(out,"%d

167”,fun(m));fclose(out);)第16套上机考试试题一、填空题从健盘输入一组无符号整数并保存在数组a[M]中,以整数0结束输入,要求这些数的最大位数不超过4位,其元素的个数通过变量len传入fun函数。请补充fun函数,该函数的功能是:从数组a中找出个位和十位的数字之和小于5的所有无符号整数,结果保存在数组b中,其个数由fun函数返回。例如当a[8]={123,11,23,222,42,333,14,5451}时,x[2]={11,22)«请勿改动主函数main与其它函数中的任何内容,仅在fun函数的横线上填写所需的若干表达式或语句。注意:部分源程序给出如下。#include#defineM500intfun(inta[],intx[],intlen)(intj,m=0;intt,s;fbr(j=0;j

168t=a|j]%10;s=a(j|/10%10;if((t+s)<5)x|m++]=a|j|;)returnm;)main()(inta[M];intb[M];intlen=0,m=0,j=0;printf('Inputlenber:

169u);do(scanf(M%uM,&a[len]);}while(a[len++]!=0);m=fun(a,b,len);printf(',

170b=");for(j=0;jhigh,查找结束。请修改程序中的错误,得出正确的结果。注意:不要改动main函数,不能增行或删行,也不能更改程序的结构。#include#defineM5intfun(intb[],intn)(intlow=0,high=M-l,mid;while(low<=high)(mid=(low+high)/2;if(n

171elseif(n>b[mid])low=mid+l;elsereturn(mid);)return(-l);}main()(inti,b[M]={9,13,45,67,89},j,n;printf("b数组中的数据如下:");for(i=0;i=0)printf("n=%d,index=%d

172'

173,j);elseprintf("Notbefound!

174u);)三、编程题请编一个函数floatfun(doublec),函数的功能是对变量c中的值保留2位小数,并对第三进行四舍五入(规定c中的值为正数)。例如,若c值为1.234,则函数返回1.230000;若c值为1.235,则函数返回1.240000。注意:部分源程序给出如下。请勿改动主函数main与其它函数中的任何内容,仅在fun函数的花括号中填入所编写的若干语句。#include#includefloatfun(floatc))main()(floata;FILE*out;printf("Entera:");scanf(M%f\&a);printf('Theoriginaldatais:1');printf('Theresult:%f

175",fun(a));out=fopen(,'outfile.dat,',,,wn);

176fprintf(out,n%fn,fun(3.141593));fclose(out);}第17套上机考试试题一、填空题请补充main函数,该函数的功能是:从一个字符串中截取前面若干个给定字符数的子字符串。其中,si指向原字符串,截取后的字符串存放在s2所指的字符数组中,n中存放预截取的字符个数。例如,当sl="xsdfgehrt”,然后输入5,则s2="xsdfg”。仅在横线上填写所需的若干表达式或语句,请勿改动函数中的其它任何内容。注意:部分源程序给出如下。#include#include#defineN100main()(charsl[N],s2[N];intn,i;printf(,FEnterthestring:

177");gets(sl);printf(MEnterthepositionofthestringdeleted:'1);scanf(M%d,',&n);for(i=0;i

178M,s2);)二、改错题下列给定程序中,函数fun的功能是根据整型形参n,计算如下公式的值:2x23x34x4nxn例如,若n中的值为5,则应输出1.463611。请修改程序中的错误,得出正确的结果。注意:不要改动main函数,不能增行或删行,也不能更改程序的结构。#include#includedoublefun(intn)(doublex=l.0;inti;for(i=2;i<=n;i++)x+=1.0/(i*i);return(x);)main()

179(intn=5;printf(n

180Theresultis%lf

181'\fun(n));}三、编程题编写函数fun,它的功能是计算并输出下列级数数和:„111F=1F1x22x3m(m+1)例如,当m=5时,函数值为0.833333。请勿改动主函数main与其它函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。注意:部分源程序给出如下。#include#includedoublefun(intm)(doublef=0.0;inti;fbr(i=l;i<=m;i++)f=f+1.0/(i*(i+l));returnf;main()(inti;FILE*out;printf("%f

182”,fum5));oul=fopen(”outfile.dat",“w");for(i=0;i<10;i++)fprintf(out,"%nn”,fun⑴);fclose(out);第18套上机考试试题一、填空题请补充main函数,该函数的功能是:从字符串s中取出所有数字字符,并分别计数,把结果保存在数组a中并输出,把其它字符保存在a[10]中。例如:当strl="12312300abc8976542”时,结果为0:21:22:33:24:15:16:17:18:19:1othercharacter:31.仅在横线上填写所需的若干表达式或语句,请勿改动函数中的其它任何内容。注意:部分源程序给出如下。#include

183#includemain()(intj,a[ll];char*s="adfsdasa1232312323";char*t=s;printf('Theorigialdatais:

184M);puts(s);for(j=0;j

185n);for(j=0;j<10;j++)printf(',

186%d:%d',,j,a[j]);printf(H

187nothercharacter:%d

188'\a[j]);二、改错题下列给定程序中,函数fun的功能是:从str所指字符串中,找出s所指子串的个数作为函数值返回。例如,当str所指字符串中的内容为asdfghasdfgh,s所指字符串的内容为as,则函数返回整数2。请修改程序中的错误,得出正确的结果。注意:不要改动main函数,不能增行或删行,也不能更改程序的结构。#include#include#includeintfun(char*str,char*s)

189{intm;char*p,*r;m=0;while(*str)(p=str;r=s;while(*r)if(*r==*p){r++;P++;)else{break;)ifg=Mr)m++;str++;returnm;)main()(charstr[100],s[100];intn;printf(M

190Pleaseenterstringstr:M);scanf(M%sM,str);printf(n

191Pleaseentersubstrings:H);scanf("%s”,s);n=fun(str,s);printf("

192Theresultis:n=%d

193M,n);}三、编程题编写函数ftin,它的功能是:根据以下公式求的值,结果由函数值带回。m与n为两个正整数且要求m>nop=-■■nl^n-ny.例如:m=10,n=5时,运行结果为252.000000。请勿改动主函数main与其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。

194注意:部分源程序给出如下。#include#includefloatfun(intm,intn)(floatresult,temp=1.0;inti;for(i=l;i<=m;i++)temp=temp*i;result=temp;fbr(temp=1.0,i=l;i<=n;i-H-)temp=temp*i;result=result/temp;fbr(temp=l.0,i=l;i<=m-n;i4-+)temp=temp*i;result=result/temp;returnresult;)main()(FILE*out;printf(',Result=%f

195,,,fun(10,5));out=fopen(',outfile.dat,',MwM);fprintf(out,"%r,fun(12,6));fclose(out);)第19套上机考试试题一、填空题请补充fun函数,该函数的功能是:先将在字符串str中的字符串按逆序存放在t中,然后把str中的字符按正序连接到t的后面。例如,str中的字符串为abc时,则t中的字符串应为cbaabco请勿改动主函数main与其他函数中的任何内容,仅在fun函数的横线上填写所需的若干表达式或语句。注意:部分源程序给出如下。#include#include#includevoidfun(char*str,char*t)(intn,i;n=strlen(str);fbr(i=0;i

196t[n+i]=str[i];t[2*n]=\0';}main()(charstr[100],t[100J;printf("

197Pleaseenterstring:'*);scanf(M%s",str);fun(str,t);printf(*Theresultis:%s

198",t);)二、改错题下列给定程序中,函数fun的功能是:在字符串的最前端加入n个“*”号,形成新串,并且覆盖原串。注意:字符串的长度最长允许为79。请修改函数fun中的错误,得出正确的结果。注意:不要改动main函数,不能增行或删行,也不能更改程序的结构。#include#include#includevoidfiin(charstr[],intn)chara[80],*p;inti;p=str;fbr(i=O;i

199Thestring%s

200",str);printf(n

201Entern(numberof*):");scanf(,'%d,',&n);

202fun(str,n);printfCAnThestringafterinsten%s

203M,str);)三、编程题编写函数fun,该函数的功能是:从字符串中删除指定的字符。同-字母的大、小写按不同字符处理。例如:若程序执行时输入字符串为:justatest,从键盘上输入字符3则输出后变为:jusaes。如果输入的字符在字符串中不存在,则字符串照原样输出。请勿改动主函数main与其它函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。#include#include#includevoidfun(chars[],inta)(inti=0;char*p;p=s;while(*p)if(*p!=a)(s[i]=*p;i++;}p++;)s[i]=、0’;)main()(staticcharstr[]=Mjustatest'1;charch;FILE*out;printf("originalstring:%s

204'\str);printf(,rPIeaseinputacharacter:n);scanf("%cM,&ch);fun(str,ch);printf(',str[]=%s

205,,,str);strcpy(str/*justatest1');funCstr/a');out=fopen(,'outfile.dat,,,,,w,');fprintf(out,"%s",str);

206fclose(out);)第20套上机考试试题一、填空题请补充fun函数,该函数的功能是:用来求出数组的最小元素在数组中的下标并存放在k所指的存储单元。例如:输入如下整数:121,333,444,111,555,666,980,431,451,343,则输出结果为:111,3。请勿改动主函数main与其它函数中的任何内容,仅在fun函数的横线上填写所需的若干表达式或语句。注意:部分源程序给出如下。#include#includevoidfun(int*s,intt,int*i)(intj,min;min=s|0];for(j=0;j

207",a[i],i);)二、改错题下列给定程序中,函数fim的功能是:求出两个非零正整数的最大公约数,并作为函数值返回。例如,若给n和m分别输入27和81,则输出的最大公约数为27.请修改程序中的错误,得出正确的结果。注意:不要改动main函数,不能增行或删行,也不能更改程序的结构。#includeintfun(inta,intb)(intr,temp;if(a

208b=temp;)r=a%b;while(r!=0)(a=b;b=r;r=a%b;}return(b);)main()(intn,m,a;printf('Inputnm:");scanf(n%d%d';&n,&m);printf(Hn=%dm=%d

209

210',,n,m);a=fun(n,m);printf('Themaximuncommondivisoris%d

211

212*',a);}三、编程题下列程序定义了NXN的二维数组,并在主函数中自动赋值。请编写函数fun(intb[][N]),该函数的功能是:使数组左下半三角元素的值会全部置成0。请勿改动主函数main与其它函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。注意:部分源程序给出如下。#include#include#include#defineN3voidfun(intb[][N])(inti,j;for(i=0;i

213for(j=0;j

214u);)fun(b);printf('THERESULTXn");for(i=0;i

215u);}for(i=0;i

216");)fclose(out);)第21套上机考试试题一、填空题数组a[N]保存着一组3位数的无符合正整数,其元素的个数通过变量len传入fun函数。请补充fun函数,该函数的功能是:从数组a中找出个位和百位的数字相等的所有无符合整数,结果保存在数组yy中,其个数由fun函数返回。例如:当a[6]={111,323,677,456,987,999}时,b[3]={111,323,999)«请勿改动主函数main与其它函数中的任何内容,仅在fun函数的横线上填写所需的若干表达式或语句。注意:部分源程序给出如下。#include#include#defineN500intfiin(inta[],intbb[],intlen)(inti,n=0;

217intg,b;for(i=0;i

218M);fbr(i=O;i

219

220

221");n=fun(a,b,len);printf(,,

222b=,');for(i=0;i

223");)二、改错题下列给定程序中,函数fun的功能是:逐个比较x、y两个字符串对应位置中的字符,把ASCII相等或值小的字符依次存放在z数组中,形成一个新的字符串。例如,若x中的字符串为AbceDEfGy中的字符串为ABdefgC,则z中的字符串应为ABceDEC.请修改程序中的错误,得出正确的结果。注意:不要改动main函数,不能增行或删行,也不能更改程序的结构。#include#includevoidfun(char*a,char*b,char*z)(inti=0;while(*all*b)(if(*a>*b)z[i]=*b;elsez[i]=*a;

224if(*a)a++;if(*b)b++;i++;))main(){charx[10]="AbceDEfG",y[10]="ABdefgC",z[80]={\0'};fun(x,y,z);printf('Thestringx:");puts(x);printf('Thestringy:");puts(y);printf('Theresult:");puts(z);}三、编程题请编写一个函数unsigned(unsignedn),n是一个大于10的无符号整数,若n是m(m22)位的整数,则函数求出n的后m-1位的数作为函数值返回。例如,n值为1234,则函数返回234。请勿改动主函数main与其它函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。#include#includeunsignedfun(unsignedm)(unsignedt,s=O,sl=l,p=O;t=m;while(t>IO)(if(t/10)p=t%10;s=s+p*sl;sl=sl*10;t=t/IO;)returns;)main()(unsignedn;FILE*out;

225printf('Enteraunsignedintegerdata:n);scanf("%u",&n);printf('Theoriginaldatais:%u

226M,n);if(n<10)printf("Dataerror'1);elseprintf('Theresult:%u

227o,fun(n));out=fopen(,,outfile.dat,',,,wn);fprintf(out,M%u'\fun(28));fclose(out);)第22套上机考试试题一、填空题请补充fun函数,该函数的功能是:把一个整数转换成字符串,并倒序保存在字符数组s中。例如,当n=123时,s="321”。请勿改动主函数main与其它函数中的任何内容,仅在fun函数的横线上填写所需的若干表达式或语句。注意:部分源程序给出如下。#include#include#defineM80chars[M];voidfun(longintn)intj=0;while(n>0){sU]=n%10+'0‘;n/=10;j++;)sUJ=W;)main()(longintn=1234567;printf('Theorigialdata:

228u);printf(',n=%ld,',n);fun(n);printf(',

229%s

230,,,s);}二、改错题下列给定的程序中,函数fun的功能是:将str所指字符串中的字母转换为按字母序列的后继字母(Z转换A,z转换为a),其它字符不变。请修改函数fun中的错误,得出正确的结果。

231注意:不要改动main函数,不能增行或删行,也不能更改程序的结构。#include#include#includevoidftin(char*str)(while(*str!=O)(if(*str>=,A,&&*str<=,Z,ll*str>='a,&&*str<=,z,)(if(*str=,Z,)*str='A';elseif(*str=='zr)*str=,a,;else*str+=l;)str++;))main()charstr[80];printfC'VnEnterastringwithlength<80.:n);gets(str);printf(u

232Thestring:**);puts(str);fun(str);printf("

233

234Thecorde:'*);puts(str);)三、编程题请编写一个函数fun(char*str)该函数的功能是把字符串中的内容逆置。例如,字符串中原有的字符串为asdfg,则调用该函数后,串中的内容为gfdsa。请勿改动主函数main与其它函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。注意:部分源程序给出如下。#include#include#include#defineN100voidfun(char*str)(charch;inti,m,n;i=0;

235m=n=strlen(str)-1;while(i<(n-i-l)/2)(ch=str[i];str[i]=str[m];str[m]=ch;i++;m-;))main()(chara[N];FILE*out;printff'Enterastring:");gets(a);printf('Theoriginalstringis:");puts(a);fun(a);printfCAn'1);printf('Thestringaftermodified:");puts(a);strcpy(a,"Welcome!”);fun(a);out=fopen("outfile.dat","w");fprinlf(out,"%s”,a);fclose(out);)第23套上机考试试题一、填空题请补充main函数,该函数的功能是求方程ax2+bx+c=0的两个实数根。方程的系数a、b、c从键盘输入,如果判别式(disc=b*b-4*a*c)小于0,则要求重新输入a、b、c的值。例如,当a=2,b=l,c=3时,显示:disc=-13000000,Inputagain!;当a=l,b=2,c=l时,输入方程的两个根分别是:xl=-1.00,x2=-1.00o仅在横线上填写所需的若干表达式或语句,请勿改动函数中的其它任何内容。注意:部分源程序给出如下。#include#includemain()(doublea,b,c,disc,xl,x2;

236do(printf('Inputa,b,c:H);disc=b*b-4*a*c;if(disc<0)printf(,,disc=%lf

237Inputagain!

238",disc);)while(disc<0);printf('Theresultis

239H);x1=(-b+sqrt(disc))/(2*a);x2=(-b-sqrt(disc))/(2*a);printf(u

240xl=%6.21f

241x2=%6.2lf

242",xl,x2);)二、改错题下列给定程序中。fun函数的功能是:将q所指字符串中每个单词的最后一个字母改成大写(这里的“单词”是指由空格隔开的字符串)。例如,若输入:Goodluck,goodluck!则应输出:GooDluck,goodluck!请修改程序中的错误之处,得出正确的结果。注意:不要改动main函数,不能删行,也不能更改程序的结构。#include#include#includevoidfun(char*q)(inti=0;fbr(;*q;q++)if(i)(if(*q=='1){i=0;*(q-1)=toupper(*(q-1));}}else|i=l;))main()(

243chars[64];intd;printf(H

244Pleaseenteranenglishsentencewithin63letters:*');gets(s);d=strlen(s);s[d+l]='s[d+l]=O;printf("

245

246Beforchanging:%s

247",s);fun(s);printf(n

248Afterchanging:%s

249u,s);)三、编程题编写程序,实现矩阵(3行3歹U)的转置(即行列互换)。例如,若输入下面矩阵:123456789则程序输出:147258369请勿改动主函数main与其它函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。注意:部分源程序给出如下。#include#includevoidfun(inta[3][3])(inti,j,temp;for(i=0;i<3;i-H-)for(j=0;j

250for(i=0;i<3;i++)(for(j=0;j<3;j++)printf("%7d",a[i]U]);printf("

251");}fun(a);printf("Converteda:

252");out=fopen("outfile.dat","w");for(i=0;i<3;i-H-)(for(j=0;j<3;j++){printf("%7d",a[i]|j]);fprintf(out,"%7d",a[i][j]);)printf("

253");fprintf(out,"

254");)fclose(out);)第24套上机考试试题一、填空题请补充main函数,该函数的功能是:先以只写方式打开文件file.dat,再把字符串s中的字符保存到这个磁盘文件中。仅在横线上填写所需要的若干表达式或语句,请勿改动函数中的其它任何内容。注意:部分源程序给出如下。#include#include#defineN100main()(FILE*f;inti=0;charch;chars[N]="Welcome!M;if((f=fopen(,,file.dat,,;,wM))==NULL)(printf("cannotopenfile.dat

255");exit(O);)while(s[i])(ch=s[i];

256fputc(ch.f);putchar(ch);i++;)fclose(f);)二、改错题下列给定程序中,函数ftm的功能是:求三个数的最小公倍数。例如,给变量a、b、c分别输入15、11、2,则输出结果应当是330。请修改程序中的错误,得出正确的结果。注意:不要改动main函数,不能增行或删行,也不能更改程序的结构。#includeintfiin(intx,inty,intz)(inti,temp,n,m;i=0;temp=m=n=l;while(temp!=0llm!=0lln!=0)(i=i+l;temp=i%x;m=i%y;n=i%z;)returni;main()(inta,b,c,i;printf('Inputabc:*');scanf(H%d%d%d';&a,&b,&c);printf(',a=%d,b=%d,c=%d

257',,a,b,c);i=fun(a,b,c);printf('Theminimalcommonmultipleis:%d

258n,i);)三、编程题编写函数fun,它的功能是:利用以下所示的简单迭代方法求方程cos(y)・y=0的一个实根。yn+l=cos(yn)迭代步骤如下:(D取yi初值为00。⑵yO=yl,把yl的值赋给y0。(3)yl=cos(yO),求出一个新的yl。(4)若ydyl的绝对值小于0.000001,则执行步骤(5),否则执行步骤(2)。⑸所求yl就是方程cos(x)-y=0的一个实根,作为函数值返回。

259程序将输出结果Result=0.739085o请勿改动主函数main与其它函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。注意:部分源程序给出如下。#include#include#includefloatfun()(floatyl=O.O,yO;do(yO=yl;yl=cos(yO);}while(fabs(y0-y1)>=le-6);returnyl;)main()(FILE*out;floatcos=fun();printf(',Result=%f

260,',cos);out=fopen("outfile.datfprintf(out,"%fn,cos);fclose(out);第25套上机考试试题一、填空题请补充main函数,该函数的功能是:计算两个自然数nl和n2(n2<100000)之间所有数的和,nl和n2从键盘输入。例如,当nl=l,n2=100时,sum=5050o仅在横线上填写所需的若干表达式或语句,请勿改动函数中的其它任何内容。注意:部分源程序给出如下。#include#includemain()(intnl,n2;longsum;sum=0;printf(nPleaseinputtwonumbersnl,n2

261M);scanf(M%d,%d,\&nl,&n2);while(nl<=n2)(sum+=n1;

262nl++;)printf(,,sum=%ld

263,',sum);}二、改错题下列给定程序中,函数fun的功能是:将str所指字符串的正序和反序进行连接,形成一个新串放在s所指的数组中。例如,当str所指字符串为abc时,则s所指字符串中的内容应为abccbao请修改程序中的错误,得出正确的结果。注意:不要改动main函数,不能增行或删行,也不能更改程序的结构。#include#include#includevoidfun(char*str,char*s)(inti,n;n=strlen(str);fbr(i=0;i

264Theresultis:%s

265'*,s);)三、编程题请编写一个函数fun,它的功能是:根据以下公式求“的值(要求满足精度0.0005,即某项小于0.0005时停止迭代):n11x2x3Ix2x3x…x〃—=]+—++•••+233x5x73x5x7x---x(2/z-1)程序运后,如果输入精度0.0005,则程序输出为3.140578。请勿改动主函数main与其它函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。注意:部分源程序给出如下。#include#includedoublefun(doublee)

266(doubles;floatn,t,pi;t=l;pi=0;n=L0;s=1.0;while((fabs(s))>=e)(pi+=s;t=n/(2*n+l);s*=t;n++;1pi=pi*2;returnpi;}main()(doubley;FILE*out;printf(uInpute:M);scanf("%lf\&y);printf(n

267e=%lfPI=%lf

268,,,y,fun(y));out=fopen("outfHe.dat",“w");fprintf(out,ne=%lf,PI=%lt

269';0.00003,fun(0.00003));fclose(out);)第26套上机考试试题一、填空题请补充fun函数,该函数的功能是把数组a中的数按从大到小排序。数组的值及元素个数从主函数中输入。例如,输入213,结果为321«请勿改动主函数main与其它函数中的任何内容,仅在fun函数的横线上填写所需的若干表达式或语句。注意:部分源程序给出如下。—•、填空题#include#defineN100voidfun(inta|]jntn)(inti,j,t;fbr(i=0;i

270(t=a[j];a[j]=a|j+l];a[j+l]=t;)}main()(inti=0,n=0;inta[N];printf(''Pleaseinputnumberofdata:'*);scanf(,'%d,',&n);print在“Pleaseinputdata:

271u);while(i

272H);二、改错题下列给定程序中,函数fun的功能是:依次取出字符串中所有字母字符,形成新的字符串,并取代原字符串。请修改函数fun的错误,得出正确的结果。注意:不要改动main函数,不能增行或删行,也不能更改程序的结构。#include#includevoidfun(char*t)(intm,n;for(m=0,n=0;t[m]!=W;m++)if(t[n]>='O'&&t[m]>=,a,&&t[m]<=,z,)t[n++l=t|m];t[n]=^';)main()(chara[40];

273printf(M

274Enterastring:*');gets(a);printf(',

275

276Thestringis:%s

277'\a);fun(a);printfC^nVnThestringofchangingis:%s

278n,a);}三、编程题请编写一个函数fun,它的功能是:将s所指字符串中所有下标为奇数位置上的字母转换为小写(若该位置上下是字母,则不转换)。例如,若输入ABClbCABCabc,则应输出AbClbcAbCabCo请勿改动主函数main与其它函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。注意:部分源程序给出如下。#include#include#includevoidfiin(char*s)(inti,n;n=strlen(s);fbr(i=l;i='A'&&s[i]<=,Z,)s[i]=s[i]+32;)main()(charstr[101];FILE*out;printf(H

279Pleaseenteranstringwithin100characters:1');gets(str);printfC^VnAfterchanging,thestring:%s

280*',str);fun(str);printf(',

281become:%s

282,,,str);out=fopen("outfile.dat",nw");strcpy(str,"Pleaseenteranstringwithin80characters:n);fun(str);fprimf(out,”%s”,str);fclose(out);第27套上机考试试题

283一、填空题请补充main函数,该函数的功能是:从键盘输入一组字符串,以“0”结束输入,并显示出这个字符串。例如,输入abcdefi),结果显示abcdefo仅在横线上填写所需的若干表达式或语句,请勿改动函数中的其它任何内容。注意:部分源程序给出如下。一、填空题#include#defineLEN100main()(inti=-l,j=0;chars|LEN|;printf(Inputastring:");do(i++;scanf(M%cM,&s[i]);}while"[i]!='()*);printf("Displaythestring:

284M);while(j#include#includetypedefstructa(intdata;structa*next;}NODE;intfun(NODE*h)(intsum=O;

285NODE*p;p=h->next;while(p!=NULL){if(p->data%2==0)sum+=p->data;p=p->next;)returnsum;}NODE*link(intn)(NODE*h,*p,*s;inti;h=p=(NODE*)malloc(sizeof(NODE));fbr(i=l;idata=rand()%16;s->next=p->next;p->next=s;p=p>>next;)p->next=NULL;returnh;printlink(NODE*h)(NODE*p;p=h->next;printf(n

286

287THELIST:

288

289HEAD");while(p)(printf(M->%dM,p->data);p=p->next;)printf("

290");}main()(NODE*head;intsum;head=link(5);printlink(head);sum=fun(head);printf(u

291TheresultSUM=%dM,sum);

292printf(n

293n);}三、编程题请编写一个函数fun,它的功能是:求出一个2XM整型二维数组中最小元素的值,并将最小值返回调用函数。请勿改动主函数main与其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。注意:部分源程序给出如下。#include#defineN3fun(inta[][N])(inti,j,min;min=a[O][O];for(i=0;iv2;i++)for(j=0;j

294,',fun(arr));out=fopen("outfile.dal”Jw");fprintf(out,"min=%d'\fun(arr));fclose(out);1第28套上机考试试题一、填空题请补充main函数,该函数的功能是:把字符串strl中的非空格字符拷贝到字符串str2中。例如,若字符串strl="nicetomeetyou!”,贝lj拷贝后的字符串str2=44nicetomeetyou!Mo仅在横线上填写所需的若干表达式或语句,请勿改动函数中的其它任何内容。注意:部分源程序给出如下。#include#defineLEN80main()(staticcharsi[LEN]=HJustatest!1*;chars2[LEN];inti=0j=0;printf(',sl:H);puts(sl);while(sl[i])(

295if(sl[i]!=')s2|j++]=sl[i];i++:)printf("

296s2:");for(i=0;i

297H);二、改错题下列给定程序中,函数fun的功能是:将字符串str中位于奇数位置的字符或ASCII码为偶数的字符依次放入字符串s中。例如,字符串中的数据为AABBCCDDEEFF,则输出应当是ABBCDDEFFo请修改函数ftm中的错误,得出正确的结果。注意:不要改动main函数,不能增行或删行,也不能更改程序的结构。#include#include#include#defineN100voidfun(char*str,chars[])(inti,j=0;for(i=0;i<(int)strlen(str);i4-4-)if(i%2llstr[i]%2==0)s[j++]=str[i];s[j]=W;)main(){charstr[N],s[N];printf("

298Pleaseenterstrings:n);gets(str);fun(str,s);printf("

299Theresultis:%s

300n,s);三、编程题请编写函数fun,其功能是:将两个两位数的正整数x、y合并成一个整数放在z中。合并的方式是:将x数的十位和个位依次放在z的千位和十位上,y的十位和个位依次放在z的百位和个位上。例如,当x=12y=34,调用该项函数后,z=1324o请勿改动主函数main与其它函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。注意:部分源程序给出如下。#include#includevoidfiin(intx,inty,long*z)(*z=(x/10)*1000+(y/10)*100+(x%10)*10+y%10;

3011main()(intx,y;longz;FILE*out;printf(Inputx,y:M);scanf(*'%d%d,',&x,&y);fun(x,y,&z);printf('Theresultis:%d

302'\z);out=fopen("outfile.dat,,,,,wH);for(x=10;xv20;x++)fun(x=10,109-x,&z);fprintf(out,"%d

303H,z);)fclose(out);第29套上机考试试题一、填空题给定程序的功能是计算并输出下列级数的前N项之和SN,直至USN大于a为止。234SN=—+—+—+・・・+123a的值通过形参传入。例如,若a的值为10.0,则函数值为10.717857。请勿改动主函数main与其它函数中的任何内容,仅在fun函数的横线上填写所需的若干表达式或语句。注意:部分源程序给出如下。#includedoublefun(doublea)(inti=2;doublenum=2.0;while(num<=a){num=num+(double)(i4-l)/i;i++;)printf(',n=%d

304,,,i);returnnum;)main()(printf("%f

305",fun(10));

306二、改错题下列给定程序中,函数fun的功能是:从num个学生的成绩中统计出低于平均分的学生人数,此人数由函数值返回,平均分存放在形参average所指的存储单元中。例如,若输入10名学生的成绩:69.579.58987679065758856则高于平均分的学生人数为5(平均分为76.599998)。请修改程序中的错误,使程序能统计出正确的结果。注意:不要改动main函数,不能增行或删行,也不能更改程序的结构。#include#include#defineM100intfun(float*str,intn,float*averager)(floataverage,temp=0.0;intsum=0,kj;for(k=0;k

307Inputmarkofthese%dstudents:

308'

309um);for(p=0;p

310Thenumberofstudentsbelowtheaverageis:%d

311”,fun(str,num,&averager));printf('Theaveragemark=%f

312u,averager);}三、编程题请编写函数fun,其功能是:将str所指字符串中下标为偶数同时ASCII值为奇数的字符删除,str中剩余的字符形成的新用放在s所指的数组中。例如,若str所指字符串中的内容为ABCDEFG12345,其中字符C的ASCII码值为奇数,在数组中的下标为偶数,因此必须删除;而字符1的ASCII码值为奇数,在数组中的下标也为奇数,因此不应当删除,其它以此类推。最后s所指的数组中的内容应是BDF12345。

313请勿改动主函数main与其它函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。注意:部分源程序给出如下。#include#include#includevoidfiin(char*str,chars[]){inti,j=O,n=strlen(str);for(i=0;i

314Pleaseenterstring:**);scanf(M%sn,str);fun(str,s);printf(u

315Theresultis:%s

316M,s);out=fopen(,'outfile.dat,',,,wn);strcpy(str/*Pleaseenterstring:n);fun(str,s);fprintf(out,"%s”,s);fclose(out);第30套上机考试试题一、填空题给定程序中,函数fun的功能是:将形参指针所指结构体数组中的三个元素按num成员进行升序排列。请勿改动主函数main与其他函数中的任何内容,仅在横线上填写所需的若干表达式或语句。注意:部分源程序给出如下。#includetypedefstruct(intnum;charname[10];}PERSON;voidfun(PERSON*student)

317(PERSONa;if(student[O].num>student[1].num){a=student[O];student[0]=student[2];student[2]=a;if(student[l].num>student[2].num)(a=student[l];student[l]=student[2];student[2]=a;))main()(PERSONstudent[]={5,',Rose,,,2;,Charr,,6,HKateH};inti;fun(student);printf(u

318THeresultis:

319u);for(i=0;i<3;i-H-)printf(n%d,%s

320n,student[i].num,student[i].name);)二、改错题下列给定程序中,函数fun的功能是:将str所指字符串中出现的tempi所指子串全部替换成temp2所指子字符串,所形成的新串放在result所指的数组中。在此处,要求tempi和temp2所指字符串的长度相同。例如,当str所指字符串中的内容为sdfadijfsd行fdsdf,temp1所指子串中的内容为sdf,temp2所指子串中的内容为000时在result所指的数组中的内容应为OOOadijfOOOifdOOO。请修改程序中的错误,得出正确的结果。注意:不要改动main函数,不能增行或删行,也不能更改程序的结构。#include#include#includevoidfun(char*str,char*temp1,char*temp2,char*result)(char*p,*r,*a;strcpy(result,str);while(*result)(p=result;r=templ;while(*r)if(*r==*p)

321(r++;P++;)elsebreak;)if(*r==\Or){a=result;r=temp2;while(*r)(*a=*r;a++;r++;}result+=strlen(temp2);)else(result++;}))main()(charstr[200],templ[200],temp2[200],result[200];printf(AnInputtheteststringstr:");scanf(M%sH,str);printfC*

322Inputthefirstsubstringtempi:n);scanf("%s;tempi);printf(n

323lnputthesecondsubstringtemp2:M);scanf(',%s),,temp2);if(strlen(templ)==strlen(temp2))(fun(str,templ,temp2,result);printf(n

324Thecombinresultis:%s

325M,result);)else(printf(HError:strlen(temp1)!=strlen(temp2)

326M);

327三、编程题编写函数fun,它的功能是:求m以内(不包括m)同时能被3与7整除的所有自然数之和的平方根a,并作为函数值返回。例如,若m为500时,函数值a=76.131465。请勿改动主函数main与其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。注意:部分源程序给出如下。#include#include#includedoublefun(intm)(doublea=0.0;inti;for(i=l;i

328M,fun(500));out=fopen(,,outfiIe.datM,nwM);fprintf(out,H%fH,fun(200));fclose(out);}第31套上机考试试题一、填空题请补充main函数,该函数的功能是:计算四个学生各科的平均分。例如,当score[N][M]={{83,65,63},{89,93,95},{90,63,80},{56,75,77}},则平均分为:795,74.0,78.8.仅在横线上填写所需的若干表达式或语句,请勿改动函数中的其它任何内容。注意:部分源程序给出如下。#include#defineN4#defineM3main()(intij;staticfloatscore[N][M]={{83,65,63},{89,93,95},{90,63,80},{56,75,77}};staticfloata[N];for(i=0;i

329for(i=0;i

330M,i+l^[i]/N);return0;)二、改错题下列给定程序中,函数ftin的功能是:实现两个整数的交换。例如,给x和y分别输入60和65,输出为:x=65y=60o请修改程序中的错误,使程序能得出正确的结果。注意:不要改动main函数,不能增行或删行,也不能更改程序的结构。#include#includevoidfiin(int*x,int*y)(intt;t=*y;*y=*x;*x=t;}main()(intx,y;printf(HEnterx,y:");scanf(H%d%d",&x,&y);fun(&x,&y);printf(Mx=%d,y=%d

331M,x,y);)三、编程题请编写函数fun,其功能是:将str所指字符串中ASCH值为奇数的字符删除,串中剩余字符形成一个新串放在s所指的数组中。例如,若str所指字符串中的内容为asdf,则s所指的数组中的内容应是dfo请勿改动主函数main与其它函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。注意:部分源程序给出如下。#include#include#includevoidfun(char*str,chars[])(inti,j=O,n;n=strlen(str);

332fbr(i=0;i

333Theresultis:%s

334M,s);out=fopen("ooutfile.dat","w");fun(m,s);fprintf(oul,"%s”,s);fclose(out);第32套上机考试试题一、填空题请补充main函数,该函数的功能是:输出一个NXN矩阵,要求非对角线上的元素赋值1,对角线元素赋值0。仅在横线上填写所需的若干表达式或语句,请勿改动函数中的其它任何内容。#include#defineN10main()(inta[N][N];inti,j,n;printfCAnlnputn:n);scanf("%d”,&n);for(i=0;i

335printf("theresult:

336M);for(i=0;i

337

338");for(j=0;j

339n);}1二、改错题下列给定程序中函数fun的功能是:从低位开始取出长整型变量x中偶数位上的数,依次构成一个新数放在y中。例如,当x中的数为123456时,则y中的数应为135。请修改程序中的错误,得出正确的结果。注意:不要改动main函数,不能增行或删行,也不能更改程序的结构。#include#includevoidfiin(longx,long*y)(longt=10;x/=10;*y=x%10;while(x>0)(x=x/100;*y=x%10*t+*y;t=t*10;)}main()(longx,y;printf("

340Pleaseenters:");scanf("%ld",&x);fun(x,&y);printf('Theresultis:%ld

341",y);)三、编程题请编写函数fun,其功能是:将两个两位数的正整数x、y合并成一个整数放在z中。合并的方式是:将x的十位和个位依次放在z的百位和个位匕y的十位和个位依次放在z的十位和千位上。例如,当x=12y=34,调用该函数后,z=4132o请勿改动主函数main与其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。注意:部分源程序给出如下。#include

342#includevoidfun(intx,inty,long*z)(*z=(y%10)*1000+(x/10)*100+(y/10)*l0+x%10;)main()(intx,y;longz;FILE*out;printf(Inputx,y:M);scanf(M%d%dH,&x,&y);fun(x,y,&z);printf('Theresultis:%ld

343M,z);out=fbpen("outfile.datM,WwM);for(x=20;x<50;x+=3)(fun(x,109-x,&z);fprintf(out,"%ld

344”,z);)fclose(out);第33套上机考试试题一、填空题给定程序中,函数In的功能是:将形参student所指结构体数组中年龄最小者的数据作为函数值返回,并在main函数中输出。请勿改动主函数main与其它函数中的任何内容,仅在fun函数的横线上填写所需的若干表达式或语句。注意:部分源程序给出如下。#includetypedefstruct(charname[10];intage;}STUDENT;STUDENTfun(STUDENTstudent[],intn)(STUDENTmin;inti;min=*student;fbr(i=l;i

345if(min.age>student[i].age)min=student[i];returnmin;)main()(STUDENTstudentO>CaliceM7Jbaren”,16;'caren",18};STUDENTmin;min=fun(student,3);printf(n

346Theminageresult

347n);printf(,,

348Name:%s,Age:%d

349M,min.name,min.age);}二、改错题下列给定程序中,函数fun的功能是:将s所指字符串中最后一次出现的si所指子串替换成s2所指子串,所形成的新串放在str所指的数据中。在此处,要求si和s2所指字符串的长度相同。例如,当s所指字符串中的内容为abcdabfabc,sl所指子串中的内容为ab,s2所指子串中的内容为99时,则在str所指的数组中的内容为abcdabf99c»请修改程序中的错误,得出正确的结果。注意:不要改动main函数,不能增行或删行,也不能更改程序的结构。#include#include#includevoidfun(char*s,char*sl,char*s2,char*str){char*p,*r,*a;strcpy(str,s);while(*str){p=str;r=sl;while(*r)if(*r==*p)(r++;P++;)else{break;}a=str;str++;)

350r=s2;while(*r){*a=*r;a++;r++;}1main()(chars[l00],s1[100],s2[l00],str[100];printf(n

351PleaseenterstringS:n);scanf("%s",s);printf("

352Pleaseentersubstringsi:");scanf(M%sn,sl);printf("

353Pleaseentersubstrings2:M);scanf("%s'\s2);if(strlen(sl)==strlen(s2))(fun(s,sl,s2,str);printf(M

354Theresultis:%s

355'\str);)else(printf(K

356Error:strlen(s1)!=strlen(s2)

357H);学生的记录由学号和成绩组成,M名学生的数据已在主函数中放入结构体数组stu中,请编写函数fun,它的功能是:函数返回指定学号的学生数据,指定的学号在主函数中输入。若没找到指定学号,在结构体变量中给学号置空串,给成绩置・1,作为函数值返回(用于字符串比较的函数是strcmp)o请勿改动主函数main与其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。注意:部分源程序给出如下。#include#include#defineM10#defineM10typedefstruct{charnum[10];ints;}SCORE;SCOREfun(SCORE*p,char*q)

358inti;SCOREt;for(i=0;i];break;)else(strcpy(t.num,,,M);t.s=-l;)returnt;)main()(SCOREstu[M]={{MG002M,69},{nG004H,85},{“G001”,96},{“G007”,72},{“G008”,64},{“G006”,87},{“G015”,85},{“G013”,94},{“G012”,64},{“G014”,91}};SCOREt;charm[10];inti;FILE*out;printf('Theoriginaldata:

359M);fbr(i=0;i

360u);printf(M%s%3d

361",stu[i].num,stu[i].s);)printf(n

362

363Enterthenumber:*');gets(m);t=fun(stu,m);printf('Thedataprintf(M

364%s%4d

365'\t.num,t.s);printf(',

366n);out=fopen(,'outfile.dat,,,,'w,');t=fun(stu;'G013n);fprintf(out,"%s%4d

367M,t.num,t.s);fclose(out);第34套上机考试试题一、填空题请补充main函数,该函数的功能是求1+2!+3!+…+N!的和。

368例如,1+2!+3!+…+9!的和为409113。仅在横线上填写所需的若干表达式或语句,请勿改动函数中的其他任何内容。注意:部分源程序给出如下。#includemain()(inti,n;longsum=O,temp=l;printfCAnlnputn:

369n);scanf(n%d'\&n);fbr(i=l;ivn;i++)(temp=temp*i;sum=sum+temp;)printf(>'l!+...+%d!=%ld

370",n,sum);二、改错题下列给定程序中,函数fun的功能是:求出数组中最大数和次最大数,并把最大数和b|0|中的数对调、次最大数和b[l]中的数对调。请修改程序中的错误,得出正确的结果。注意:不要改动main函数,不能增行或删行,也不能更改程序的结构。#include#include#defineN10voidfun(int*b,intn)(for(i=0;i<2;i++)(m=i;for(j=i+l;jb[m])m=j;t=b[i];b[i]=b[m];b[m]=t;main()(inta[N]={5J2,9,7,10),n=5,i;for(i=0;i

371printf(',

372H);fun(a,n);fbr(i=O;i

373");)三、编程题请编写函数fun,其功能是计算并输出下列多项式的值:Fn=1+1/1!+1/2!+1/3!+l/4!+...+l/m!例如,若主函数从健盘给m输入5,则输出为F=2.716667。请勿改动主函数main与其它函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。注意:m的值要求大于1但不大于100。部分源程序给出如下。#includedoublefun(intm)(doublet,s=1.0;inti,j;for(i=1;i<=m;i++)(t=1.0;for(j=l;j<=i;j++)t*=j;s+=1.0/t;}returns;)main()(intm;doublef;FILE*out;printf(Inputm:n);scanf("%d”,&m);f=fun(m);printf(nF=%f

374M,f);oul=fopen("outfile.dal",“w");fbr(m=10;m

375n,fun(m));fclose(out);)第35套上机考试试题一、填空题请补充fun函数,该函数的功能是:把字符串s中的字符按字符的ASCII码升序排列,处理

376后的字符串仍然保存在原串中,字符串及其长度作为函数参数传入。例如,若干输入“edcba”,则输出为“abcde”。请勿改动主函数main与其它函数中的任何内容,仅在fun函数的横线上填写所需的若干表达式或语句。#include#defineN100voidfiin(charp[],intn)(intij;chart;fbr(i=0;ip[j]){t=p[j];pUl=p[i];p[i]=t;))main()(inti=0,strlen=0;chars|N|;printf(''Pleaseintputastring:

377M);gets(s);while(s[i]!=\0,)(strlen++;i++;)fun(s,strlen);printf("Displaystring:

378u);puts(s);二、改错题下列给定程序中,函数fun的功能是:从N个字符串中找出最长的字符串,并将其地址作为函数值返回。各字符串在主函数中输入,并放入一个字符串数组中。请修改程序中的错误,得出正确的结果。注意:不要改动main函数,不能增行或删行,也不能更改程序的结构。#include#include#defineN5#defineM81

379char*fun(char(*q)[M])(inti;char*p;P=q[O];for(i=0;i

380",N);for(i=0;i

381TheNstring:

382';N);for(i=0;i

383u);puts(longest);)三、编程题请编写函数fun,该函数的功能是:统计一行字符串中单词的个数,作为函数值返回。一行字符串在主函数中输入,规定所有单词由小写字母组成,单词之间由若干个空格隔开,一行的开始和结尾都没有空格。请勿改动主函数main与其它函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。注意:部分源程序给出如下。#include#include#defineM100intfun(char*str)inti,n=O;fbr(i=O;i=,a'&&str[i]<=,z,&&str[i+1]=**llstr[i+1]=W)n++;)returnn;)main()(

384chars|M];intsum=0;FILE*out;char*test[]={"Welcome*',"thisisateststring'1};printf('Enterastring:

385H);gets(s);sum=fun(s);printf('Thenumberofwordis:%d

386

387",sum);out=fopen(,'outfile.dat,',,,wM);fbr(sum=0;sum<2;sum++)fjprintf(out,M%d

388",fun(test[sum]));fclose(out);}第36套上机考试试题一、填空题请补充main函数,该函数的功能是:如果数组a的前一个元素比后一个元素大,则把它保存在数组b中并输出。例如,输入{33,49,56,12,66,52,78,95,80,73},则输出56669580。仅在横线上填写所需的若干表达式或语句,请勿改动函数中的其它任何内容。注意:部分源程序给出如下。#include#defineN10main()(inti,n=0;inta[N]={33,49,56,12,66,52,78,95,80,73);intb|N];for(i=0;ia[i+l])b[n++]=a[i];printf('Theresultis

389*');fbr(i=0;i

390,\i,b[i|);二、改错题下列给定程序中,函数的功能是:对N名学生的学习成绩,按从高到低的顺序找出前m(mW10)名学生,并将这些学生数据存放在一个动态分配的连续存储区中,将此存储区的首地址作为函数值返回。请修改函数fun中的错误,得出正确的结果。注意:不要改动main函数,不能增行或删行,也不能更改程序的结构。#include

391#include#include#defineN10typedefstructs(charnum[10];ints;}STUDENT;STUDENT*fun(STUDENTa[],intm)(STUDENTb[N],*t;inti,j,k;t=(STUDENT*)malloc(sizeof(STUDENT)*m);for(i=0;ib[j].s)j=i;strcpy(t[k).num,b|j|.num);t[k].s=b[j].s;b|j].s=0;}returnt;}printresu!t(STUDENTa[],FILE*pf)(inti;for(i=0;i

392M,a[i].num,a[i].s);fprintf(pf,H

393

394M);)main()(STUDENTa[N]={{M01M,81},{M02n,89},{H03M,66},{M04H,87),{M05M,77},{M06M,90},{M07M,79},{H08\61},{M09M,80},{“0,71}};STUDENT*Order;inti,m;printf(n*****TheOriginaldata*****

395");printresult(a,stdout);printf(u

396Givethenumberofthestudentswhohavebetterscore:1');scanf(,,%d,',&m);

397while(m>10)(printf(^nGivethenumberofthestudentswhohavebetterscore:'1);scanf(M%dn,&m);)Order=fun(a,m);printf(n*****THERESULT*****

398u);printf(*Thetop:

399u);fbr(i=0;i

400",Order[i].num,Order[i].s);free(Order);}三、编程题请编写函数fun,其功能是:将两个两位正整数x、y合并成一个整数放在z中。合并的方式是:将x的十位和个位依次放在z的十位和千位上,y十位和个位依次放在z的百位和个位上。例如,当x=12,y=34,调用该函数后,z=2314o请勿改动主函数main与其它函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。注意:部分源程序给出如下。#include#includevoidfun(intx,inty,long*z)(*z=(x%10)*1000+(y/10)*10(n-(x/10)*10+y%10;}main(){intx,y;longz;FILE*out;printf('Inputx,y:");scanf(M%d%d'\&x,&y);fun(x,y,&z);printf(*Theresultis:%ld

401n,z);out=fopen(,'outfile.dat,',,,wM);for(x=2l;x<5l;x+=3)(fun(x,109-x,&z);fprintf(out»,'%ld

402,\z);)fclose(out);}

403第37套上机考试试题一、填空题请补充hin函数,该函数的功能是把数组a中的奇数元素按原来的先后顺序放在原数组后面。例如,输入“5,7,2,42,35,32,28,37,68,13”,则输出“2,42,32,28,68,5,7,35,37,13”。请勿改动主函数main与其它函数中的任何内容,仅在fun函数横线上填写所需的若干表达式或语句。注意:部分源程序给出如下。#include#defineN10voidfun(inta|])(inti,j=O,k=O;intb[N];for(i=0;i

404H);for(i=0;i

405Theresultlistis

406M);for(i=0;i

407H);二、改错题下列给定程序中,函数ftin的功能是:将n(lWnW10)个字符串连接起来,组成一个新串,放在s所指字符串中。例如,把2个字符串as、df连接起来,结果是asdf。请修改程序中的错误,使它能计算出正确的结果。注意:不要改动main函数,不能增行或删行,也不能更改程序的结构。#include#include#includevoidfiin(charstr[][10],intm,char*s)

408(intj,q,i;fbr(j=O;j

409Pleaseentern:H);scanf(M%d",&n);gets(s[O]);printf(AnPleaseenter%dstring:

410",n);for(t=0;t

411",p);}三、编程题请编写函数fun,其功能是:将str所指字符串中下标为偶数的字符删除,字符串中剩余字符形成的新串放在s所指数组中。例如,当str所指字符串中的内容为12345678,则在s所指数组中的内容应是2468。请勿改动主函数main与其它函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。注意:部分源程序给出如下。#include#include#includevoidfun(char*str,chars[])(inti,j=0,n=strien(str);for(i=0;i

412s[j]=AO';}main()(charstr[100],s[100],m[]=M

413Pleaseenterstring:";FILE*out;printf(m);scanf(H%sn,str);fun(str,s);printf("

414Theresultis:%s

415'\s);out=fopen(,'outfile.dat,,,,,w,');fun(m,s);fprintf(out,n%sn,s);fclose(out);}第38套上机考试试题一、填空题请补充main函数,该函数的功能是:打印出满足个位上的数字、十位上的数字和百位上的数字都相等的所有三位数。本题的结果为:111222333444555666777888999.仅在横线上填写所需耍的若干表达式或语句,请勿改动函数中的其它任何内容。注意:部分源程序给出如下。#includemain()(intx,y,z;fbr(x=l;x<10;x+4-)for(y=l;y<10;y++)for(z=l;z<10;z++)if(x=y&&y=z)printf(n%5du,x+y*10+z*100);)二、改错题下列给定程序中,函数fun的功能是:比较两个字符串,将长的字符串的首地址作为函数值返回。请修改函数fun中的错误,得出正确的结果。注意:不要改动main函数,不能增行或删行,也不能更改程序的结构。#include#includechar*fun(char*s,char*t)(

416intsl=O,tl=O;char*strl,*str2;strl=s;str2=t;while(*strl)(sl++;strl++;)while(*str2)(tl++;str2++;}if(tl>sl)returnt;elsereturns;)main()(charp[80],q[80];printfCAnEnterastring:");gets(p);printf("

417Enteranotherstring:M);gets(q);printfCAnThelongeris:%s

418u,fun(p,q));}三、编程题N名学生的成绩已在主函数中放入一个带头结点的链表结构中,a指向链表的头结点。请编写函数fun,它的功能是:找出学生的最高分,由函数返回。请勿改动主函数main与其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。注意:部分源程序给出如下。#include#include#defineN5structlist(doubles;structlist*next;);typedefstructlistSTR;

419doublefun(STR*a)(doublemax;STR*q=a;max=a->s;do(if(q->s>max)max=q->s;q=q->next;}while(q!=0);returnmax;}STR*creat(double*s)(STR*a,*p,*q;inti=0;a=p=(STR*)malloc(sizeof(STR));p->s=0;while(is=s[i];i++;p->next=q;p=q;}p->next=0;returna;}printlist(STR*a)(STR*p;p=a->next;printf(',head,');do(printf(M->%2.Ofn,p->s);p=p->next;}while(p!=0);printf(u

420

421H);)

422main()(doubles[N]={69,72,85,80,68),max;STR*a;FILE*out;a=creat(s);printlist(a);max=fun(a);printf("max=%6.IfXn'\max);out=fopen(,'oufile.dat,'/,wM);fprintf(out,Hmax=%6.1f',max);fclose(out);}第39套上机考试试题一、填空题请补充main函数,该函数的功能是:把一维数组中的元素逆置,结果仍然保存在原数组中。仅在横线上填写所需的若干表达式或语句,请勿改动函数中的其它任何内容。注意:部分源程序给出如下。#include#defineN10main()(inti,j,temp;intb|N|;for(i=0;i

423

424

425TheNewlistis:");for(i=0;i

426^^);)二、改错题下列给定程序中,函数fun的的功能是:为一个偶数寻找两个素数,这两个素数之和等于该偶数,并将这两个素数通过形参指针传回主函数。请修改函数fun中的错误,得出正确的结果。

427注意:不要改动main函数,不能增行或删行,也不能更改程序的结构。#include#includevoidfun(intx,int*y,int*z)(inti,j,d,t;for(i=3;i

428lnputx:");scanf(M%d'\&x);}while(x%2);fun(x,&y,&z);printf(',

429

430%d=%d+%d

431M,x,y,z);三、编程题请编写函数fun,该函数的功能是:判断字符串是否为回文?若是则函数返回1,主函数中输出YES,否则返回0,主函数中输出NO。回文是指顺读和倒读都一样的字符串。例如,字符串LEVEL,而字符串123312就不是回文。请勿改动主函数main与其它函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。注意:部分源程序给出如下。#include#defineMAX100intfun(char*s)(inti,n=0,flag=l;char*p=s;while(*p)(

432n++;p++;}for(i=0;i

433M);puts(str);if(fun(str))printf(MYES

434M);elseprintf(HNO

435");out=fopen(,'outfile.dat",,,wn);for(i=0;iv4;i++)if(fun(t[i]))fprintfCout/TESXn'*);elsefprintf(out;'NO

436M);fclose(out);}第40套上机考试试题一、填空题请补充main函数,该函数的功能是:打印出1〜99中满足个位数字的平方等于其本身的所有数。本题的结果为:12536.仅在横线上填写所需的若干表达式或语句,请勿改动函数中的其它任何内容。注意:部分源程序给出如下。#includemain()(inti,n;for(i=l;i<99;i++)(n=i%10;if(n*n==i)

437printf("%4d”,i);}printf("

438H);}二、改错题下列给定程序中,函数fun的功能是:用冒泡法对5个字符串按由小到大的顺序进行排序。请修改程序中的错误,得出正确的结果。注意:不要改动main函数,不能增行或删行,也不能更改程序的结构。#include#include#defineMAX20voidfun(char*str|5])(intij;char*p;for(i=0;i<5;i++)(for(j=i+l;j<5;j++)(if(strcmp(*(str+i),*(str+j))>0)(p=*(str+i);*(str+i)=*(str-Fj);*(str4j)=p;))))main()(inti;char*str[5],s[5][MAX];for(i=0;i<5;i++)str[i]=s[i];printf(M

439Enter5sting(1stingateachline):

440");fbr(i=0;i<5;i-H-)scanf(M%sn,str[i]);fun(str);printf('Thestringsaftersorting:

441M);for(i=0;i<5;i++)printf(n%sn,str[i]);printf(',

442H);

443)三、编程题请编写一个函数,用来删除字符串中的所有空格。例如,输入we1come,则输出为welcome。请勿改动主函数main与其它函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。注意:部分源程序给出如下。#include#include#includevoidfun(char*s)(inti=0;char*p=s;while(*p)(if(*p!=,1)(s[i]=*p;i++;)p++;)main()(chars[81];charmessage[]=MInputastring/1;intn;FILE*out;printf(message);gets(s);puts(s);fun(s);printf(n***string:%s

444",s);out=fopen("outfile.dat",“w");fun(message);fprintf(out,M%sM,message);fclose(out);

445第41套上机考试试题一、填空题请补充main函数,该函数的功能是:从键盘输入一个字符串,即一个指定,然后把这个字符及其后面的所有字符全部删除,结果仍然保存在原串中。例如:输入“1234567”,指定字符为“4”,则输出“123”。仅在横线上填写所需的若干表达式或语句,请勿改动函数中的其它任何内容。注意:部分源程序给出如下。#include#defineN100main()(inti=0;chars[N];charch;printf("Pleaseinputastring:");gets(s);printf(''Pleaseinputacharater:0);scanf(,,%c,',&ch);while(s[i]!=\0,)(if(s[i]==ch)break;i++;s[i]='\O';printf('Theresultis:

446");puts(s);下列给定程序中,函数fun的功能是:首先把y所指字符串中的字符按逆序存放,然后将x所指字符串中的字符和y所指字符串中的字符,按排序的顺序交叉合并到z所指数组中,过长的剩余字符接在z所指数组的尾部。例如,当x所指字符串中的内容为1234,y所指字符串中的内容为abcdefg时,z所指数组中的内容应该为1g2f3e4dcba;而当x所指字符串中的内容为abcdef,y所指字符串中的内容为1234时,z所指数组中内容应该为a4b3c2dlef。请修改程序中的错误,得出正确的结果。注意:不要改动main函数,不能增行或删行,也不能更改程序的结构。#include#include#includevoidfun(charz=*Z++;y++;x,char*y,char*z)

447(intij;charch;i=0;j=strlen(y)-l;while(i

448Theresultis:%s

449M,s3);三、编程题假定输入的字符串只包含字母和号。请编写函数fun,它的功能是:将字符串中的前导“铲'号全部移到字符串的尾部。例如,若字符串中的内容为"###a#b#c#d###",移动后,字符串中的内容应当是"a#b#c#d######"。在编写函数时,不得使用C语言提供的字符串函数。请勿改动主函数main与其它函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。

450注意:部分源程序给出如下。#include#includevoidfun(char*s)(inti=0,n=0;char*p;p=s;while(*p=='#")(n++;P++;}while(*p)(s[i]=*p;i++;P++;)while(n!=0)s[i]='#';i++;n—;)s[i]=>\O';)main()(charstr[81],*p;FILE*out;chartest[2][80]={n###A###B#CD######',;,###a#b#c#d###n};inti;printf("Enterastring:M);gets(str);fun(str);printf('Thestringaftermoveing:n);puts(str);out=fopen(',outfile.dat,',,,wn);for(i=0;iv4;i++)(fun(test[i]);fprintf(out,"%s

451M,test[i]);}fclose(out);

452)第42套上机考试试题一、填空题请补充main函数,该函数的功能是:输出方程组a+b=52,a+2b=60的一组正整数解。本题的结果是a=44,b=8。仅在横线上填写所需的若干表达式或语句,请勿改动函数中的其它任何内容。注意:部分源程序给出如下。#includemain()(inti,j;for(i=0;i<100;i++)for(j=0;j<100;j++)if(i+j=52&&i+2*j==60)printf('Theanswera=%2d,b=%2d

453",i,j);二、改错题下列给定程序中,函数fun的功能是:找出一个大于给定整数n且紧随n的素数,并作为函数值返回。请修改程序中的错误,得出正确的结果。注意:不要改动main函数,不能增行或删行,也不能更改程序的结构。#include#includeintfun(intn)(inti,j;for(i=n+l;;i-H-){for(j=2;j=i)retum(i);))main()(intm;printf(n

454Pleaseenterdata:*');scanf(M%dn,&m);printf("%d

455H,fun(m));

456)三、编程题某学生的记录由学号、5门课程成绩和平均分组成,学号和5门课程的成绩已在主函数中给出。请编写函数fun,它的功能是:求出该学生的平均分,并放在记录的ave成员中。请自己定义正确的形参。例如,若学生的成绩是72、83、90、68.5、71.5,则他的平均分应当是77.000。请勿改动主函数main与其它函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。注意:部分源程序给出如下。#include#defineM5typedefstruct(charnum[10];doubles[M];doubleave;}SCORE;voidfun(SCORE*p)(doublet=0.0;inti;for(i=0;is|i];t/=M;p->ave=t;)main()(SCOREs={MGA005M,72,83,90,68.5,71.5};inti;FILE*out;fun(&s);printf('The%s*sstudentdata:

457u,s.num);for(i=0;i

458n,s.s|i]);printf("

459ave=%7.3f

460u,s.ave);out=fopen("oulfile.dat",“w");fprintf(out,"The%s'sstudentdata:

461M,s.num);for(i=0;i

462n,s.s[i]);fprintf(out,',

463ave=%7.3f

464,',s.ave);fclose(out);

465)第43套上机考试试题一、填空题请补充fun函数,该函数的功能是:返回字符数组中指定字符的个数,指定字符从键盘输入。请勿改动主函数main和其它函数中的任何内容,仅在fun函数的横线上填写所需的若干表达式或语句。注意:部分源程序给出如下。#include#defineN100intfun(chars[],charch)(inti=0,sum=0;while(s[i]){if(s[i]==ch)sum++;i++;returnsum;)main()(intsum;charstr|N],ch;printf('Inputastring:

466");gets(str);printf(Inputacharacte亡

467");scanf(,'%c,',&ch);sum=fun(str,ch);printf("Numberof%c:%d

468H,ch,sum);}二、改错题下列给定的程序中,函数fun的功能是根据整型形参n,计算如下公式的值:1111X=111-…-I100x100200x200300x300nxn例如,若n=1000,则应输出0.000155。请修改程序中的错误,得出正确的结果。注意:不要改动main函数,不能增行或删行,也不能更改程序的结构。#include#includedoublefun(intn)

469(doublex=0,d;inti;for(i=100;i<=n;i+=100)(d=(double)i*(double)i;x+=1.0/d;)return(x);}main()(intm=1000;printfCAnTheresultis%lf

470'\fun(m));)三、编程题请编写函数fun,它的功能是:求出str所指字符串中指定字符的个数,并返回此值。例如,若输入字符串asdfasdf,输入字符a,则输出2。请勿改动主函数main与其它函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。注意:部分源程序给出如下。#include#include#include#defineN100intfiin(char*str,charc){intn=0;while(*str)(if(*str=c)n++;str++;)returnn;)main()(chars[N],ch;FILE*out;printf(n

471Pleaseenterastring:n);gets(s);printf(H

472Pleaseenterachar:");

473ch=getchar();printf(u

474Thenumberofthecharis:%d

475",fun(s,ch));out=fbpen(^outfile.datMwM);strcpy(s/Thenumberofthecharis:");fprintf(out,',%dH,fun(s,,a,));fclose(out);1第44套上机考试试题一、填空题从键盘输入一组小写字母,保存在字符数组str中,请补充fun函数,该函数的功能是:把字符数组str中字符下标为偶数的小写字母转换成对应的大写字母,结果仍保存在原数组中。例如,输入“asdfghj”,则输出“AsDfGhJ”。请勿改动主函数main与其它函数中的任何内容,仅在fun函数的横线上填写所需的若干表达式或语句。注意:部分源程序给出如下。#include#defineN100voidfun(chars[])intj=0;while(s[j]!=\O'){if(j%2==0)s[j]-=32;j++;))main()(charstr[N];printf("Pleaseinputastring:

476M);gets(str);printf('Theoriginalstring:

477*');puts(str);fun(str);printf('Thenewstring:

478");puts(str);)二、改错题下列给定程序中,函数fun的功能是:将字符串p中的所有字符复制到字符串a中,要求每复制三个字符之后插入一个空格。例如,在调用fun函数之前给字符串s输入asdf,调用函数之后,字符串a中的内容则为asdf。

479请修改程序中的错误,得出正确的结果。注意:不要改动main函数,不能增行或删行,也不能更改程序的结构。#includevoidfiin(char*p,char*a){inti,j=0;while(*p)(i=0;while(i<3&&*p){a|j]=*p;j++;P++;i++;)if(*p)a[j++]=";)main()(chars[80],a[80];printf("Enterastring:");gets(s);printf('Theoriginalstring:");puts(s);fun(s,a);printf("

480Thestringafterinsertspace:");puts(a);printf("

481

482");}三、编程题请编写函数fun,该函数的功能是:移动一维数组中的内容:若数组中有m个整数,要求把下标从0到t(tWm-l)的数组元素平移到数组的最后。例如,--维数组中的原始内容为:1,2,3,4,5,6,7,8,9,10;t的值为3。移动后,一维数组中的内容为:5,6,7,8,9,10,1,2,3,4。请勿改动主函数main与其它函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。注意:部分源程序给出如下。#include#defineM100voidfiin(int*s,intt,intm)

483(inta[M],i,j=0;for(i=0;i<=t;i++)a[i]=s[i];for(i=t+l;i

484M);for(i=0;i

485

486Entert:*');scanf(M%d,,,&t);fun(str,t,n);printf(n

487Thedataaftermoving:

488,f);fbr(i=O;i

489

490M);out=fopen("outfile.dat","w");fun(test,6J2);for(i=0;i<12;i+4-)fprintf(oul,"%d

491”,lest[i]);fclose(out);}第45套上机考试试题一、填空题请补充fun函数,该函数的功能是:把字符下标能被2和3同时整除的字符从字符串s中删除,把剩余的字符重新保存在字符串s中。字符串s从键盘输入,其长度作为参数传入fun函数。

492例如,输入“abcdefghijk”,则输出“bcdefhijk”。请勿改动主函数main与其它函数中的任何内容,仅在fun函数的横线上填写所需的若干表达式或语句。注意:部分源程序给出如下。#include#defineN100voidfiin(charp[],intn)(inti,k;k=0;fbr(i=0;i

493M);gets(s);while(s[i]!=W)(strlen-H-;i++;)fun(s,strlen);printf('ThenewstringAn");puts(s);)二、改错题下列给定程序中函数fun的功能是:从低位开始取出长整型变量a中奇数位上的数,依次构成一个新数放在b中,例如,当a中的数为7654321时,则b中的数为7531。请修改程序中的错误,得出正确的结果。注意:不要改动main函数,不能增行或删行,也不能更改程序的结构。#include#includevoidfun(longa,long*b){longsl=10;

494*b=a%10;while(a>0){a=a/100;*b=a%10*sl+*b;sl=sl*10;}1main()(longa,b;printfC'XnPleaseenterdata:");scanf(,,%ld',,&a);fiin(a,&b);printf('Theresultis:%ld

495M,b);)三、编程题请编写函数fun,该函数的功能是:移动字符串中的内容,移动的规则如下:把第1到第n个字符,平移到字符串的最后,把第n+1到最后的字符移到字符串的前部。例如,字符串中原有的内容为asdfghm的值为2,移动后,字符串中的内容应该是dfghas。请勿改动主函数main与其它函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。注意:部分源程序给出如下。#include#include#defineM100voidfun(char*str,intn){charb[M];inti,j=0;fbr(i=O;i

496main()(chars[M]=MasdfghM;intn;FILE*out;printf('Theoriginalstring:

497");puts(s);printf(u

498

499Entern:");scanf(H%dn,&n);fun(s,n);printf("

500Thestringaftermoving:

501H);puts(s);printf("

502

503");out=fopen(Houtfile.datn,nw");fun(s,strlen(s)-n);fun(s,3);fprintf(oul,"%s”,s);fclose(out);第46套上机考试试题一、填空题请补充fun函数,该函数的功能是:求100(不包括100)以内能被2或3整除,但不能同时被2和3整除的自然数。结果保存在数组a中,fun函数返回数组a元素的个数。请勿改动主函数main与其它函数中的任何内容,仅在fun函数的横线上填写所需的若干表达式或语句。注意:部分源程序给出如下。#include#defineN100intfun(inta[])(inti,j;for(i=l,j=0;i<100;i++)if((i%2!=0&&i%3=0)ll(i%2==0&&i%3!=0))a|j++]=i;returnj;)main()(inti,n;inta[N];n=fun(a);fbr(i=0;i

504");printf("%4d",a[i]);二、改错题下列给定程序中,函数fun的功能是:求n!(n<20),所求阶乘的值作为函数值返回。例如,若

505n=5,则应输出120o请修改程序中的错误,得出正确的结果。注意:不要改动main函数,不能增行或删行,也不能更改程序的结构。#include#includelongfun(intn){if(n>l)return(n*fun(n-l));return1;main()(intn=5;printf(n%d!=%ld

506M,n,fun(n));}三、编程题请编写函数fun,其功能是:将sir所指字符串中除了小标为奇数、ASCH值也为奇数的字符之外,其余的所有字符都删除,串中剩余字符所形成的一个新串放在s所指的数组中。例如,若str所指字符串中的内容为ABCDEFG12345淇中字符A的ASCII码值虽为奇数,但所在元素的下标为偶数,因此必须删除;而字符1的ASCII码值为奇数,所在数组中的下标也为奇数,因此不应当删除,其他以此类推。最后s所指的数组中的内容应是135。请勿改动主函数main与其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。注意:部分源程序给出如下。#include#include#includevoidfun(char*str,chars[])(intij=0,n;n=strlen(str);fbr(i=0;i

507FILE*out;printf(H

508Pleaseenterstring:**);scanf("%s'\str);fun(str,s);printf("

509Theresultis:%s

510M,s);out=fopen(,'outfile.dat,,,,,w,');strcpy(str/'Pleaseenterstring:n);fun(str,s);fprintf(out,"%s",s);fclose(out);第47套上机考试试题一、填空题请补充fun函数,该函数的功能是:交换数组a中最大和最小两个元素的位置,结果重新保存在原数组中,其它元素位置不变。注意数组a中没有相同元素。例如,输入“20,40,78,60,52”,则输出结果为“78,40,20,60,52”。请勿改动主函数main与其它函数中的任何内容,仅在fun函数的横线上填写所需的若干表达式或语句。注意:部分源程序给出如下。#include#defineN5voidfun(inta|])(inti,temp;intmax=0,min=0;fbr(i=0;ia[i])min=i;)temp=a[max];a[max]=a[min];a|min]=temp;)main(){inti;inta[N]={20,40,78,60,52);printf('Theoriginalarray:M);for(i=0;i

511printf("

512Thenewarray:*');for(i=0;i

513H);)二、改错题下列给定程序中,函数fun的功能是:利用插入排序法对字符串中的字符按从小到大的顺序进行排序。插入法的基本算法是:先对字符串中的头两个元素进行排序;然后把第三字符插入到前两个字符中,插入后前三个字符依然有序;再把第四个字符插入到前三个字符中……待排序的字符串已在主函数中赋予。请修改程序中的错误,得出正确的结果。注意:不要改动main函数,不能增行或删行,也不能更改程序的结构。#include#include#defineN100voidgetin(char*str){inti,j,n;charch;n=strlen(str);fbr(i=l;i=O)&&(ch

514",s);getin(s);printf('Thestringaftersorting:%s

515

516",s);)三、编程题已知学生的记录由学号和学习成绩构成,M名学生的数据已存入a结构体数组中。请编写函数fun,该函数的功能是:找出成绩最高的学生记录,通过形参返回主函数(规定只有一个最高分)。已给出函数的首部,请完成该函数。请勿改动主函数main与其它函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。注意:部分源程序给出如下。#include#include#include#defineM10typedefstructsscharnum|10];ints;

517}SCORE;voidfun(SCOREa[],SCORE*s)(inti,max;max=a[0|.s;for(i=0;imax){max=a[il.s;*s=a[i];))main()(SCOREstu[M]={{"02';69},{"04",85},{,,0r,,91},{,'08",64},{',06M,87},{"015",85},{',013,1,91},{,,012",64},inti;FILE*out;printf('Theoriginaldata:

518n);for(i=0;i

519o,stu[i].num,stu[i].s);fun(stu,&n);printf('THERESUET:

520n);printf('Thehigh:%s,%d

521M,n.num,n.s);out=fopen("outfile.dal",“w");fprintf(out,',%s

522%d,',n.num,n.s);fclose(out);}第48套上机考试试题一、填空题请补充fun函数,该函数的功能是:删除字符数组中比指定字符小的字符,指定字符从键盘输入,结果仍保存在原数组中。例如,输入“asdfgh「,指定字符为“f”,则结果输出“sfghj”。请勿改动主函数main与其它函数中的任何内容,仅在fun函数的横线上填写所需的若干表达式或语句。注意:部分源程序给出如下。#include#defineN100voidfun(chars[],charch)(inti=0,j=0;while(s[i])(

523if(s[i]

524Theoriginalstring:u);puts(str);printf(n

525Pleaseinputacharacter:");scanf(',%c,',&ch);fun(str,ch);printfCAnThenewstring:");puts(str);)二、改错题下列给定程序中函数fun的功能是:判断一个整数m是否是素数,若是返回1,否则返回0。在main。函数中,若fun返回1,则输出"YES”,若fun返回0,则输出“NO!”。请修改程序中的错误,得出正确的结果。注意:不要改动main函数,不能增行或删行,也不能更改程序的结构。#include#includeintfun(intn)(inti=2;while(i<=n&&(n%i))i++;if(n==i)return1;elsereturn0;main()

526(inta;printf(H

527Pleaseenterdata:'*);scanf(n%d",&a);if(fun(a))printf("YES'n");elseprintf("NO!

528");三、编程题请编写函数fun,该函数的功能是:实现D=B+B',即把矩阵B加上B的转置,存放在矩阵D中。计算结果在main函数中输出。例如,输入下面的矩阵:123144562578936其转置矩阵为:789

529则程序输出:261061014101418请勿改动主函数main与其它函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。#include#includevoidfun(intb[3][3],intd[3][3])(intij,t[3][3];for(i=0;i<=2;i++)for(j=0;j<=2;j++)t[i]U]=b[j][i];for(i=0;i<3;i++)for(j=0;j<3;j++)d[i]U]=b[i][j]+t[i][j];}main()(intb[3][3]={{1,2,3M4,5,6},{7,8,9}},c[3][3];inti,j;FILE*out;fun(b,c);out=fopen("outfile.dat","w");for(i=0;i<3;i++)(for(i=0;j<3;j++)(printf("%7d",c[i][j]);fprintf(out,"%7d",c[i]|j]);1printf(An");fprintfCout/'Xn");)fclose(out);第49套上机考试试题一、填空题请补充main函数,该函数的功能是:求1〜100(不包括100)以内所有素数的平均值。仅在横线上填写所需的若干表达式或语句,请勿改动函数中的其它任何内容。注意:部分源程序给出如下。#includemain()

530{inti,n,sum=0,flag;floataver=0;for(n=2;n<100;n++)(flag=l;for(i=2;i

531,',aver/sum);)二、改错题下列给定程序中函数fun的功能是:删除字符串s中的所有空白字符(包括Tab字符、回车符及换行符)。输入字符串时用“#"结束输入。请修改程序中的错误,得出正确的结果。注意:不要改动main函数,不能增行或删行,也不能更改程序的结构。#include#include#includevoidfiin(char*s)(inti,j;charch[80];for(i=0,j=0;s[i];i++)if(!isspace(*(s+i)))ch[j++]=s[i];ch[j]=W;strcpy(s,ch);)main()(charch,str[80];inti=0;printf('Inputastringwith#asend:");ch=getchar();while(ch!='#')(str[i]=ch;

532i++;ch=getchar();)str[i]='\O';fun(str);puts(str);}二、改错题下列给定程序中函数fun的功能是:删除字符串s中的所有空白字符(包括Tab字符、回车符及换行符)。输入字符串时用“#"结束输入。请修改程序中的错误,得出正确的结果。注意:不要改动main函数,不能增行或删行,也不能更改程序的结构。#include#include#includevoidfun(char*s)(inti,j;charch|80|;for(i=0,j=0;s[i];i4-4-)if(!isspace(*(s+i)))ch[j++]=s[i];/***found***/chU『O";strcpy(s,ch);}main()(charch,str[8O];inti=0;printf('Inputastringwith#asend:");ch=getchar();while(ch!='#')(str[i]=ch;i++;ch=getchar();)str(i]='\O';fun(str);puts(str);)

533三、编程题假定输入的字符串中只包含字母和‘#'号。请编写函数fun,它的功能是:使字符串中尾部的‘#'号不得多于m个‘#'号,若多于m个,则删除多余的“#”号;若少于或等于m个,则什么也不做,字符串中间和前面的1#'号不删除。例如:字符串中的内容为“####a#bc#def#g#######",若m的值为4,删除后,字符串中的内容则应当是"####a#bc#def#g####";若m的值为7,则字符串中的内容仍为"####a#bc#def#g#######"。m的值在主函数中输入。在编写函数时,不得使用C语言提供的字符串函数。请勿改动主函数main与其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。注意:部分源程序给出如下。#include#include#includevoidfiin(char*s,intm)(inti=0,j=0;char*p,*t;p=t=s;while(*t)t++;t-;while(*t='#')(j++;t--;)t++;if(j>m)(while(*p&&p

534FILE*out;printf('Enterastring:M);gets(str);printf('rEnterm:n);scanf(,,%d,',&m);fun(strm);printf('Thestringafterdeleted:'1);puts(str);out=fopen("outfile.dat",“w");strcpy(str;,####a#bc#de^g#######n);fun(str,3);fprintf(out,"%sH,str);fclose(out);}第50套上机考试试题一、填空题请补充main函数,该函数的功能是:求n!。例如,5!=120.仅在横线上填写所需的若干表达式或语句,请勿改动函数中的其它任何内容O注意:部分源程序给出如下。#include#includemain()(inti,n;longn=l;printf(''Pleaseinputn:H);scanf(,'%d',,&n);for(i=l;i<=n;i4-+)r*=i;printf('Theresult%d!=%ld

535u,n,r);}二、改错题下列给定程序中,函数fun的功能是:统计一个无符合整数中各位数字值为0的个数,通过形参传回主函数,并把该整数中各位上最大的数字值作为函数值返回。例如。若输入无符号整数10080,则数字值为0的个数为3,各位上数字值最大的是8。请修改函数fun中的错误,得出正确的结果。注意:不要改动main函数,不能增行或删行,也不能更改程序的结构。#includeintfun(unsignedm,int*z){intn=0,max=0,t;

536do(t=m%10;if(t==O)n++;if(max

537Inputm(unsigned):*');scanf(n%d",&m);max=fun(m,&z);printf("

538Theresult:max=%dz=%d

539",max,z);三、编程题学生的记录由学号和成绩组成,M名学生的数据已在主函数中放入结构体数组student中,请编写函数fun,它的功能是:把高于平均分的学生数据放在c所指的数组中,高于平均分的学生人数通过形参n传回,平均分通过函数值返回。请勿改动主函数main与其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。注意:部分源程序给出如下。#include#defineM5typedefstruct(charnum[10];doubles;}SCORE;doublefun(SCORE*a,SCORE*c,int*n){doubleaver=0.0;

540inti,j=0;*n=0;for(i=0;iaver)(c[j]=a[i];(*n)++;j++;)returnaver;}main()(SCOREstudent[M]={{H01M,91},{H02M,69},{H03M,76},{H04M,85},{"OS^SS)};SCOREhigh[M],t;FILE*out;inti,j,n;doubleave;ave=fun(student,high,&n);printf('The%dstudentdatawhichishigherthan%7.3f:

541",n,ave);for(i=0;i

542n,high[i].num,high[i].s);printfCAn11);out=fopen("outfile.datfprintf(out,"%d

543%7.3f

544'

545,ave);for(i=0;ihigh[j].s){t=high[i];high[i]=high[j];high[j]=t;)for(i=0;i

546“yes!”,否则函数返回字符串“no!”,并在主函数中输出.例如,输入13,返回yes!;输入8,返回no!请勿改动主函数main与其他函数中的任何内容,仅在fun函数的横线上填写所需的若干表达式或语句。注意:部分源程序给出如下。#include#includechar*fun(intm)(inti,j;j=l;for(i=2;il)return(',yes!n);elsereturn("no!n);1main()(intn=0;printf(MPieaseinputainteger:*');scanf(n%du,&n);printf(,'%s

547,,,fun(n));二、改错题下列给定程序中函数fun的功能是:先将在字符串str中的字符按逆序存放到s串中,然后把str中的字符按正序连接到s串的后面。例如,str中的字符串为ABCDE时,则s中的字符串应为EDCBAABCDEo请修改程序中的错误,得出正确的结果。注意:不要改动main函数,不能增行或删行,也不能更改程序的结构。#include#include#includevoidfun(char*str,char*s)(intsl,i;sl=strlen(str);for(i=O;i

548s[i]=str[sl-i-l];fbr(i=O;i

549Pleaseenterstringstr:");scanf(M%sn,str);fun(str,s);printf('Theresultis:%s

550o,s);}三、编程题假定输入的字符串中只包含字母和“旷号。请编写函数fun,它的功能是:除了尾部的“#"号之外,将字符串中其他‘铲号全部删除。形参p已指向字符串中的最后一个字母。在编写函数时,不得使用C语言提供的字符串函数。例如:若字符串中的内容为"###a#b#c#d#e###",删除后,字符串中的内容则应当是“abcde###"。请勿改动主函数main与其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。注意:部分源程序给出如下。#include#include#includevoidfiin(char*s,char*p)(inti=0;char*q=s;while(q<=p){if(*q!=,#t){s[i]=*q;i++;)q++;)while(*q)(s[i]=*q;i++;

551q++;)s[i]=、(r;}main()(charstr[81],*t;FILE*out;printf('Enterastring:");gets(str);t=str;while(*t)t++;Iwhile(*t=,#r)t-;fun(str,t);printf('Thestringafterdeleted:

552M);puts(str);out=fopen(,'outfile.dat",,,wM);strcpy(str,n###W#e#l#c#o#m#e####");fun(str,str+14);fprintf(out,n%sH,str);fclose(out);)第52套上机考试试题一、填空题给定程序的功能是将m个人的考试成绩进行分段统计,考试成绩放在score数组中,各分段的人数存到a数组中:成绩为60-69的人数存到a⑼中,成绩为70-79的人数存到a[l]中,成绩为80〜89的人数存到a⑵中,成绩为90〜99的人数存到a[3]中,成绩为100的人数存到a⑷中,成绩为60分以下的人数存到a⑸中。例如,当score数组中的数据是:90,54,90,77,68,88,59,94,75,98。调用该函数后,a数组中存放的数据应是:121402。请勿改动主函数main与其他函数中的任何内容,仅在横线上填写所需的若干表达式或语句。注意:部分源程序给出如下。#includevoidfun(intscored,inta|],intm)(inti;fbr(i=0;i<6;i++)a[i]=0;for(i=0;i

553elsea[(score[i]-60)/10]++;)main()(inti,score[100]={90,54,90,77,68,88,59,94,75,98),a[6];fun(score,a,10);printf(ntheresultis:");for(i=0;i<6;i++)printf(M%dprintf(M

554H);二、改错题下列给定程序中,函数fun的功能是:给定n个实数,输出平均值,并统计在平均值以上(含平均值)的实数个数。例如,n=8时,输入193.199、195.673、195.757、196.051、196.092、196.596、196.579、196.763,所得平均值为195.838750,在平均值以上的实数个数应为5。请修改程序中的错误,使程序能得出正确的结果。注意:不要改动main函数,不能增行或删行,也不能更改程序的结构。#include#includeintfun(doublea[],intn)(intj,b=O;doublesum=0;for(j=0;j

555,\sum);for(j=O;j=sum)b++;returnb;)main()(doublea[10]={193.199,195,673,195,757,196,051,196,092,196,596,196,579,196.763);printf("%d

556”,fun(48));1三、编程题学生的记录由学号和成绩组成,M名学生的数据已在主函数中放入结构体数组STU,请编写函数fun,它的功能是:把指定分数范围

557内的学生数据放在q所指的数组中,指定分数范围内的学生人数由函数值返回。例如,输入的分数是70和80,则应当把分数在70到80的学生数据输出,包含分数为70和80的学生数据。请勿改动主函数main与其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。注意:部分源程序给出如下。#include#defineM10typedefstruct(charnum[10];ints;}SCORE;intfun(SCORE*p,SCORE*q,int11,inthh)(inti,j=O;fbr(i=0;i=ll&&p[i].s<=hh)(q[j]=p[i];j++;}returnj;)main()(SCOREstu[M]={{MG002u,69},{1,G004,,,85},{℃001\96},{“G007”,72},{nG008”,64},{HG006\87},{MG015”,85},{"G013”,94},{“G012”,64},{MG014”,91}};SCOREh[M],t;FILE*out;intij,n,low,heigh,k;printf('Enter2integernumberlow&heigh:");scanf(,'%d%d,',&low,&heigh);if(heigh

558M,low,heigh);for(i=O;i

559,',h[i].num,h[i].s);printf("

560");out=fopen(Houtfile.datH,"wM);n=fun(stu,h,80,98);fprintf(out,,,%d

561,',n);fbr(i=O;ih[j].s)

562{t=h[i];h[i]=hUJ;h[j]=t;)fbr(i=0;i

563H,h(i].s);fprintf(out,M

564M);fclose(out);第53套上机考试试题一、填空题s为一个字符序列,请补充fun函数,该函数的功能是:查找s中值为a的元素,返回找到值为a的元素个数,并把这些值为a的元素下标依次保存在数组str中。例如,在'testtesr'中查找“e”,结果为2,下标依次为1>5。请勿改动主函数main与其他函数中的任何内容,仅在fun函数的横线上填写所需的若干表达式或语句。注意:部分源程序给出如下。#include#include#defineM100intstr[M];intfun(char*s,charch)(inti=0,n=0;chart=ch;char*p=s;while(*p)(if(*p==t)str[n++]=i;P++;i++;)returnn;}main()(chars[M];charch;inti,n;printf("PleaseInputtheoriginalstring:n);gets(s);

565printf("

566Theoriginalstringis:");puts(s);printf("

567Inputcharacter:**);scanf("%c”,&ch);n=fun(s,ch);printf(H

568Thenumberofcharacteris:%d

569'

570);printfCAnThepositionofcharacter:");fbr(i=O;i

571H);}二、改错题下列给定程序中,函数fun的功能是:用递归算法计算斐波拉契级数数列中第n项的值。从第1项起,斐波拉契级数序列为1、1、2、3、5、8、…例如,若给n输入7,则该项的斐波拉契级数值为13。请修改程序中的错误,得出正确的结果。注意:不要改动main函数,不能增行或删行,也不能更改程序的结构。#includelongfun(intm)(switch(m)(case0:return0;case1:case2:return1;)return(fun(m-1)+fun(m-2));)main()(longa;intn;printf('Inputn:");scanf(M%dn,&n);printf(Mn=%d

572",n);a=fun(n);printf(',a=%d

573

574',,a);)三、编程题请编写函数fun,该函数的的功能是:删除一维数组中所有相同的数,使之只剩一个。数组中的数已按由小到大的顺序排列,函数返回删除后数组中数据的个数。

575例如,若一维数组中的数据是:1,1,1,2,2,3,3,3,3,4删除后,数组中的内容应该是:1,2,3,4请勿改动主函数main与其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。注意:部分源程序给出如下。#include#defineM100intfun(intb[],intm)(inti,t,j=O,*p=b;t=p[O];for(i=0;i<=m;i++)if(t==p[i])else{b[j]=t;t=p[i];j++;)if(i>=m)b[j]=t;returnj;}main()intb[M]={1,1,1,223,3,3,3,4},i,m=10;FILE*out;printf('Theoriginaldata:

576M);fbr(i=O;ivm;i++)printf(”%3d”,b[i]);m=fun(b,m);printfCAnThedataafterdeleted:

577H);out=fopen("outfile.dat,,,,,wM);fbr(i=0;i

578",b|i]);)fclose(out);

579第54套上机考试试题一、填空题给定程序中,函数fun的功能是:将s所指字符串中的所有非数字字符移到所有数字字符之后,并保持数字字符串和非数字字符串原有的先后次序。例如,形参s所指的字符串为:asf34fgrt5657gngjh78o则执行结果为:34565778asffgrtgngjh»请勿改动主函数main与其他函数中的任何内容,仅在fun函数的横线上填写所需的若干表达式或语句。注意:部分源程序给出如下。#includevoidfun(char*str)(inti,j=O,k=O;chartempi[80],temp2[80];for(i=0;str[i]!=V)';i++)if(str[i]>='a'&&str[i]<='z')(temp2[j]=str[i];j++;)else{tempi[k-H-]=str[i];temp2[j]=0;tempi[k]=0;fbr(i=O;i

580Theoriginalstringis:%s

581",str);fun(str);printf("

582Theresultis:%s

583M,str);)二、改错题下列给定程序中,函数fun的功能是:计算并输出max以内最大的10个素数之和。high由主函数传给fun函数。若max的值为50,则函数的值为300。请修改程序中的错误,使程序能得出正确的结果。注意:不要改动main函数,不能增行或删行,也不能更改程序的结构。#include

584#include#includeintfun(intmax){intsum=0,n=0,j,flag;while((max>2)&&(n<10)){flag=l;fbr(j=2;j<=max/2;j++)if(max%j=0)(flag=0;break;}if(flag)(sum+=max;n++;)max—;)returnsum;)main()printf(M%d

585n,fun(50));)三、编程题请编写函数fun,该函数的功能是:将放在字符串数组中的M个字符串(每串的长度不超过N),按顺序合并组成一个新的字符串。例如,若字符串数组中的M个字符串为:11112222222334444则合并后的字符串的内容应是11112222222334444请勿改动主函数main与其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。注意:部分源程序给出如下。#include#defineM4#defineN20voidfun(charstr[M][N],char*a)(inti,j,k=O;

586for(i=0;i

587H);for(i=0;i

588H);fun(matrix,str);printfCThestring:

589u);prinlf(”%s”,str);printf(',

590

591M);out=fopen(Moutfile.datM,Mw");fprintf(out,"%s'\str);fclose(out);)第55套上机考试试题一、填空题给定程序中,函数fun的功能是:左形参s所指字符串中的每个非数字字符之后插入一个“*”号。例如,形参s所指的字符串为:albc45sdtg56f,则执行结果为:a*1b*c*45s*d*t*g*56f*。请勿改动主函数main与其他函数中的任何内容,仅在fun函数的横线上填写所需的若干表达式或语句。注意:部分源程序给出如下。#includevoidfun(char*str)(

592inti,j,n;for(i=0;str[i]!=W;i4-+)if(str[i]>='a'&&str[i]<=,z,)(n=0;while(str[i+1+n]!=0)n++;for(j=i+n+l;j>i;j-)str|j+l]=str[j];str[j+l]='*';i=i+l;})main(){charstr[l00]="a1bc45sdtg56f;printf("

593Theoriginalstringis:%s

594",str);fun(str);printf("

595Theresultis:%s

596",str);)二、改错题下列程序中,函数fun的功能是:将大写字母转换为对应小写字母之后的第五个字母,若为小写字母为v〜z,使小写字母的值减21,转换后的小写字母作为函数值返回。例如,若形参是字母A,则转换为小写字母f;若形参是字母W,则转换为小写字母b。请修改函数fun中的错误,得到正确的结果。注意:不要改动main函数,不能增行或删行,也不能更改程序的结构。#include#includecharfun(charch)(if(ch>=,A,&&ch<='Z')ch=ch+32;if(ch>='a,&&ch<='u')ch=ch+5;elseif(ch>=,v,&&ch<='z,)ch=ch-21;returnch;}main()(charchl,ch2;printf("

597Enteraletter(A-Z):");chl=getchar();

598if(isupper(chl))(ch2=fun(chl);printf('*

599

600Theletter%cchangeto%c

601H,chl,ch2);)else(printf("

602Enter(A-Z)!

603u);三、编程题编写一个函数fun,它的功能是:实现两个字符串的连接(不使用库函数strcat),即把str2所指的字符串连接到strl所指的字符串后。例如,分别输入下面两个字符串:just-test-则程序输出:just-test请勿改动主函数main与其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。#include#includevoidfun(charstrl[],charstr2[])(inti=0,n=0;char*p=strl,*q=str2;while(*p){P++;n++;}i=n;while(*q)(strl[i]=*q;q++;i++;)strI[i]=W;1main()(charsl[100],s2[501;FILE*out;printf('rEntersiands2:

604");scanf(M%s%sM,sl,s2);printf(',sl=%s

605',,sl);printf("s2=%s

606",s2);fun(sl,s2);printfC*Afterinvoking:

607M);printf("%s

608”,sl);out=fopen("outfile.dat",“w");strcpyCsl/'This1,);fun(sl,nisn);fun(sl,"au);funCsl/'test");fun(sl,Hstring.H);fprintf(out,"%s

609H,sl);fclose(out);

610第56套上机考试试题一、填空题函数fun的功能是:逆置数组元素中的值,形参m给出数组中数据的个数。例如,若x所指数组中的数据依次为:9、8、7、6,5,则逆置后依次为:5,6、7、8、9.请勿改动主函数main与其他函数中的任何内容,仅在fun函数的横线上填写所需的若干表达式或语句。注意:部分源程序给出如下。#includevoidfun(inta[],intm)(inti,temp;for(i=0;ivm/2;i++)(temp=a|i];a[i]=a[m-l-i];a[m-i-l]=temp;))main()(intx[9]={9,8,7,6,5,},i;printfC'VnTheoriginaldata:

611M);for(i=0;i<5;i++)printf("%4dM,x[i]);printf(',

612H);fun(x,5);printf(',

613Thedataafterinvert:");for(i=0;i<5;i-H-)printf("%4d",x[i]);printf(H

614H);}二、改错题下列给定程序中,函数fiin的功能是:根据输入的三个边长(整型值),判断能否构成三角形;构成的是等边三角形,还是等腰三角形。若能构成等边三角形函数返回3,若能构成等腰三角形函数返回2,若能构成三角形函数返回1,若不能构成三角形函数返回0。请修改函数fun中的错误,得出正确结果。注意:不要改动main函数,不能增行或删行,也不能更改程序的结构。#includeintfiin(intx,inty,intz)(if(x+y>z&&y+z>x&&x+z>y)(if(x==y&&y==z)

615return3;elseif(x==ylly=z11x=z)return2;elsereturn1;)elsereturn0;main()(intx,y,z,shape;printfC^Inputx,y,z:");scanf(,,%d%d%d,\&x,&y,&z);printf("

616x=%d,y=%d,z=%d

617',,x,y,z);shape=fun(x,y,z);printf(n

618

619Theshape:%d

620'\shape);)三、编程题假定输入的字符串中只包含字母和号,请编写函数fun,它的功能是:删除字符串中所有的“#",在编写函数时,不得使用C语言提供的字符串函数。例如,若字符串中的内容“##w#el##come###",删除后,字符串中的内容则应当是“welcome请勿改动主函数main与其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。#include#includevoidfun(char*s)(inti=0;char*p=s;while(*p)(if(*p!=#)(s[i]=*p;i++;)p++;)sgvy;)main()(charstr[81];FILE*out;printf("Enterastring:

621n);

622gets(str);fun(str);printf('Enterstringafterdeleted:

623u);puts(str);out=fopen(,'outfile.dat",,,wn);strcpy(str;,###T#ES#T#######n);fun(str);fprintf(out;'%sM,str);fclose(out);第57套上机考试试题一、填空题请补充fun函数,该函数的功能是求能整除k且是偶数的数,把这些数保存在数组a,并按从大到小输出。例如,当k=40,依次输出402010842.请勿改动主函数main与其他函数中的任何内容,仅在fun函数的横线上填写所需的若干表达式或语句。注意:部分源程序给出如下。#include#includevoidfun(intk,inta[])(inti;intj=0;fbr(i=l;i<=x;i++)if(k%i==0&&i%2==0)a|j4-+]=i;printf(n

624

625n);fbr(i=-J;i>=O;i-)printf(n%dM,a[i]);)main()(intk=l;inta[100|;printf("

626Pleaseinputk

627M);scanf(H%d",&k);fun(k,a);)二、改错题下列给定程序的功能是:读入一个英文文本行,将其中每个单词的第一个字母改成大写,然后输出此文本行(这里的“单词”是指由空格隔开的字符串)。

628例如,若输入“goodluck!”,则应输出“GoodLuck!”。请修改程序中的错误,使程序能得出正确的结果。注意:不要改动main函数,不能增行或删行,也不能更改程序的结构。#include#include#includevoidtop(char*s)(inti=0;for(;*s;s++)if⑴{if(*s=='')i=0;)else(if(*s!=")(i=l;*s=toupper(*s);))}main()(charstr[81];printf("

629PleaseenteranEnglishtextline:");gets(str);printf("

630

631Beforechanging:%s",str);top(str);printf("

632

633Afterchanging:%s

634",str);)三、编程题假定输入的字符串中只包含字母和号。请编写函数fun,它的功能是:除了字符串前导和尾部的号之外,将串中其他“#”号全部删除。形参r已指向字符串中第一个字母,形参v已指向字符串中最后一个字母。在编写函数时,不得使用C语言提供的字符串函数。例如,若字符串中的内容“####a#bc#def##g#####",删除后,字符串中的内容则应当是"####abcdefg#####"。请勿改动主函数main与其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。

635注意:部分源程序给出如下。#include#include#includevoidfun(char*s,char*r,char*v)(inti=0;char*q=s;while(q

636H);gets(str);p=q=str;while(*p)P++;P-Swhile(*p==,#1)P-;

637while(*q=='#')q++;fun(str,q,p);printf('Thestringafterdeleted:

638");puts(str);out=fopen("outfile.datstrcpy(str/#####a#b#c#d######");fun(str,str+4,str+13);fprintf(out,"%s",str);fclose(out);)第58套上机考试试题一、填空题请补充函数fun,该函数的功能是:统计所有小于等于x(x>2)的素数的个数,素数的个数作为函数值返回。例如,输入x=20,结果:2,3,5,7,11,13,17,19»请勿改动主函数main与其他函数中的任何内容,仅在fun函数的横线上填写所需的若干表达式或语句。注意:部分源程序给出如下。#includeintfun(intx)(inti,j,count=0;printf(H

639Theprimenumberbetween2to%d

640'\x);fbr(i=2;i<=x;i++)(for(j=2;j=i){count++;printf(count%15?"%5d":“

641%5d”,i);})returncount;}main()(intx=20,result;result=fun(x);printf(H

642Thenumberofprimeis:%d

643u,result);)

644二、改错题下列给定程序中函数fun的功能是:计算m!。例如,给m输入3,则输出6.000000。请修改程序中的错误,使程序能输出正确的结果。注意:不要改动main函数,不能增行或删行,也不能更改程序的结构。#include#includedoublefun(intm)doubleresult=1.0;if(m=0)return1.0;while(m>1&&m<170)result*=m—;returnresult;1main()(intm;printf('Inputm:H);scanf("%d",&m);printf(',

645

646%d!=%lf

647

648M,m,fun(m));三、编程题学生的记录由学生和成绩组成,M名学生的数据已在主函数中放入结构体数组stu中,请编写函数fun,它的功能是:把分数最高的学生数据放在high所指的数组中,注意:分数最高的学生可能不止一个,函数返回分数最高的学生的人数。请勿改动主函数main与其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。注意:部分源程序给出如下。#include#defineM10typedefstruct(charnum[10];ints;}SCORE;intfun(SCORE*p,SCORE*q)(inti,j=0,n=0,max;max=p[0].s;for(i=0;imax)

649max=p[i].s;for(i=0;i

650'

651);fbr(i=0;i

652*',high[i].num,high[i].s);printf(',

653H);out=fopen(,'outflie.dat,',,,w,,);fprintf(out,"%d

654H,n);fbr(i=O;i

655'\high[i].s);fclose(out);第59套上机考试试题一、填空题程序的功能是计算s=9例如,输入参数3,结果为10。请勿改动主函数main与J血尾数中的任何内容,仅在横线上填写所需的若干表达式或语句。注意:部分源程序给出如下。#includelongfiin(intn)(inti;longf;f=l;fbr(i=l;i<=n;i++)f=f*i;returnf;

656}main(){longs;intk,n;printf(nPleaseinputthedata:");scanf(M%d",&n);s=0;for(k=0;k<=n;k++)s=s+fun(k);printfC'theresultis:%ld

657'\s);}二、改错题下列给定程序中函数fun的功能是:统计子字符串substr在字符串str中出现的次数。例如,若字符串为aaaskkaaas,子字符串为as,则应输出2。请修改程序中的错误,得出正确的结果。注意:不要改动main函数,不能增行或删行,也不能更改程序的结构。#includeintfun(char*s,char*str)(inti,j,k,num=O;for(i=O;s[i];i++)for(j=i,k=0;str[k]==s[j];k-H-J-H-)if(str[k+l]==,\O,){num++;break;}returnnum;}main()(chars|100|,str|80];printf("Inputastring:n);gets(s);printf("Inputasubstring:");gets(str);printf(M%d

658n,fun(s,str));三、编程题请编写函数fun,其功能是:计算并输出当x<0.97时下列多项式的值,直至lJIFn-Fn-llv0.000001

659为止。口30.5(0.5-1)x,Fn=l+0.5x++2!x3+…0.5(0.5-1)(0.5-2)•••(0.5-n+1)naX〃!例如,若主函数从键盘给x输入0.33后,则输出为f=l.153256c请勿改动主函数main与其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。注意:部分源程序给出如下。#include#includedoublefun(doublex)(doublefl=1.0,p=1.0,sum=0.0,f0,t=1.0;intn=l;do(fO=fl;sum+=f0;t*=n;p*=(0.5-n+l)*x;fl=p/t;n++;}while(fabs(fl-fO)>=le-6);returnsum;}main()(inti;doublex,f;FILE*out;printfCINputx:");scanf(H%lf',&x);f=fun(x);printf(,,f=%f

660,',f);out=fopen(,'outfile.dat',,"w");for(i=20;i<30;i++)fprintf(out,"%f

661”,fun(i/100.0));fclose(out);)第60套上机考试试题一、填空题请补充fun函数,该函数的功能是:把从主函数中输入的字符用s2接在字符串si后面。

662例如,输入:s1="Hi,”,s2="Welcome”,结果输出:“Hi,Welcome!”。请勿改动主函数main与其他函数中的任何内容,仅在fun函数的横线上填写所需的若干表达式或语句。注意:部分源程序给出如下。#include#include#defineLEN100voidftin(char*si,char*s2)inti=0;char*pl=sl;char*p2=s2;while(*(pl+i))i++;for(;*p2;i++)*(pl+i)=*p24-+;*(pl+i)=、0';)main(){charsl|LEN],s2|LEN|;printf(MPleaseinputthestringsiands2:

663M);printf(”

664sl:”);gets(sl);printf(',

665s2:n);gets(s2);printf('Thestringsiands2:

666n);puts(sl);puts(s2);fun(sl,s2);printf('Thenewstringis:

667");puts(sl);)二、改错题下列给定程序中函数fun的功能是:将长整型数中每一位上为偶数的数依次取出,构成一个新数放在b中。高位仍在高位,低位仍在低位。例如,当a中的数为123456时,则b中的数为246o请修改程序中的错误,得出正确的结果。注意:不要改动main函数,不能增行或删行,也不能更改程序的结构。#include#includevoidfun(longa,long*b)(intd;

668longsl=l;*b=0;while(a>0)(d=a%10;if(d%2==0)*b=d*sl+*b;sl*=10;}a/=10;}}main(){longa,b;printf(n

669Pleaseenterdata:");scanf("%ld”,&a);fun(a,&b);printf('Theresultis:%ld

670n,b);}三、编程题请编写函数fun,其功能是:将sir所指字符串中ASCH值为偶数的字符删除。串中剩余字符形成一个新申放入s所指的数组中。例如,若str所指字符串中的内容为12345678,其中字符2的ASCII码值为偶数、字符4的ASCH码值为偶数…都应当删除,其他以此类推。最后s所指的数组中的内容应是1357。请勿改动主函数main与其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。注意:部分源程序给出如下。#include#include#includevoidftin(char*str,chars[])Iinti,j=O,n=strlen(str);fbr(i=0;i

671(charstr|100],s|100|,m[]=',

672Pleaseenterstring:'1;FILE*out;printf(m);scanf(M%s",str);fun(str,s);printf(H

673Theresultis:%s

674'\s);out=fopen(,'outfile.dat,',MwM);fun(m,s);fprintf(out,"%s”,s);fclose(out);第61套上机考试试题一、填空题函数fun的功能是:将形参b所指数组中的前半部分元素的值和后半部分元素的值对换。形参n中存放数组中数据的个数,若n为奇数,则中间的元素不动。例如,若a所指数组中的数据依次为:1122331445566则调换后为:4455661112233«请勿改动主函数main与其他函数中的任何内容,仅在fun函数的横线上填写所需的若干表达式或语句。注意:部分源程序给出如下。#include#defineM7voidfiin(intb[],intn)(intj,temp,p;p=(n%2=0)?n/2:n/2+l;for(j=0;j

675Theoriginaldata:

676M);for(i=O;i

677H);

678ftin(x,M);printf(u

679ThedataaftermovingAn1');for(i=0;i

680,^);二、改错题下列给定程序中函数fun的功能是:将字符串中的内容按逆序输出,但不改变字符串中的内容。例如,若字符串为asdf,则应输出fdsa。请修改程序中的错误,得出正确的结果。注意:不要改动main函数,不能增行或删行,也不能更改程序的结构。#includevoidfun(char*s)(if(*s)(fun(s+l);printf("%c",*s);)}main()(charstr[10]="asdf";printf("dostring=%s

681after='>tr);fun(str);printf("

682");}三、编程题已知学生的记录由学号和学习成绩组成,M名学生的数据已存入stu结构体数组中。请编写函数fun,该函数的功能是:找出成绩最高的学生记录,通过形参返回主函数(规定只有一个最高分)。已给出函数的首部,请完成该函数。请勿改动主函数main与其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。注意:部分源程序给出如下。#include#include#include#defineM10typedefstructss(charnum[10];ints;}SCORE;voidftin(SCOREstu[],SCORE*s)

683{inti,max;max=stu[0].s;for(i=0;imax)max=stu[i].s;*s=stu[i];}}main()(SCOREstu[M]={{”02”,69},{“04”,85},{“01”,91},{“08”,64},{“06”,87},{“015”,85},{“013”,91},{“012164},-Oil”,91},{“017”,64}}皿inti;FILE*out;printfCTheoriginaldata:

684M);for(i=0;i

685'\stu[i].num,stu[i].s);fun(stu,&m);printf('THERESULT:");printf(uThehight:%s,%d

686M,m.num,m.s);out=fopen(,'outfile.dat,',,,wH);fprintf(out,',%s

687%d,,,m.num,m.s);fclose(out);}第62套上机考试试题一、填空题请补充fun函数,该函数的功能是判断一个数的个位数字和百位数字之和是否等于其十位上的数字,是则返回“yes!”,否则返回“no!”。请勿改动主函数main与其他函数中的任何内容,仅在fun函数的横线上填写所需的若干表达式或语句。注意:部分源程序给出如下。#include#includechar*fun(intn)(intt,s,a;t=n%10;s=n/10%10;a=n/100%10;if((t+a)==s)

688return',yes!M;elsereturn^NO!'1;}main()intlen=O;printf(MPleaseinputadata:11);scanf(,,%d,',&len);printf('Theresultis:");printf(u%s

689",fun(len));1二、改错题下列给定程序中函数fun的功能是求出以下分数列的前m项之和,33581321-9—9—9-,,***1235813和值通过函数值返回main函数。例如,若m=10,则应输出16.479905。请修改程序中的错误,得出正确的结果。注意:不要改动main函数,不能增行或删行,也不能更改程序的结构。#include#includedoublefun(intm)(intx,y,z,i;doubles;s=0.0;x=2;y=l;fbr(i=l;i<=m;i++)(s=s+(double)x/y;z=x;x=x+y;y=z;)returns;1main()(intm=10;printf(”

690Thevalueoffunis:%lf

691u,fun(m));}三、编程题请编写函数fun,其功能是:将所有大于1且小于整数n的非素数存入a所指数组中,非素数的个数通过m传回。

692例如,若输入11,则应输出468910请勿改动主函数main与其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。注意:部分源程序给出如下。#include#includevoidfun(intn,int*m,inta[J)(inti,j;intt=0;for(i=2;ivn;i++)(j=2;while(j

693Pleaseenteranntegernumberbetween10and100:");scanf(M%d",&h);fun(h,&k,c);printfC^XnThereare%dnonprimenumberslessthan%d:M,k,h);for(h=0;h

694",k);for(h=0;h

695M,c[h]);fclose(out);第63套上机考试试题

696一、填空题请补充main函数,该函数的功能是:从键盘输入一个字符串并保存在字符si中,把字符串si中下标为奇数的字符保存在字符串s2中并输出。例如,当sl="asdfgh”时则s2="sfh”。仅在横线上填写所需的若干表达式或语句,请勿改动函数中的其他任何内容。注意:部分源程序给出如下。#include#include#defineN80main()(charsl[N],s2[N];char*temp1=s1,*temp2=s2;inti=0,j=0;printf(MPleaseEnterthestring:");scanf(w%s'\sl);printf(H

697Theoriginalstringis:”);while(*(templ+j))(printf("%c",*(temp1+j));j++;)for(i=l;i

698

699Thenewstringis:%s

700M,s2);}二、改错题在主函数中从键盘输入若干个数放入数组中,用0结束输入并放在最后一个元素中。下列给定程序中,函数fun的功能是:计算数组元素中值为正数的平均值(不包括0)。例如,数组中元素的值依次为-24356-90,则程序的运行结果为49.500000。请修改程序中的错误,得出正确的结果。注意:不要改动main函数,不能增行或删行,也不能更改程序的结构。#include#includedoublefun(inta[])(doublesum=0.0;intt=0,i=0;while(a|i]!=0)if(a[i]>0){sum+=a[i];t++;

701}i++;)sum/=t;returnsum;}main()(inta[500];inti=0;printf(M

702Pleaseentersomedata(endwith0):u);do(scanf(M%dn,&a[i]);}while(a[i++]!=0);printf("%lf

703”,fun(a));}三、编程题假定输入的字符串中只包含字母和号,请编写函数ftm,它的功能是:将字符串尾部的“#”号全部删除,前面和中间的“#”号不删除。例如,若字符串中的内容为"###a#b###c##d####",删除后,字符串中的内容则应当是"###a#b###c##d,,o在编写函数时,不得使用C语言提供的字符串函数。请勿改动主函数main与其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。注意:部分源程序给出如下。#include#include#includevoidfun(char*s)(inti=0;char*p,*q;p=q=s;while(*p)P++;P-;while(*p=='#')P-Swhile(q<=p)(s[i]=*q;i++;q++;}s[i]=W;)main()(charstr[100];FILE*out;

704printf("Enterastring:

705H);gets(str);fun(str);printf(*ThestringafterdeletedAn");puts(str);out=fopen("outfHe.dat",“w");strcpy(str,"###A#BC#DE#F#G######");fun(str);fprintf(out,"%s”,str);fclose(out);)第64套上机考试试题一、填空题请补充fun函数,该函数的功能是:按“0”到“9”统计一个字符串中的奇数数字字符各自出现的次数,结果保存在数组num中。注意:不能使用字符串库函数。例如:输入:glters4543123564879fgfd,结果为:1=2,3=2,5=2,7=1,9=1.请勿改动主函数main与其他函数中的任何内容,仅在fun函数的横线上填写所需的若干表达式或语句。注意:部分源程序给出如下。#include#include#defineN500voidfun(char*t,intcount[])(intij;inta[10];char*p=t;for(i=0;i<10;i++)(count[i]=0;a[i]=0;while(*p)(if(*p>='0'&&*p<=9,)a[*p・'O']++;p++;}for(i=1,j=O;i<10;i=i+2,j-H-)count[j]=a[i];)main()(chars[N];

706intcount[10],i;printf("

707Pleaseenteracharstring:H);gets(s);printf(u

708Theoriginalstring:1');puts(s);fun(s,count);printfC^KnThecountberofleter:

709");for(i=0;i<5;i-H-){printfCAn**);printf(',%d=%d,',2*i+1,count[i]);}printf(”

710");)二、改错题下列给定程序中,函数fun的功能是:从字符串s中删除所有小写字母气”。请修改程序中错误,使它能计算出正确的结果。注意:不要改动main函数,不能增行或删行,也不能更改程序的结构。#includevoidfiin(char*str)(intij;fbr(i=j=O;str[i]!=,\O,;i++)if(str[i]!=,c,)str[j++]=str[i];strU>AO';}main()(charstr[100];printf(,FEnterastringwith'c,:n);gets(str);printf('Theoriginalstring:*');puts(str);fun(str);printf(*Thestringafterdeleted:0);puts(str);printf(',

711

712M);1三、编程题M名学生的成绩已在主函数中放入一个带头结点的链表结构中,a指向链表的头结点。请编写函数fun,它的功能是:求出平均分,由函数值返回。例如,若学生的成绩是69、85、91、72、64,则平均分应当是76.200。

713请勿改动主函数main与其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。注意:部分源程序给出如下。#include#include#defineM5structlist(doubles;structlist*next;);typedefstructlistSCORE;doublefun(SCORE*a)(doubleaveuO.O;while(a!=NULL){aver+=a->s;a=a->next;)aver/=M;returnaver;)SCORE*creat(double*stu)(SCORE*a,*p,*q;inti=0;a=p=(SCORE*)malloc(sizeof(SCORE));p->s=O;while(is=stu[i];i++;p->next=q;p=q;)p->next=O;returna;1outlist(SCORE*a)(SCORE*p;p=a->next;printf(nan);

714do{printf("->%4.1f”,p・>s);p=p->next;)while(p!=0);printf(”

715

716");)main()(doublestu[M]={69,85,91,72,64},ave;SCORE*a;FILE*out;a=creat(stu);outlist(a);ave=fun(a);printf(',ave=%6.3f

717',,ave);oul=fopen("outfile.dal",“w");fprintf(out,,,%6.3f\ave);fclose(out);)第65套上机考试试题一、填空题请补充fun函数,该函数的功能是在字符串的最前端加入num个“*”号,形成新串旦覆盖原串。注意:字符串的长度最长允许为49。请勿改动主函数main与其他函数中的任何内容,仅在fun函数的横线上填写所需的若干表达式或语句。注意:部分源程序给出如下。#include#include#includevoidfun(charstr[],intnum)chars[50J,*p;inti;p=str;fbr(i=O;i

718}main()(intnum;charstr[5O];printfC^KnEnterastring:H);gets(str);printf(n

719ThestringA^sX'An';str);printf(n

720Enternumberof*:");scanf(,'%d,',&num);fun(str,num);printf(u

721TheresultString:\,'%s\',

722,,,str);)三、改错题下列给定程序中,fun函数的功能是:求出以下分数序列的前n项之和:2358B21T,2,3,5,T,13和值通过函数值返回main函数。例如:若n=5,则应输出8.391667。请修改程序中的错误,得出正确的结果。注意:不要改动main函数,不能增行或删行,也不能更改程序的结构。#include#includedoublefun(intn)(intx=2,y=l,z,i;doubleresult=0.0;for(i=l;i<=n;i4-+){result=result4-l.0*x/y;z=x;x+=y;y=z;)returnresult;)main()(intn=5;printfCAnThevalueoffunis:%lf

723n,fun(n));)三、编程题请编写函数fun,其功能是将两个两位数的正整数x、y合并成一个整数放在z中。合并的方

724式是:将x的十位和个位数依次放在z的个位和百位上,y的十位和个位依次放在z的十位和千位上。例如,当x=12,y=34,调用该函数后,z=4231o请勿改动主函数main与其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。注意:部分源程序给出如下。#include#includevoidfun(intx,inty,long*z)(*z=(y%10)*1000+(x%10)*100+(y/10)*10+x/10;}main()(intx,y;longz;FILE*out;printf('Inputx,y:H);scanf(M%d%dn,&x,&y);fun(x,y,&z);printf('Theresultis:%ld

725M,z);out=fopen("outfile.dat,,,,,wM);for(x=22;x<52;x+=3){fun(x,109-x,&z);fprintf(out,,,%ld

726,,,z);)fclose(out);第66套上机考试试题一、填空题请补充ftm函数,该函数的功能是:寻找两个整数之间的所有素数(包括这两个整数),把结果保存在数组a中,函数返回素数的个数。例如,输入3和18,则输出357111317o请勿改动主函数main与其他函数中的任何内容,仅在fun函数的横线上填写所需的若干表达式或语句。注意:部分源程序给出如下。#include#include#defineN500intfun(intn,intm,inta[N])(inti,j,k=0,flag;fbr(j=n;j<=m;j4-+)(flag=l;

727fbr(i=2;i

728,^);二、改错题下列给定程序中函数fun的功能是:传入一个整数n,计算如下公式的值:例如,若输入5,则应输出・0.283333。请修改函数fun中的错误或在横线处填上适当的内容并把横线删除,使它能计算出正确的结果。注意:不要改动main函数,不能增行或删行,也不能更改程序的结构。#include#includedoublefun(intn)(doubles=1.0;inti;for(i=2;i<=n;i+4-)s=s-1.0/i;returns;

729}main()(intn;printf(u

730PleaseenterIintegernumbers:

731°);scanf("%d”,&n);printf(n

732

733Theresultis%lf

734M,fun(n));}三、编程题请编写函数fun,其功能是:将两个两位数的正整数a、b合并成一个整数放在c中。合并的方式是:将a的十位和个位依次放在c的百位和个位上,b的十位和个位依次放在c的千位和十位上。例如,当a=45,b=12,调用该函数后,c=1425o请勿改动主函数main与其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。注意:部分源程序给出如下。#include#includevoidfun(inta,intb,long*c)(*c=(b/10)*1000+(a/10)*100+(b%10)*10+a%10;}main(){inta,b;longc;FILE*out;printf('Inputa,b:M);scanf(M%d%d'\&a,&b);fun(a,b,&c);printfCTheresultis:%ld

735n,c);out=fopen(,'outfile.dat,',,,wM);for(a=0;a<10;a++)(fun(a+28,a+82,&c);fprinlf(oul,"%ld

736",c);)fclose(out);)第67套上机考试试题一、填空题请补充fun函数,该函数的功能是计算并输出下列多项式的值:111S=J-||F…d1+21+2+31+2+3+…+50例如:若主函数从键盘给n输入50后,则输出为=1.960784。

737请勿改动主函数main与其他函数中的任何内容,仅在fun函数的横线上填写所需的若干表达式或语句。注意:部分源程序给出如下。#includedoublefun(intn)(inti,j;doublesum=0.0,temp;fbr(i=l;i<=n;i++)(temp=0.0;for(j=l;j<=i;j+4-)temp+=j;sum+=1.0/temp;)returnsum;)main()(intn;doubles;printf(''Pleaseinputn:u);scanf(H%dH,&n);s=fun(n);printf('Theresultis:%f

738

739H,s);}二、改错题下列给定程序中函数fun的功能是:输出N行N列正方阵,然后求两条对角线上各元素之和,返回此和数。请修改程序中的错误,得出正确的结果。注意:不要改动main函数,不能增行或删行,也不能更改程序的结构。#include#include#defineN5intfun(intn,inta[][N])(inti,j,sum=O;printf(M

740The%dx%dmatrix:

741",N,N);fbr(i=O;i

742");

743)fbr(i=0;i

744Thesumofallelementson2diagnalis%d

745'\fun(N,x));1三、编程题请编写一个函数fun,它的功能是:计算n门课程的平均分,计算结果作为函数值返回。例如,若有5门课程的成绩是88、92、80、61.5、55;则函数的值为75.30。请勿改动主函数main与其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。注意:部分源程序给出如下。#includefloatfun(float*b,intm)(floatave=0.0;inti;for(i=0;i

746Averageis:%5.2f

747",aver);out=fopen(,'outfile.dat,,,,,w,');fprintf(out,"%5.2f",aver);fclose(out);)第68套上机考试试题一、填空题请补充main函数,该函数的功能是:计算每个学生科目的平均分,并把结果保存在数组a中。例如,当score[N][M]={{89,78,90,71,61},{78.5,84,83,65,63},{88,91.5,89,93,95},{72.5,65,56,75,77}},

748四个学生的平均分为:77.874.991.369.1。仅在横线上填写所需的若干表达式或语句,请勿改动函数中的其他任何内容。注意:部分源程序给出如下。#include#defineN4#defineM5main()(inti,j;staticfloatscore[N][M]={{89,78,90,71,61},{78.5,84,83,65,63},{88,91.5,89,93,95JJ72.5,65,56,75,77}};floata[NJ;for(i=0;i

749M,i+1,a[i]);}二、改错题下列给定程序中函数fun的功能是:先将在字符串str中的字符按正序存放到s串中,然后把str中的字符按逆序连接到s串的后面。例如,当str中的字符串为asd时,则s中的字符申应为asddsa»请修改程序中的错误,得出正确的结果。注意:不要改动main函数,不能增行或删行,也不能更改程序的结构。#include#include#includevoidfun(char*str,char*s)(inti,sl;sl=strlen(str);for(i=O;i

750charstr[100],s[100];printf("

751Pleaseenterstring:");scanf(M%sH,str);fun(str,s);printfCTheresultis:%s

752'\s);三、编程题请编写函数fun,其功能是:将两个两位数的正整数x、y合并成一个整数放在z中。合并的方式是:将x的十位和个位依次放在z的个位和百位上,y的十位和个位数依次在z的千位和十位上。例如,当x=12,y=34,调用该函数后,z=3241o请勿改动主函数main与其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。注意:部分源程序给出如下。#include#includevoidfun(intx,inty,long*z)(*z=(y/10)*1000+(x%10)*100+(y%10)*10+x/10;)main()(intx,y;longz;FILE*out;printf(Inputx,y:");scanf(M%d%dM,&x,&y);fiin(x,y,&z);printfCTheresultis:%ld

753M,z);out=fopen(',outfile.dat,',MwM);for(x=0;x<10;x4-+)(fun(x+77,x+66,&z);fprintf(out,"%ld

754”,z);}fclose(out);)第69套上机考试试题一、填空题已知学生的记录由学号和学习成绩组成,N名学生的数据已存入student结构体中,给定程序的功能是找出成绩最高的学生记录,通过形参返回主函数。请勿改动主函数main与其他函数中的任何内容,仅在fun函数的横线上填写所需的若干表达式或语句。注意:部分源程序给出如下。#include#include

755#defineN10typedefstructs(charnum|10|;ints;}student;fun(studentSTU[],student*s)(studenta;inti;a=STU[0];for(i=l;ia.s)a=STU[i];*s=a;)main()(studentSTU[N]={{“01”,81},{“02”,89},{”03”,66},{“04”,87},{“05”,77},{“06”,90},{“07”,79},{“08”,61},{”0911,80),{,,10,1,71}},m;inti;printf('TheoriginaldataAn");for(i=0;i

756,',STU[i].num,STU[i].s);fun(STU,&m);printf('Thehighst:%s,%d

757n,m.num,m.s);二、改错题下列给定程序中,函数fun的功能是:计算整数m的阶乘。请修改程序中的错误或在横线处填上适当的内容并把横线删除,使它能计算出正确的结果。注意:不要改动main函数,不能增行或删行,也不能更改程序的结构。#includedoublefun(intm){doubleresult=1.0;while(m>1&&m<100)result*=m—;returnresult;}main()(intm;printf('Enteraninteger<100:");scanf("%dH,&m);printf("

758

759%d!=%lg

760

761'\m,fun(m));)三、编程题请编写函数fun,其功能是:将两个丙位数的正整数x、y合并成一个整数放在z中。合并的方式是:将x的十位和个位依次放在z的千位和十位上,y的十位和个位依次放在z的个位和百位上。例如,当x=12,y=34,调用该函数后,z=1423o请勿改动主函数main与其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若

762干语句。注意:部分源程序给出如下。#include#includevoidfun(intx,inty,long*z)(*z=(x/10)*1000+(x%10)*10+(y%10)*100+y/l0;)main()(intx,y;longz;FILE*out;printf('Inputx,y:M);scanf(M%d%d';&x,&y);fun(x,y,&z);printf('Theresultis:%ld

763",z);out=fopen(,'outfile.dat",,,wM);for(x=0;x<10;x++){fun(x+44,x+55,&z);fprinlf(out,"%ld”,z);}fclose(out);第70套上机考试试题一、填空题请补充main函数,该函数的功能是:输出一个NXN矩阵,要求周边元素赋值0,非周边元素赋值1-仅在横线上填写所需的若干表达式或语句,请勿改动函数中的其他任何内容。#include#defineN10main()(inta[N][N];

764inti,j,n;printf('Pleaseinputn:n);scanf(M%d",&n);fbr(i=O;i

765u);fbr(i=0;i

766n);fbr(j=0;j

767,');二、改错题下列给定程序中,函数fun的功能是:交换主函数中两个变量的值。例如,若变量x中的值为1,y中的值为2,则程序运行后x中的值为2,y中的值为1。请修改程序中的错误,得出正确的结果。注意:不要改动main函数,不能增行或删行,也不能更改程序的结构。#includevoidfiin(int*a,int*b)(intt;t=*a;*a=*b;*b=t;}main()(intx,y;x=l;y=2;fun(&x,&y);printf("theresultis%d,%d

768",x,y);三、编程题学生的记录由学号和成绩组成,M名学生的数据已在主函数中放入结构体数组stu中,请编写函数fun,它的功能是:把小于等于平均分的学生数据放在I所指的数组中,大于等于平均分的学生人数通过形参n传回,平均分通过函数值返回。请勿改动主函数main与其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。

769注意:部分源程序给出如下。#include#defineM10typedefstruct(charnum[10];doubles;}SCORE;doublefun(SCORE*C,SCORE*l,int*n)(doubleaveuO.O;inti,j=0;for(i=0;i

770",n,ave);fbr(i=0;i

771M,low[i].num,low[i].s);printf(n

772n);out=fopen("outfile.dat","w");fprintf(out,M%d

773%7.3f

774'

775,ave);fbr(i=O;i

776(t=low[i];low[i]=low[j];low[j]=t;}fbr(i=0;i

777nJow[i].s);fclose(out);}第71套上机考试试题一、填空题请补充main函数,该函数的功能是:把一个整数插入到一个已经按从小到大顺序排列的数组中,插入后,数组仍然有序。例如:在数组a[N]={1,2,3,456,7,11,15,16}中插入17,结果为a[N]={1,2,3,4,5,6,7,11,15,16,17}。仅在横线上填写所需的若干表达式或语句,请勿改动函数中的其他任何内容。注意:部分源程序给出如下。#include#defineN10main()(inti,j;intn;inta[N]={1,2,3,4,5,6,7,11,15,16);printf(''Pleaseinputn:H);scanf(n%dH,&n);printf(n

778n=%d

779n,n);printf(*Theoriginallistis:

780");for(i=0;ii;j-)a[j]=a|j-n;a[j]=n;break;)if(i==N)a[i]=n;printf("

781TheNewlistis:

782");for(i=0;i

783");

784)二、改错题下列给定程序中,函数fun的功能是:将十进制正整数n转换成i(2#includevoidfun(intn,inti)(inta[20]j;for(j=0;n;j++)(a[j]=n%i;n/=i;)for(;j;j-)printf("%d",a[j-l]);main()intx,num;printfC'XnPleaseenteranumberandabase:

785n);scanf(,'%d%d,\&num,&x);fun(num,x);printfCAn11);三、编程题请编写函数fun,其功能是计算并输出下列多项式的值:2m-12m例如:若主函数从键盘给m输入8后,则输出为F=0.662872。注意:m的值要求大于1但不大于100。请勿改动主函数main与其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。部分源程序给出如下。#includedoublefun(intm)inti;doublefn=0.0;fbr(i=l;i<=m;i+4-)fh+=(1.0/(2*i-1)-1.0/(2*i));returnfn;)

786main()intm;doublef;FILE*out;printfCAnlnputmscanf(M%d,',&m);f^fun(m);printf("

787F=%f

788H,D;out=fopen(,'outfile.dat',/,wn);for(m=5;m<10;m4-+)fprintf(out,"%Rn”,fun(m));fclose(out);第72套上机考试试题一、填空题请补充main函数,该函数的功能是:把一个二维字符数组每行字符串最大的字符拷贝到字符数组市中。例如:如果s[4]={"abt”,"aec”,"ghs”"in”},贝ijsta“test”。仅在横线上填写所需的若干表达式或语句,请勿改动函数中的其他任何内容。注意:部分源程序给出如下。#includemain()(inti=0;char*s[4]={,'abtn;,aec,,,MghsH,,'irtM};char**p;charstr[4];P=s;for(i=0;i<4;i++)(str[i]=*p|i];while(*p[i]){if(str[i]<*p[i])str[i]=*p[i];p[i]++;}]str[i]='\O';printf('Thenewstring

789");puts(str);}二、改错题下列给定程序中,函数fun的功能是:把主函数中输入的3个数,最大的放在x中,最小的放在z中。例如,输入的数为:123,输出的结果应当是:x=3.0,y=2.0,z=1.0。请修改程序中错误,得出正确的结果。注意:不要改动main函数,不能增行或删行,也不能更改程序的结构。#include

790voidfun(float*p,float*q,float*s)(floata;if(*p<*q)(a=*p;*p=*q;*q=a;}if(*s>*p)(a=*s;*s=*p;*p=a;)if(*q<*s)(a=*q;*q=*s;*s=a;main()(floatx,y,z;printf('Inputxyz:");scanf(',&x,&y,&z);printf(nx=%4.1f,y=%4.1f,z=%4.1f

791

792M,x,y,z);fun(&x,&y,&z);printf(Hx=%4.1f,y=%4.1f,z=%4.1f

793

794'\x,y,z);三、编程题

795第73套上机考试试题一、填空题请补充main函数,该函数的功能是:从键盘输入若干字符放到一个字符数组中,当接回车键时结束输入,最后输出这个字符数组中的所有字符。仅在横线上填写所需的若干表达式或语句,请勿改动函数中的其他任何内容。注意:部分源程序给出如下。#include#includemain()inti=0;charstr[81];char*p=str;printf(Inputastring:n);for(i=0;i<100;i++)(str[i|=getchar();if(str[i]=

796*)break;)str[i]=*\O';printf("

797

798Thestringis:*');while(*p)putchar(*p4-+);printf(',

799H);)二、改错题下列给定程序中,函数fun的功能是:给一维数组b输入任意3个整数,并按如下的规律输出。例如输入1、2、3,程序运行后将输出以下方阵:312231123请修改函数ftm中的错误,得出正确的结果。注意:不要改动main函数,不能增行或删行,也不能更改程序的结构。#include#defineN3voidfun(int*b)(inti,j,k,n;printf(nEnter3number:*');for(i=0;i

800

801Theresult:

802

803n);for(i=N;i>0;i-)

804(k=b[N-l];for(j=N-l;j>0;j-)bU]=b[j-l];b[O]=k;for(n=0;n

805'');main()(intb[N];fun(b);printf(u

806

807n);1三、编程题请编写函数fun,它的功能是计算:F=J写(1)+0(2)+/〃(3)…+/〃(〃),F作为函数值返回。在C语言中可调用log(n)函数求In(n)Jog函数的引用说明是:doublelog(doublex)o例如,若n的值为10,则fun函数值为3.886440。请勿改动主函数main与其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。注意:部分源程序给出如下。#include#include#includedoublefun(intn)(inti;doublef=0.0,log(doublex);fbr(i=l;i<=n;i4-+)f=f+log(i);fesqrt(f);returnf;)main()(inti;FILE*out;priiHf("%f

808”,fun(10));out=fopen("outfile.dat,,;,wM);for(i=0;i<10;i++)fprintf(out;,%f

809",fun(i+15));fclose(out);

810第74套上机考试试题一、填空题请补充main函数,该函数的功能是:从键盘输入两个字符串并分别保存在字符数组si和s2中,用字符串s2替换字符串si前面的所有字符,注意:s2的长度不大于si,否则需要重新输入。例如:如果输入sl="cde『,s2="aa”,则输出"aaef"。仅在横线上填写所需的若干表达式或语句,请勿改动函数中的其他任何内容。注意:部分源程序给出如下。#include#includemain()(charsl[81],s2[81];char*pl=sl,*p2=s2;do(printf("Pleaseinputthefirststringsi:");gets(sl);printf(n

811Pleaseinputthesecondstrings2:u);gets(s2);}while(strlen(s1)

812Theresultsiis:");puts(sl);}二、改错题下列给定程序中,函数fun的功能是用下面的公式n的近似值,直到最后一项的绝对值小于指定的数(参数r)为止:九11114357例如:程序运行后,输入0.0001,则程序输出3.1414。请修改程序中的错误,使它能输出正确的结果。注意:不要改动main函数,不能增行或删行,也不能更改程序的结构。#include#includefloatfun(floatr)(ints;floatn,t,pi;t=l;pi=0;n=l;s=l;

813while(fabs(t)>=r){pi=pi+t;n=n+2;s=-s;t=s/n;)pi=pi*4;returnpi;)main()(floatxl,x2;printf("Enterafloatnumber:0);scanf(n%f;&xl);x2=fun(xl);printf(H%6.4f

814M,x2);}三、编程题请编写函数fun,该函数的功能是:将M行N列的二维数组中的字符数据,按列的顺序依次放到一个字符串中。例如:若二维数组中的数据为:****@@@@####则字符串中的内容应是:*®#*@#*@#o请勿改动主函数main与其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。注意:部分源程序给出如下。#include#defineM3#defineN4voidfun(char(*a)[N],char*c)(inti,j,k=O;for(j=0;j

8151main()(inti,j;FILE*out;printf('ThematrixAn1');for(i=0;i

816

817M);out=fopen("outfile.datM,"w");fprintf(out,,,%s,,,s);fclose(out);1第75套上机考试试题一、填空题请补充fun函数,该函数的功能是:把字符的ASCII码为奇数的字符从字符串str中删除,结果仍然保存在字符串str中。字符串str从键盘输入,其长度作为参数传入fun函数。例如,输入“abcdef,则输出“bdf”。请勿改动主函数main与其他函数中的任何内容,仅在fun函数的横线上填写所需的若干表达式或语句。注意:部分源程序给出如下。#include#defineN100voidfun(chars[],intn)(inti,j;j=0;fbr(i=0;i

818charstr[N];printf(HPleaseinputastring:'*);gets(str);while(str[i]!='\0')(len++;i++;)fun(strjen);printf("

819Theresultstring:");puts(str);)二、改错题下列给定程序中,函数fun的功能是:计算函数F(x,y,z)=(x+y)/(x-y)+(z+y)/(z-y)的值。其中x和y的值不等,z和y的值不相等。例如,当x的值为1,y的值为2,z的值为3时,函数值为2.00»请修改程序中的错误,得出正确的结果。注意:不要改动main函数,不能增行或删行,也不能更改程序的结构。#include#include#defineF(m,n)(m/n)floatfun(floata,floatb,floatc)(floats;s=F((a+b),(a-b))+F((c+b),(c-b));return(s);}main()(floatx,y,z,sum;printf('Inputayz:");scanf(M%f%f%f',&x,&y,&z);printf(',x=%f,y=%f,z=%f

820",x,y,z);if(x=ylly==z)(printf(MDataerror!

821n);exit(O);)sum=fun(x,y,z);printf('Theresultis:%5.2f

822M,sum);)三、编程题编写一个函数,从传入的num个字符串中找出最短的一个字符串,传回该串地址(用“叱作为结束输入的标志)。

823请勿改动主函数main与其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。#include#include#includechar*fun(char(*s)[I(X)],intnum)inti;char*min;min=s[O];fbr(i=0;istrlen(s[i]))min=s[i);returnmin;)main()(charstr[10][100],*min;intn,i=O;FILE*out;printf("inputstringwith'**asend:

824M);gets(str[i]);puts(str[i]);while(!strcmp(str[i],n*M)=O)(i++;gets(str[ij);puts(str[i]);)n=i;min=fun(str,n);printf(',

825min=%s

826'\min);out=fopen("outfile.dat","w");strcpy(str[O],Mjust,M);strcpy(str[l],HaM);strcpy(str[2],',test,');strcpy(str[3],MsomeM);strcpy(str[4];,too?!?M);fprintf(out,n%sM,fun(str,5));fclose(out);)第76套上机考试试题一、填空题人员的记录由编号和出生年、月、日组成,N名人员的数据已在主函数中存入结构体数组

827student中,且编号唯一。函数fun的功能是:找出指定编号人员的数据,作为函数值返回,由主函数输出,若指定编号不存在,返回数据中的编号为空串。请勿改动主函数main与其他函数中的任何内容,仅在fun函数的横线上填写所需的若干表达式或语句。注意:部分源程序给出如下。#include#include#defineN8typedefstruct(charnum[10];intyear,month,day;}STUDENT;STUDENTfun(STUDENT*student,char*num)(inti;STUDENTa={n000003n,1979,9,1);for(i=0;i

829Succeed!

830");printf("%s%d-%d-%d

831",s.num,s.year,s.month,s.day);

832))二、改错题下列给定程序中,函数fun的功能是:找出100至n(不大于500)之间三个位上的数字都相等的所有整数,把这些整数放在str所指数组中,个数作为函数值返回。请修改函数fun中的错误,得出正确的结果。注意:不要改动main函数,不能增行或删行,也不能更改程序的结构。#include#defineN100intfun(int*str,intn)(inti,j,k,x,y,z;j=0;for(i=100;i

833Entern(500>n>100):u);scanf(M%dM,&n);}while(n>500);a=fun(b,n);printf(u

834

835Theresult:");fbr(i=0;i

836");)三、编程题编写一个函数,该函数可以统计一个长度为3的字符串在另一个字符串中出现的次数。例如,输入的字符串为asdasasdfgasdaszx67asdmklo,子字符串为asd,则应输出4。请勿改动主函数main与其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。注意:部分源程序给出如下。

837#include#include#includeintfun(char*s,char*s1)intn;char*p,*r;n=0;while(*s)(p=s;r=sl;while(*r)if(*r==*p){r++;P++;}elsebreak;n++;s++;)returnn;}main(){chars|81],sl[4|;intn;FILE*out;printf(uinputmainstring:1*);gets(s);printf(ninputsubstring:");gets(sl);puts(s);puts(sl);n=fun(s,sl);printf(Mn=%d

838",n);out=fopen(',outfile.dat,,,,,w,');strcpy(s,"asdasasdfgasdaszx67asdmkloH);strcpy(sl,nasn);fprintf(out,"%d",fun(s,sl));fclose(out);

839)第77套上机考试试题一、填空题请补充main函数,该函数的功能是:把字符串s中的字符向前移动一位,原来的第一个字符移动到字符串尾,结果仍然保存在原字符串中。例如:输入“Welcome!”,则结果输出“elcome!W"。仅在横线上填写所需的若干表达式或语句,请勿改动函数中的其他任何内容。注意:部分源程序给出如下。#include#defineN80main(){chars[N],ch;inti;printf(nPleaseInputastring:*');gets(s);printf("

840Theoriginalstring:'1);puts(s);ch=s[0];fbr(i=O;s[i+l];i++)s[i]=s[i+l];s[i]=ch;printfC^VnThenewstring:M);puts(s);}二、改错题下列给定程序中的函数link的功能是:创建带头结点的单向链表,并为各结点数据域赋0到max-1的值。请修改函数link中的借误,得出正确的结果。注意:不要改动main函数,不能增行或删行,也不能更改程序的结构。#include#include#includetypedefstructa(intdata;structa*next;}NODE;NODE*link(intn,intmax)(NODE*h=NULL,*p,*s;inti;s=(NODE*)malloc(sizeof(NODE));h=s;p=s;

841fbr(i=l;idata=rand()%(max-1);s->next=p->next;p->next=s;p=p->next;}s->next=NULL;returnh;)printlink(NODE*h)(NODE*p;p=h->next;printf(H

842

843THELIST:

844

845HEADu);while(p)(printf(',->%d",p->data);p=p->next;)printf(u

846M);}main(){NODE*head;head=link(10,20);printlink(head);)三、编程题假定输入的字符串中只包含字母和号,请编写函数fun,它的功能是:除了字符串前导的“#”号之外,将串中其他“#”号全部删除。在编写函数时,不得使用C语言提供的字符串函数。例如:若字符串中的内容为"####as#df##ds#af####",删除后,字符串中的内容则应当是“####asdfdsaf"。请勿改动主函数main与其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。注意:部分源程序给出如下。#include#include#includevoidfun(char*s)(inti=0;char*p=s;while(*p&&*p='#')

847s[i]=*p;i++;P++;}while(*p)(if(*p!=*#1)(s[i]=*p;i++;)P++;)}main()(charstr[100];FILE*out;printf("Enterastring:

848n);gets(str);fun(str);printf('Thestringafterdeleted:'1);puts(str);out=fopen("outfile.dal",“w");strcpy(str/,##asdf^#df^s##");fun(str);fprintf(out,',%s,',str);fclose(out);第78套上机考试试题一、填空题给定程序的功能是计算以下的公式的值:S=f(-n)+f(-n+1)+—+f(O)+f(1)+f(2)+-+f(n)例如,当n为5时函数值应为:10.407143=f函数和fun函数的横线上填写所需的若干表达(x+l)/(x+2)x>0甲饯陶森函数main中Ix=0或x=2式或语句(x_l)/(x—2)x<0注意:部分源程序给出如下。#include#includedoublef(doublex)(if(fabs(x-0.0)

849elseif(x<0.0)return(x-l)/(x-2);elsereturn(x+l)/(x-2);}doublefun(intn)(inti;doubles=0.0,y;for(i=-n;i<=n;i+4-)(y=f(1.0*i);s+=y;)returns;}main()(printf(ntheresultis:%h

850",ftm(5));)二、改错题下列给定程序是建立一个带头结点的单向链表,并用随机函数为各结点数据域赋值。函数fun的作用是求出单向链表结点(不包括头结点)数据域中的最大值,并旦作为函数值返回。请修改函数fun中的错误,得出正确的结果。注意:不要改动main函数,不能增行或删行,也不能更改程序的结构。#include#include#includetypedefstructa(intdata;structa*next;}NODE;fun(NODE*h)(intmax="l;NODE*p;p=h->next;while(p){if(p->data>max)max=p->data;p=p->next;)returnmax;)

851printresult(ints,FILE*pf)(fprintf(pf,HThemaxinlink:%d

852",s);)NODE*link(intn,intm)(NODE*h,*p,*s;inti;h=p=(NODE*)malloc(sizeof(NODE));h->data=9999;for(i=l;i<=n;i++)(s=(NODE*)malloc(sizeof(NODE));s->data=rand()%m;s->next=p->next;p->next=s;p=p->next;)p->next=NULL;returnh;1printlink(NODE*h,FILE*pf)(NODE*p;p=h->next;fprintf(pf,KTHELIST:

853

854HEAD1');while(p)(fprintf(pf,M->%dM,p->data);p=p->next;}fprintf(pf,"

855");}main()NODE*head;intm;head=link(12,100);printlink(head,stdout);m=fun(head);printf(n

856THERESULT:n);printresult(m,stdout);printf(n

857

858n);)三、编程题规定输入的字符串中只包含字母和“#”号。请编写函数fun,它的功能是:将字符串中的前导

859“#,,号全部删除,中间和尾部的■”号不删除。例如,若字符串中的内容为"#####a#b##cd##ef####",删除后,字符串中的内容则应当是"a#b##cd##ef####"。在编写函数时,不得使用C语言提供的字符串函数。请勿改动主函数main与其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。注意:部分源程序给出如下。#include#include#includevoidfun(charts){inti=0;char*p=s;while(*p&&*p=,#*)P++;while(*p)(s[i]=*p;i++;P++;}s[i]='\0f;)main()(charstr[IOO];FILE*out;printf('EnterastringAn1');gets(str);fun(str);printf('Thestringafterdeleted:

860M);puts(str);out=fopen(',outfile.dat,',MwM);strcpy(str;,####ad»#ef##u);fun(str);fprintf(out;'%sn,str);fclose(out);}第79套上机考试试题一、填空题给定程序的功能是将未在字符串si中出现,而在字符串s2中出现的字符,形成一个新的字符串放在s中,s中字符按原字符串中字符顺序排序,但去掉重更字符。例如,当$1="12345”42="24677”时,s中的字符为:“67”.

861请勿改动主函数main与其他函数中的任何内容,仅在fun函数的横线上填写所需的若干表达式或语句。注意:部分源程序给出如下。#include#includevoidfun(char*sl,char*s2,char*s)(inti,j,nl,n2,k,n=0;nl=strlen(sl);n2=strlen(s2);for(i=0;i=n2)(for(k=0;k=n)s[n++]=s2[i];})s[n]=\O\)main()(charsl[100],s2[100],s[100];printfCAnPleaseenterstringsi:");scanf(,'%s',,sl);printf(H

862Pleaseenterstrings2:M);scanf(n%sn,s2);fun(sl,s2,s);printf(*Theresultis:%s

863\s);二、改错题下列给出程序中,函数fun的功能是:根据形参n的值(2Wn<9),在n行n列的二维数组中存放如下所示的数据,由main()函数输出。例如:若输入3,则输出:请修改程序中的错误,得出正确的结果。

864注意:不要改动main函数,不能增行或删行,也不能更改程序的结构。#include#include#defineN10intb[N][N]={0};fun(int(*b)[N],intn)intj,k;for(j=O;j

865");三、编程题假定输入的字符串中只包含字母和“#”号,请编写函数fun,它的功能是:使字符串的前导“#”号不得多余m个;若多余m个,则删除多余的“#”号,若少于或等于m个,则什么也不做,字符串中间和尾部的“#”号不删除。例如,若字符串中的内容为"####adfb##dfs####",设m的值为2,删除后,字符串中的内容则应当是“##adfb##dfs####",若m的值为4,则字符串中的内容仍为"####adfb##dfs####"。m的值在主函数中输入。在编写函数时,不得使用C语言提供的字符串函数。请勿改动主函数main与其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。注意:部分源程序给出如下。#include#includevoidfun(char*s,intm)(inti=0,k=0;char*t=s;while(*t=,#f)(k++;t++;)

866t=s;if(k>m)t=s+k-m;while(*t)(s[i]=*t;i++;t++;}s[i]=*\0*;}main()(charstr[100];intm;FILE*out;printf("Enterastring:

867M);gets(str);printf("Enterm:H);scanf("%d”,&m);fun(str,m);printf('ThestringafterdeletedAn*');puts(str);out=fopen(,,outfile.dat,,,,,wH);strcpy(str,H######asdi##dfs###dsfsM);fun(str,4);fprintf(out,"%s,\str);fclose(out);}第80套上机考试试题一、填空题数组s全由字母字符组成,请补充fun函数,该函数的功能是:请把s中的字母转换成紧接着的下一个字母,如果原来的字母为“a”或"A”,则相应地转换成“b”或"B”,结果仍保存在原数组中。例如:输入“aAZut”,则输出“bBAvu”。请勿改动主函数main与其他函数中的任何内容,仅在fun函数的横线上填写所需的若干表达式或语句。注意:部分源程序给出如下。#include#defineN100voidfun(charp[])(intj;

868for(j=0;pU]!=AO';j++)if(pU]=='z'llp(j]='Z)p[j]-=25;elsePLj]+=>;)main()(chars[N];printf('PleaseInputastring:n);gets(s);printfCAnTheoriginalstring:'1);puts(s);fun(s);printf("

869Thenewstring:");puts(s);1二、改错题下列给定程序中,函数fun的功能是:从整数1到50之间,选出能被3整除且有一位上的数是5的数,并把这些数放在b所指的数组中,这些数的个数作为函数值返回。规定,函数中al放个位数,a2放十位数。请修改程序中的错误,使程序能得出正确的结果。注意:不要改动main函数,不能增行或删行,也不能更改程序的结构。#includeintfun(int*b)(intj,al,a2,i=0;for(j=l;j<=50;j-H-)(a2=j/10;al=j-a2*10;if((j%3=0&&a2=5)IIG%3==0&&al=5))(b[i]=j;i++;})returni;)main()(inta[5O],i,n;n=fiin(a);

870printf('Theresultis:u);fbr(i=O;i

871M);}三、编程题请编写函数fun,其功能是:计算并输出3到m之间所有素数的平方根之和。例如:若主函数从键盘给m输入50后,则输出为s=63.665791。请勿改动主函数main与其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。注意:m的值要大于2但不大于100。部分源程序给出如下。#include#includedoublefun(intm)Iintn,k,i;doublesum=0.0;fbr(n=3;n<=m;n-H-)(k=sqrt(n);for(i=2;i<=k;i++)if(n%i==O)break;if(i>=k+l)sum+=sqrt(n);)returnsum;)main()(intm;doubles;FILE*out;printfCAnXnlnputm:H);scanf("%d”,&m);s=fun(m);printf("

872

873s=%f

874

875",s);out=fopen(,'outfile.dat,,,,,wM);fbr(m=O;m<10;m++)fprintf(out,"%i

876”,fun(m+80));fclose(out);

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。
关闭