计算机二级C语言99套上机操作题及答案

计算机二级C语言99套上机操作题及答案

ID:83054480

大小:525.18 KB

页数:212页

时间:2023-09-20

上传者:无敌小子
计算机二级C语言99套上机操作题及答案_第1页
计算机二级C语言99套上机操作题及答案_第2页
计算机二级C语言99套上机操作题及答案_第3页
计算机二级C语言99套上机操作题及答案_第4页
计算机二级C语言99套上机操作题及答案_第5页
计算机二级C语言99套上机操作题及答案_第6页
计算机二级C语言99套上机操作题及答案_第7页
计算机二级C语言99套上机操作题及答案_第8页
计算机二级C语言99套上机操作题及答案_第9页
计算机二级C语言99套上机操作题及答案_第10页
资源描述:

《计算机二级C语言99套上机操作题及答案》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

华信电脑培训中心内部资料余超整理提供C语言上机操作题华信电脑培训中心内部资料

1.第1套填空题请补充FUN函数,FUN函数的功能是求10的阶乘。注意:部分源程序给出如下。请勿改动主函数main和其他函数中的任何内容,仅在fun函数的横线上填入所编写的若干表达式或语句。试题程序:#includelongfun(intn)(if(—1—)return(n*fun(2));return3;}main()(printf(n10!=%ld

2H,fun(10));)第1处填空:n>l或l#include/★★★★★★★★found★★★★★★★★/IsPrime(intn);{inti,m;m=1;/★★★★★★*★£ound★★★★★★★★/for(i=2;i

3pleaseenteranintegernumberbetween2and10000:,•);scant(n%d",&k);printf(H

4

5Theprimefactor(s)of%dis(are):H,k);for(j=2;j

6");第1处:Isprime(inln);应改为Isprime(intn)第2处:if!(n%i)应该为if(!(n%i))编程题M个人的成绩存放在scom数组中,请编写函数fun,它的功能是:返回低于平均分的认输,并将低于平均分的分数放在below所指的数组中。例如,当score数组中的数据为10、20、30、40、50、60、70、80、90时,函数返回的认输应该是4,below中的数据应我10、20、30、40。

7注意:部分源程序给出如下。请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。试题程序:ttinclude#include#include〈string.h>intfun(intscore[],intm,intbelow[])(}main()(inti,n,below[9];intscore[9]={10,20,30,40,50,60,70,80,90};FILE*out;n=fun(score,9zbelow);printf(H

8Belowtheaveragescoreare:n);out=fopen("out.dat“,);for(i=0;i

9H,below[i]);}fclose(out);)答案是:intfun(intscore[],intm,intbelow[]){intI,k=0,aver=0;for(i=0;iintfun(intn);main()(inti,n=0;scanf(H%dH,&n);for(i=0;i

10return1;elsereturn3;}第1处填空:n==0或0=n或!n第2处填空:n==l或l=n第3处填空:fun(n-l)+fun(n-2)或fun(n-2)+fun(n-l)改错题下列给定程序中,函数FUN的功能是:逐个比较a、b两个字符串对应位置中的字符,把ASCII值大或相等的字符依次存放到c数组中,形成一个新的字符串。例如,若a中的字符串为aBCDeFgH,b中的字符串为:ABcd,则c中的字符串应为:aBcdeFgH。请改正程序中的错误,使程序能得出正确的结果.注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!试题程序:#include#include〈string.h>voidfun(char*p,char*q,char*c)(I★★★★★★★★£ound★★★★★★★★Iintk=1;I★★★★★★★★£ound★★*★★★★★Iwhile(*p!=*q)(if(*p<*q)c[k]=*q;elsec[k]=*p;if(*p)P++;if(*q)q++;k++;})main()(chara[10]="aBCDeFgHn,b[10]="ABcd”,c[80]={'\0'};fun(a,b,c);printf(nThestringa:n);puts(a);printf(nThestringb:n);puts(b);printf(HTheresult:");puts(c);)第1处:intk=l应改为intk=0;第2处:while(*p!=*q)应改为while(*pll*q)编程题请编写函数fun,它的功能是:求出1到1000之内能被7或11整除、但不能同时被7或11整除的所有整数并将它们放在a所指的数组中,通过n返回这些数的个数。注意:部分源程序给出如下。请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。试题程序:#include#includevoidfun(int*a,int*n)()main()(intaa[1000],n,k;FILE*out;fun(aa,&n);out=fopen("out.dat",”w");for(k=0;k

11H,aa[k]);

12fprintf(out,n%d

13n,aa[k]);}else(printf(H%5d,H,aa[k]);fprintf(out,11%d,,aa[k]);)fclose(out);)答案是:voidfun(int*a,int*n)(inti,j=0;for(i=2;i<1000;i++)if((i%7==0lli%ll==0)&&i%77!=0)a「++]=i;*n=j;)填空题请补充函数FUN(CHAR*S),该函数的功能是把字符串中的内容逆置.例如:字符串中原有的字符串为abcde,则调用该函数后,串中的内容为edcba.请勿改动主函数main和其他函数中的任何内容,仅在fun函数的横线上填入所编写的若干表达式或语句。试题程序:#include#include#include#defineN81voidfun(char*s)(inti,n=strlen(s)-1;chart;for(i=0;i

14");printf(nThestringaftermodified:;puts(a);}第1处填空:n--或-n或n-=l或n=n-l第2处填空:s[i]=s[n]或*(s+i)=*(s+n)第3处填空:s[n]=t或*(s+n)=t改错题下列给定的程序中,函数fun的功能是:依次取出字符串中所以数字字符,形成新的字符串,并取代原字符串。请改正函数fun中的错误,使程序能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!

15试题程序:#include#includevoidfun(char*s){inti,j;/********fou.nd********/for(i=0,j=0;s[i]!=1\0';i++)if(s[j]>=10'&&s[i]<=191)s[j]=s[i];/********£ound********/s[j]="\0";)main()charitem[80];printf("

16Enterastring:••);gets(item);printf(H

17

18Thestringis:%s

19n#item);fun(item);printf(n

20

21Thestringofchangingis:%s

22n,item);)第1处:s[j]=s[i];应改为s[j++]=s[i]第2处:s[j]="/O";应改为s[j]=,\(y;编程题请编写函数voidfun(intx,intpp[],int*n),它的功能是:求出能整除x且不是偶数的各整数,并按从小到大的顺序放在pp所指的数组中,这些除数的个数通过形参n返回.例如,若x中的值为30,则有4个数符合要求,它们是1,3,5,15.注意:部分源程序给出如下。请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。试题程序:ttinclude#includevoidfun(intx,intpp[]zint*n)main()(intx,aa[1000],n,i;FILE*out;printf("

23Pleaseenteranintegernumber:

24H);scanf(H%dH,&x);fun(x,aa,&n);for(i=0;i

25");fun(730,aa,&n);out=fopen(nout.dat",”w");for(i=0;i

26n,aa[i]);fclose(out);}答案是:voidfun(intx,inlpp[],int*n)(inti=1,j=O,k=O,*t=pp;for(i=0;i<=x;i++)if(i%2!=0)

27(t[j]=i;j++;)for(i=0;idoublefun(intn)(inti;doublesum=0.0;for(i=l;1;i++)if(i%3==02i%7==0)sum+=3/i;returnsum;)main()(intn;doubles;printf(H

28lnputn:;scanf(n%dn/&n);s=fun(n);printf(H

29

30s=%f

31",s);)第1处填空:i<=n或n>=i第2处填空:II第3处填空:1.0或(double)1改错题下列给定程序中,fun函数的功能是:分别统计字符串中大写字母和小写字母的个数。例如,给字符串s输入:AaaaBBbl23CCccccd,则应输出结果:upper=6,lower^8请改正程序中的错误,使程序能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!试题程序:#include#includeI★★★★★★★★£ound★★★★★★★★Ivoidfun(char*s,inta,intb)(while(*s)(/********found********/if(*s>='A*&&*s<=»Z')a++;I★★★★★★★★£ound★★★★★★★★/if(*s>='a1&&*s<=1z')b++;s++;})

32main()chars[100];intupper=0,lower=0;printf(n

33Pleaseastring:*');gets(s);fun(s,&upper,&lower);printf(*'

34upper=%dlower=%d

35n,upper,lower);第第第1处:voidfun(char*s,inta,intb)应改为voidfun(char*s,int*a,int*b)2处:a++;应改为(*a)++;3处:b++;应改为(*b)++;编程题请编写一个函数voidfun(char*tt,intppn),统计在tt字符串中“a”到“z”26个字母各自出现的次数,并依次存放在pp所指数组中。例如,当输入字符串abcdefgabcdeabc后,程序的输出结果应该是:33322110000000000000000000注意:部分源程序给出如下。请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。试题程序:#include#includevoidfun(char*tt,intpp[]))main(){charaa[1000];intbb[26],k;FILE*out;printf("

36Pleaseenteracharstring:H);scanf(n%sn,aa);fun(aa,bb);for(k=0;k<26;k++)printf(n%d",bb[k]);printf(H

37");fun(Habosomfriendafarbringsadistantlandnear",bb);out=fopen(1•out.dat"znw••);for(k=0;k<26;k++)fprintf(out,"%d

38n,bb[k]);fclose(out);}答案是:voidfun(char*tt,intpp[])(intI;for(i=0;i<26;i++)PP(i]=O;

39while(*tt){switch(九t)case'a':pp[O]++;break;case,b':pp[l]++;break;case,c,:pp[2]++;break;case'd':pp[3]++;break;case'e':pp[4]++;break;case'f':pp[5]++;break;case'g':pp[6]++;break;case'h':pp[7]++;break;case4,:pp[8]++;break;case'j':pp[9]++;break;case,k\pp[10]++;break;case,r:pp[ll]++;break;case,m,:pp[12]++;break;case'n':pp[13]++;break;case*0*:pp[14]++;break;case'p':pp[15]++;break;case'q':pp[16]++;break;case,r,:pp[17]++;break;case"s9:pp[18]++;break;case,t,:pp[19]++;break;caseU:pp[20]++;break;case,':pp[21]++;break;case,w,:pp[22]++;break;case,x\pp[23]++;break;case'y':pp[24]++;break;case'z':pp[25]++;break;tt++;第5套填空题给定程序的功能是求二分之一的圆面积,函数通过形参得到圆的半径,函数返回二分之--的圆面积(注:圆面积公式为:S=成,在程序中定义的变量名要与公式的变量相同)。例如,输入圆的半径值:19.527,输出为:S=598.950017。请勿改动主函数main和其他函数中的任何内容,仅在fun函数的横线上填入所编写的若干表达式或语句。试题程序:#includedoublefun(doubler){return3.14159*1/2.0;}main()(doublex;printf("Enterx:••);scanf(n%lf",2);printf(ns=%lf

40”,fun(3));第1处填空:r*r第2处填空:&x第3处填空:x改错题假定整数数列中的数不重复,并存放在数组中。下列给顶程序中,函数fun的功能是删除数列中值为x的元素,同时将其他元素前移。N中存放的是数列中元素的个数。请改正程序中的错误,使它能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!试题程序:#include#defineN20fun(int*a,intn,intx)(intp=0,i;a[n]=x;while(x!=a[p])P=P+1;if(p==n)(return-1;}else(/★★★★★★★★£ound★★★★★★★★I

41for(i=p;i

42H);for(i=0;i

43lnputx(todelete):n);scanf(n%dH,&x);printf(''Delete:%d

44",x);n=fun(w,n,x);if(n==-1)(printf(n***Notbefound!***

45

46");)else(printf(nThedataafterdelete:

47");for(i=0;i

48

49H);})第1处:a[i+l]=a[i];应改为a[i]=a[i+l]编程题请编写一个函数voidfun(intm,intk,intxx[]),该函数的功能是:将大于整数m且紧靠m的k个素数存入xx所指的数组中。例如,若输入:17,5,则应输出:19,23,29,31,37。注意:部分源程序给出如下。请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。试题程序:#include#includevoidfun(intm,intk,intxx[])main()(intm,n,zz[1000];FILE*out;printf(n

50Pleaseentertwointegers:n);scanf(n%d,%dH,&m,&n);fun(m,n,zz);for(m=0;m

51");fun(28,20,zz);out=fopen("out.dat",,'wn);for(m=0;m<20;m++)fprintf(out,1'%d

52H,zz[m]);

53fclose(out);}答案是:voidfun(intm,intk,intxx[])(intg=O,I,j,flag=l;for(i=m+1;i=i)(if(k>=0)(xx[g++]=l;k--;)elsebreak;)填空题给定程序的功能是计算并输出下列级数的前N项之和Sn,直到Sn大于Q为止,Q的值通过形参传入。例如,若Q的值为50.0,则函数值为50.416687o请勿改动主函数main和其他函数中的任何内容,仅在fun函数的横线上填入所编写的若干表达式或语句。试题程序:#includedoublefun(doubleq)('intn;doubles;n=2;s=2.0;while(s1q)(■一■■■s=s+(double)(n+1)/n;―2—;}printf(Hn=%d

54n,n);3;)main()(printf(n%f

55n,fun(50));)第1处填空:<=第2处填空:n++或n+=l或n=n+l

56第3处填空:returns或return(s)改错题下列给定程序中,函数fun的功能是:根据整型参m的值,计算如下公式的值。例如,若m中的值为5,则应输出:0.536389请改正程序中的错误,使程序能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!试题程序:ttinclude#includedoublefun(intm)(doubley=1.0;inti;/********found********/for(i=2;i

57Theresultis%lf

58"zfun(n));}第1处:for(i=2;i#include#defineLEN20voidfun(chara[],charb[],intn))main()(charstrl[LEN],str2[LEN];intn;FILE*out;printf(nEnterthestring:

59n);gets(strl);printf("Enterthepositionofthestringdeleted:");scanf(“之d”,&n);fun(strl,str2,n);printf(nThenewstringis:%s

60n,str2);fun(nHelloWorld!H,str2,9);out=fopen(nout.dat",HwH);fprintf(out,n%s",str2);fclose(out);)答案是:

61voidfun(chara[],charb[],intn){intI,j=0;for(i=0;iintcl,c2,c3;voidfun(longn)(cl=c2=c3=0;while(n)(switch(1)(case1:cl++;―2_;case2:c2++;―3_;case3:c3++;}n/=10;main()(longn=123114350L;fun(n);printf(n

62Theresult:

63n);printf(nn=%ldcl=%dc2=%dc3=%d

64H,n,cl,c2,c3);)第1处填空:n%10第2处填空:break第3处填空:break改错题下列给定程序中函数fun的功能是:用选择法对数组中的n个元素按从小到大的顺序进行排序。请改正程序中的错误,使程序能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!试题程序:ttinclude#defineN20voidfun(inta[],intn){

65inti,j,t,p;for(j=0;j

66");fun(a,m);printf(HAADd°6£°•,);for(i=0;i

67");}第1处:p=j应改为p=j;第2处:p=i应改为p=j;编程题请编写一个函数intfun(int*s,intt,int*k),用来求出数组的最大元素在数组中的下标并存放在k所指的存储单位中。例如,输入如下整数:876675896101301401980431451777则输出结果为:6,980o注意:部分源程序给出如下。请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。试题程序:#include#includevoidfun(int*s,intt,int*k){}main(){inta[10]={876,675,896,101,301,401,980r431,451,777},k;FILE*out;fun(a,10,&k);printf(,,%d/%d

68H,k,a[k]);out=fopen("out.dat","wH);

69fprintf(out,n%d

70%d",k,a[k]);fclose(out);}答案是:voidfun(int*s,intt,int*k)(intI,max;max=s[0];for(i=0;imax)max=s[i];*k=I;))第8套填空题请补充main函数,该函数的功能是:从键盘输入一组整数,使用条件表达式找出最大的整数。当输入的整数为0时结束。例如,输入123540时,最大的数为5。请勿改动主函数main和其他函数中的任何内容,仅在fun函数的横线上填入所编写的若干表达式或语句。试题程序:#include#include#defineN100main()(intnum[N];inti=-1;intmax=0;printf(n

71lnputintegernumber:

72n);do(i++;printf("num[%d]=n,i);scanf(n%dnf1);max=2num[i]:max;}while(3);printf(nmax=%d

73H,max);)第1处填空:&num[i]或num+i第2处填空:maxvnum[i]?或num[i]>max?第3处填空:num[i]!=0或0!=num[i]改错题下列给定程序中,函数fun的功能是:在字符串str中找出ASCH码值最大的字符,将其放在第一个位置上;并将该字符前的原字符向后顺序移动。例如,调用fun函数之前给字符串输入:ABCDeFGH,调用后字符串中的内容为eABCDFGH请改正程序中的错误,使程序能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!

74试题程序:#include/********found********/voidfun(char*p);{charmax,*q;inti=0;max=p[i];while(p[i]!=0)(■if(maxp)(*q=*(q-1);q--;)p[0]=max;}main()(charstr[80];printf(HEnterastring:");gets(str);printf(M

75Theoriginalstring:");puts(str);fun(str);printf(

76Thestringaftermoving:11);puts(str);printf(H

77

78n);}第1处:voidfun(char*p);应改为voidfun(char*p)第2处:p=q+I;应改为q=p+i;编程题编写函数fun,函数功能是:根据以下公式计算s,计算结果作为函数值返回;n通过型参传入由c•111S=1H1F41+21+2+31+2+3+.・・刀例如:若n的值为的时,函数的值为1.833333。注意:部分源程序给出如下。请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。试题程序:#include#include#includefloatfun(intn)

79{}main()(intn;floats;FILE*out;printf(n

80PleaseenterN:");scanf(n%dHz&n);s=fun(n);printf(nTheresultis:%f

81u,s);s=fun(28);out=fopen(nout.datn,,,w,1);fprintf(out,**%f,*,s);fclose(out);)答案是:floatfun(intn)(inti;floats=l.O,t=l.O;for(i=2;i<=n;i++)(t=t+i;s=s+l/t;}returns;给定程序的功能是分别统计字符串中大写字母和小写字母的个数。例如,给字符串SS输入:AaaaBBbl23CCccccd,则输出结果应为:upper=5,lower=9o请勿改动主函数main和其他函数中的任何内容,仅在fun函数的横线上填入所编写的若干表达式或语句。试题程序:#includevoidfun(char*s,int*a,int*b)while(*s)(if(*s>='A*&&*s<='Z')―1―;if(*s>=1a1&&*s<=1z')2;s++;})main()(chars[100];

82intupper=0,lower=0;printf(1'

83Pleaseastring:");gets(s);fun(s,&upper,slower);printf(11

84upper=%dlower=%d

85n,3);)第1处填空:(*a)++或++(*a)或*a=*a+l或*a+=l第2处填空:(*b)++或++(*b)或*b=*b+l或*b+=l第3处填空:upper,lower改错题下列给定程序中,函数fun的功能是:从n个学生的成绩中统计出低于平均分的学生人数,此人数由函数值返回,平均分存放在行参aver所指的存储单元中。例如,若输入8名学生的成绩:

8680.5607290.59851.58864则低于平均分的学生人数为4(平均分为:75.5625).请改正程序中的错误,使程序能统计出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!试题程序:#include#include#defineN20intfun(float*s,intn,float*aver)(floatave,t=0.0;intcount=0,k,i;I★★★★★★★★£ound★*★★★★★★Ifor(k=0;k

87Pleaseenterm:");scanf(n%dn,&m);printf(n

88Pleaseenter%dmark:

8911,m);for(i=0;i

90Thenumberofstudents:%d

91n,fun(s,m,&aver));printf(nAve=%f

92H,aver);1处:t=s[k];应改为t+=s[k];2处:*aver=&ave;应改为*aver=ave;编程题编写函数fun,它的功能是:根据以下公式求p的值,结果由函数值带回。M与n为两个正整数且要求m>no(加一〃)!例如:m=12,n=8时,运行结果为495.000000注意:部分源程序给出如下。请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。试题程序:#include#includefloatfun(intm,intn)main()(FILE*out;printf(HP=%f

93H,fun(12,8));out=fopen(nout.dat,"wH);fprintf(out,n%fH,fun(12,6));fclose(out);

94)答案是:floatfun(intm,intn)(floatp,t=l.O;inti;for(i=1;i<=m;i++)t=t*i;P=t;for(t=1.0,i=l;iv=n;i++)t=t*i;p=p/t;for(t=1.0,i=1;i<=m-n;i++)t=t*i;p=p/t;returnp;第10套填空题请补充main函数,该函数的功能是:从键盘键盘输入3个整数然后找出最大的数并输出。例如,输入:124543,输出为45注意:部分源程序给出如下。仅在横线上填入所编写的若干表达式或语句,勿改动函数中的其他任何内容。试题程序:#include#includemain()(inta,b,c,max;printf(H

95lnputthreenumbers:

96");scanf(n%d,%dz%dn,&a,&b,ac);printf(nThethreenumbersare:%d,%d,%d

97",a,b,c);if(a>b)1;else―2_;if(max

98n,max);}第1处填空:max=a第2处填空:max=b第3处填空:max=c改错题下列给定程序中,函数fun的功能是:将s所指字符串出现的tl所指子串全部替换成t2所指子字符串,错形成的新串放在w所指的数组中。在此处,要求tl和t2所指字符串的长度相同。例如,当s所指字符串的内容为abcdabfab,tl所指子串中的内容为ab,t2所指子串中的内容为99时,结果,在w所指的数组中的内容为99cd99f99。请改正程序中的错误,使程序能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!试题程序:ttinclude#include#include/********found********/voidfun(char*s,*tl,*t2,*w)

99inti;char*p,*r,*a;strcpy(w,s);while(*w)(P=w;r=tl;/★★★★★★★★found★★★★★★★★/while(r)if(*r==*p)(r++;P++;)else(break;)if(*r==1\01)(a=w;r=t2;while(*r)(*a=*r;a++;r++;)w+=strlen(t2);)else(W++;main()(chars[100],tl[100]zt2[100],w[100];printf("

100Pleaseenterstrings:H);scanf(H%sH,s);printf(n

101Pleaseentersubstring11:1');scanf(,tl);printf("

102Pleaseentersubstringt2:H);scanf(H%sn,t2);if(strlen(tl)==strlen(t2))(fun(s,tl,t2,w);printf("

103Theresultis:%s

104",w);}.else(printf(*'Error:strlen(tl)!=strlen(t2)

105M);})第1处:voidfun(char应改为voidfun(char*s,char*tl,char*t2,char*w)第2处:while(r)应改为while(*r)

106编程题编写函数fun,它的功能是:利用以下所示的简单迭代方法求方程式cos(x)-x=0的一个实根。X“+1=cos(X“)迭代步骤如下:(1)取xl初值为0.0;(2)x0=xl,把xl的值赋给x0;(3)xl=cos(xO),求出一个新的xl;(4)若xO-xl,的绝对值小于0.000001,则执行步骤(5),否则执行步骤(2);(5)所求xl就是方程cos(x)-x=0的一个实根,作为函数值返回。程序将输出结果Root=0.739085o注意:部分源程序给出如下。请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。试题程序:#include#include#includefloatfun()main(){FILE*out;floatf=fun();printf(MRoot=%f

107",f);out=fopen(*'out.datn,MwH);fprintf(out,'1%fH,f);fclose(out);)答案是:floatfun()(floatxl=0.0,x0;do(x0=xl;xl=cos(x0);while(fabs(xO-xl)>=le-6);returnx1;第11套填空题给定程序中,涵数fun的功能是:把形参s所指字符串中下标为奇数的字符右移到下一个奇数位置,最右边被移出字符串的字符串的字符绕回放到第一个奇数位置,下标为偶数的字符不动(注:字符串的长度大于等于2)例如,形参s所指的字符串为:abcdefgh,执行结果为:ahcbedgf.注意:部分源程序给出如下。仅在横线上填入所编写的若干表达式或语句,勿改动函数中的其他任何内容。试题程序:#includevoidfun(char*s)(inti,n,k;charc;

108n=0;for(i=0;s[i]!=•\0';i++)n++;if(n%2==0)k=n-1;elsek=n-2;c=2;for(i=k-2;i>=l;i=i-2)s[i+2]=s[i];s[1]=3;)main()(chars[80]="abodefgh";printf(H

109Theoriginalstringis:%s

110H,s);fun(s);printf(H

111Theresultis:%s

112H,s);1第1处填空:1第2处填空:s[k]或*(s+k)第3处填空:c改错题下列给定程序中,函数FUN的功能是:将一个由八进制数字字符组成的字符串转换为与其面值相等的十进制整数。规定输入的字符串最多只能包含5位8进制数字。例如,若输入77777,则输出将是32767。请改正程序中的错误,使它能得出正确结果。注意:不要改动MAIN函数,不得增行或删行,也不要更改程序的结构!试题程序:tfinclude#include#includeintfun(char*p)(intn;I********£ound********!

113n=*p-'o1;P++;I★*******£ound********Iwhile(*p!=0){n=n*7+*p-'o';P++;}returnn;)main(){chars[6];inti;intn;printf(nEnterastring(octaldigits):n);gets(s);if(strlen(s)>5)(printf(nError:stringtoolonger!

114

115n);exit(0);}for(i=0;s[i];i++)if(s[i]<»0,||s[i]>'7')(printf("Error:%cnotisoctaldigits!

116

117",s[i]);exit(0);)printf(nTheoriginalstring:M);puts(s);n=fun(s);printf(H

118%sisconveredtointegenumber:%d

119

120n,s,n);)一一第1处:n=*p「o<应改为n=*p-t0,;第2处:n=n*7+*p/o';应改为n=n*8+*p-40\编程题下列程序定义了NXN的而维数组,并在主函数中自动赋值。请编写函数fun(inta[][N]),该函数的功能是:使数组左下半三角元素的值会全部置成0o197238,则返回主程序后a数组中的值应为456例如:a数组中的值为097008O000注意:部分源程序给出如下。请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。试题程序:#include#include#include#defineN5voidfun(inta[][N])main()inta[N][N]ri,j;FILE*out;printf(»•*****Thearray*****

121n);for(i=0;i%10;

122printf(«%4d%a[i][j]);}printf("

123");}fun(a);printf(nTHERESULT

124");for(i=0;i

125n);}for(i=0;i

126H);)fclose(out);)答案是:intfun(intal][N])(inti,j;for(i=0;ivN;i++)for(j=0;j<=I;j++)a[i]U]=0;)第12套填空题请补充fun函数,该函数的功能是字符串tt中的大写字母都改为对应的小写字母,其它字符不变.例如,若输入"AreyoucomefromSichuan?则输出","areyoucomefromsichuan?"注意:部分源程序给出如下。仅在横线上填入所编写的若干表达式或语句,勿改动函数中的其他任何内容。试题程序:#include#include#includechar*fun(chartt[]){inti;for(i=O;tt[i];i++)(if{(tt[i]>='A')&&(1))tt[i]+=2}return(3);)main()

127(chartt[81];printf(n

128Pleaseenterastring:");gets(tt);printf(H

129Theresultstringis:

130%sH,fun(tt));)第1处填空:tt[i]v=,z,或"第2处填空:32或第3处填空:tl改错题下列给定程序中函数FUN的功能是:求出在字符串中最后一次出现的子符串的地址,通过函数值返回,在主函数中输出从此开始的字符串:若未找到,则函数值为NULL。例如,当字符串中的内容为abcdabfabcdx,t中的内容为ab时,输出结果应是:abcdx,当字符串中的内容为abcdabfabcdx,t中的内容为abd时,则程序输出未找到信息:notbefound!。请改正程序中的错误,使它能得出正确结果。注意:不要改动MAIN函数,不得增行或删行,也不要更改程序的结构!试题程序:#include#include#includechar*fun(char*s,char*t)char*pz*r,*a;I★★★★★★★★£ound★★★★★★★★Ia=NuLL;while(*s)(p=S;r=t;while(*r)/★★★★★★★★£ound★★★★★★★★/if(r==p)(r++;P++;)else(break;)if(*r==,\0')a=s;s++;)returna;}main()(chars[100],t[100]z*p;printf(H

131pleaseenterstrings:H);scant(n%s",s);printf(H

132pleaseentersubstringt:");scanf(n%sn,t);p=fun(s,t);if(p)printf(n

133theresultis:%s

134H,p);else

135printf("

136notfound!

137n);)第1处:a=NULL;应改为a=NULL;第2处:if(r=p)应改为if(*r==*p)编程题下列程序定义了NXN的而维数组,并在主函数中自动赋值。请编写函数fun,函数的功能是:求出数组周边元素的平均值并作为函数值返回给主函数中的s则返回主程序后s的值应为3.375.注意:部分源程序给出如下。请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。试题程序:#include#include#include#defineN5doublefun(intw[][N]))main()(inta[N][N]={0,1,2,7,9,1,9,7,4,5,2,3,8,3,1,4,5,6,8,2,5,9,1,4,1};inti,j;FILE*out;doubles;printf(»******Thearray*****

138");for(i=0;i

139n);s=fun(a);printf(»•*****THERESULT*****

140n);printf("Thesumis%lf

141n,s);out=fopen(1'out.dat,"w");fprintf(out,s);fclose(out);}答案是:doublefun(intw[][N])(inti,j,k=O;doubles=0.0;for(j=O;j

142)for(j=0;j#include1il)return(*'yes!");elsereturn(*'no!");)main()(intk=0;printf(nInput:n);scanf(n%dH,&k);

143printf(H%s

144H,fun(k));)第1处填空:char*fun(intn)第2处填空:2第3处填空:n%i=或!(n%i)或O=n%i改错题下列给定程序中,FUN函数的功能是:根据形参M,计算如下公式的值。1111—I—HF...HT=l+234m例如,若输入5,则应输出2.283333.请改正程序中的错误或在横线处填上适当的内容并把横线删除,使它能计算出正确的结果。注意:不要改动MAIN函数,不得增行或删行,也不要更改程序的结构!试题程序:#include#includedoublefun(intm)(doublet=1.0;inti;I★★★★★★★★£ou,nd★★★★★★★★Ifor(i=2;i<=m;i++)t+=1.0/k;/★★★★★***£ound***★★★★★/tied)一main()(intm;printf("

145pleaseenter1integernumbers:

146H);scanf(H%dn,&m);printf(*'

147

148theresultis%lf

149H,fun(m));)第1处:t+=1.0/k;应改为t+=1.0/i;第2处:应填returnt;编程题请编写一个函数voidfun(inttt[M][N]),tt提向一个M行N列的二维数组,求出二维数组每列中最小元素,并依次放入PP所指的一维数组中。二维数组中的数已在主函数中赋予。注意:部分源程序给出如下。请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。试题程序:#include#include#defineM3#defineN4voidfun(inttt[M][N],intpp[N])main()(intt[M][N]={{22,45,56,30},

150{19,33,45,38},{20,22,66,40}};intp[N],i,j,k;FILE*out;printf(nTheoriginaldatais:

151u);for(i=0;i

152n);}fun(t,p);printf(H

153Theresultis:

154");for(k=0;k

155");out=fopen(1'out.dat••,HwH);for(k=0;k

156n,p[k]);fclose(out);)答案是:vidfun(inttt[M][N],intpp[N])(inti,j,min;for(j=0;j#includevoidfun(char*s)(inti=0;char*p=s;while(1)(if(*p>=•a•&&*p<=,z')(s[i]=*p;2;)P++;}s[i]=_3_;}main(){

157charstr[80];printf(n

158Enterastring:',);gets(str);printf(n

159

160Thestringis:%s

161H,str);fun(str);printf(1'

162

163Thestringofchangingis:%s

164u,str);)第1处填空:*p或*p!=,\(r或*p!=0第2处填空:i++或++i或i+=l或i=i+l第3处填空:、0,或0改错题下列给定程序中,函数FUN和FUNX的功能是:用二分求方程-4丁+3x-6=0的一个根,并要求绝对误差不超过0.001。例如,若出给m输入100,给n输入90,则函数求得的一个根值为2.000。请改正程序中的错误,使它能得出正确结果。注意:不要改动MAIN函数,不得增行或删行,也不要更改程序的结构!试题程序:#include#includedoublefunx(doublex)(return(2*x*x*x-4*x*x+3*x-6);}doublefun(doublem,doublen)(/********found********/intr;r=(m+n)/2;/★★★★★★*★£ound★★★★★★★★/while(fabs(n-m)<0.001)if(funx(r)*funx(n)<0)m=r;elsen=r;r=(m+n)/2;}returnr;)main()(doublem,n,root;printf(HEntermn:

165n);scanf(n%lf%lfn,&m,&n);root=fun(m,n);printf(nroot=%6.3f

166H,root);)第1处:intr;应改为doubler;第2处:while(fabs(n-m)vO.OOl)应改为while(fabs(n-m)>0.001)编程题请编写fun函数,函数的功能是求出二维数组周边的元素之和,作为函数值返回,二维数例如:若二维数组中的值为:13579299946999813570则函数为61。注意:部分源程序给出如下。

167请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。试题程序:#include#include#defineM4#defineN5intfun(inta[M][N])main()(intaa[M][N]={{1,3,5,7,9},{2,9,9,9,4},{6,9,9,9,8},{1,3,5,7,0}};inti,j,y;FILE*out;printf("Theoriginaldatais:

168n);for(i=0;i

169");y=fun(aa);printf(H

170Thesum:%d

171H,y);printf(n

172");out=fopen(*'out.dat",MwH);fprintf(out,n%dH,y);fclose(out);)答案是:intfun(inta[M][N])(inti,j,s=O;for(j=0;j#include

173Voidfun(char*str,charch){while(*str&&*str!=ch)str++;If(*ste_1_ch){str[O]=ch;_2_=0;))Main(){chars[81],c;Printf(4t

174pleaseenterastring:

175");gets(s);PrintfCAnpleaseenterthecharactertosearch:C=getchar();Fun(_3_);Printf(i4

176Theresultis%s

177M,s);第1处填空:!=第2处填空:str[ljWc*(str+l)第3处填空:s,c

178改错题下列给定程序中,函数FUN的功能是:判断字符CH是否与STR所指串中的某个字符相同:若相同,则什么也不做,若不同,则将其插在串的最后。请改正程序中的错误,使它能得出正确结果。注意:不要改动MAIN函数,不得增行或删行,也不要更改程序的结构!试题程序:ttinclude#include#includeI★★★★★★★★£ound★★★★★★★★Ivoidfun(charstr,charch)(while(*str&&*str!=ch)str++;/********found********/if(*str==ch)(str[0]=ch;/********found********/str[1]=101;})main(){chars[81],c;printf("

179Pleaseenterastring:

180H);gets(s);printf("

181Pleaseenterthecharactertosearch:");c=getchar();fun(s,c);处处处123}第第第printf(n

182Theresultis%s

183n,s);:voidfun(charstr,charch)应改为voidfun(char*str,charch):if(*str==ch)应改为if(*str==,\O,):strUk'O';应改为str[l]='\O';或str[lJ=O编程题请编写个函数unsignedfun(unsignedw),w是一个大于10的无符号整数,若w是n(n>=2)位的整数,则函数求出w的后n-1位作为函数值返回。例如:w值为5923,则函数返回923,若w值为923,则函数返回23注意:部分源程序给出如下。请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。试题程序:#include#includeunsignedfun(unsignedw)main()unsignedx;FILE*out;printf('•Enteraunsignedintegernumber:11);scanf("为u",&x);printf(nTheoriginaldatais:%u

184n,x);if(x<10)printf("Dataerror!n);elseprintf('•Theresult:%u

185M,fun(x));out=fopen("out.dat",HwH);fprintf(out,n%un,fun(28));fclose(out);)

186答案是:unsignedfun(unsignedw)(unsignedt,s=O,s1=1,p=0;t=w;while(t>10)(if(t/10)p=t%10;s=s+p*sl;s1=s1*10;t=t/10;)returns;)第16套填空题请补充fun函数,该函数的功能是:判断一个年份是否为闰年.例如,1900年不是闰年,2004是闰年.注意:部分源程序给出如下请勿改动主函数main和其他函数中的任何内容,仅在fun函数的横线上填如所编写的若干表达式或语句。试题程序:#include#includeintfun(intn)(intflag=0;if(n%4==0)if(_1_)flag=1;if(_2_)flag=1;return3;)main()(intyear;printf(nInputtheyear:;scanf(H%dH,&year);if(fun(year))printf(*'%disaleapyear.

187H,year);elseprintf(*'%disnotaleapyear.

188n,year);}第1处填空:n%100!=0或0!=n%100第2处填空:N400==0或!(n%400)或0==n%400第3处填空:flag改错题下列给定程序中的函数Creatlink的功能是:创建带头结点的单向链表,并为各结点数据域赋0到M-1的值。请改正程序中的错误,使它能得出正确结果。注意:不要改动MAIN函数,不得增行或删行,也不要更改程序的结构!试题程序:#include

189#include#includetypedefstructaa(intdata;structaa*next;}NODE;NODE*Creatlink(intn,intm)(NODE*h=NULL,*p,*s;inti;s=(NODE*)malloc(sizeof(NODE));h=s;I***★★***£ound********Ip->next=NULL;for(i=l;idata=rand()%m;s->next=p->next;p->next=s;p=p->next;)s->next=NULL;I★★★★★★★*£ound★★★★★★★★Ireturnp;)outlink(NODE*h)(NODE*p;p=h->next;printf(H

190

191THELIST:

192

193HEAD”);while(p)(■printf(1'->%d",p->data);p=p->next;}printf(H

194");}main()NODE*head;head=Creatlink(8,22);outlink(head);)第1处:p・>next=NULL;应改为p=s;第2处:s->data=rand()%m;应改为s->data=rand()%(m-1)第3处:returnp;应改为returnh;编程题请编写一个函数floatfun(doubleh),函数的功能是对变量h中的值保留2位小数,并对第三位进行四舍五入(规定h中的值为正数)例如:若h值为&32433,则函数返回8.32,若h值为&32533,则函数返回8.33#include#includefloatfun(floath)main()(floata;FILE*out;printf(nEntera:n);scanf(•,%fn,&a);printf("Theoriginaldatais:n);printf(H%f

195

196H,a);printf(nTheresult:%f

197n,fun(a));out=fopen(•*out.dat,,,wn);

198fprintf(out,M%fn,fun(3.141593));fclose(out);)答案是:floatfun(floath)(longt;floats;h=h*1000;t=(h+5)/10;s=(float)t/100.0;returns;第17套填空题给定程序的功能是将n个人员的考试成绩进行分段统计,考试成绩放在a数组中,各分段的人数存到b数组中:成绩为60到69的人数存到b[0]中,成绩为70到79的人数存到b[l],成绩为80到89的人数存到b[3],成绩为100的人数存到b[4],成绩为60分以下的人数存到b⑸中例如,当a数组中的数据是:93、85、77、68、59、43、94、75、98。调用该函数后,b数组中存放的数据应是1、2、1、3、0、2。注意:部分源程序给出如下请勿改动主函数main和其他函数中的任何内容,仅在横线上填如所编写的若干表达式或语句。试题程序:#includevoidfun(inta口,intb[],intn){inti;for(i=0;i<6;i++)b[i]=0;for(i=0;i<1;i++)if(a[i]<^60j-b⑸++;2b[(a[i]-60)/10]++;)main()(inti,a[100]={93,85,77,68,59,43,94,75,98},b[6];fun(3,9);printf("theresultis:");for(i=0;i<6;i++)printf("%d",b[i]);printf("

199");}第1处填空:n第2处填空:else第3处填空:a,b改错题下列给定程序中,函数FUN的功能是:计算并输出K以内最大的10个能被13或17整除的自然数之和。K的值由主函数传入,若K的值为500,则函数值为4622。

200请改正程序中的错误或在横线处境上适当的内容并把横线删除,使它能得出正确结果。注意:不要改动MAIN函数,不得增行或删行,也不耍更改程序的结构!试题程序:ttinclude#includeintfun(intk)(intm=0,me=0;while((k>=2)&&(mc<10))(I********found********/if((k%13=0)||(k%17=0))(m=m+k;mc++;)k--;}returnm;I★★★*★★★★found*★★★★★★★I_ilc6_main()printf(n%d

201",fun(500));第1处:if((k%13=0)ll(k%17=0))应改为if((k%13==0)ll(k%17==0))第2处:应填}编程题请编写一个函数fun(char*s)该函数的功能是把字符串中的内容逆置。例如:字符串中原有的字符串为abcdefg,则调用该函数后,串中的内容为gfedcba.注意:部分源程序给出如下。请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。试题程序:#include#include#include#defineN81voidfun(char*s)main()(chara[N];FILE*out;printf(HEnterastring:");gets(a);printf("Theoriginalstringis:");puts(a);fun(a);printf(n

202");printf("Thestringaftermodified:puts(a);strcpy(a,HHelloWorld!n);fun(a);out=fopen("out.dat",HwH);fprintf(out,1'%s",a);fclose(out);)答案是:voidfun(char*s)(charch;

203inti,m,n;i=0;m=n=strlen(s)-l;while(i<(n+l)/2)(ch=s[i];s[i]=s[m];s[m]=ch;i++;m—;)第18套填空题Str为一个字符序列.请补充FUN函数的功能是:查找STR中值为X的元素,返回找到值为X的元素个数,并把这些值为X的元素下标依次保存在数组BB中.例如,在“abcdefahi『中查找'A',结果为:2个4,下标依次为0、6。注意:部分源程序给出如下请勿改动主函数main和其他函数中的任何内容,仅在横线上填入所编写的若干表达式或语句。试题程序:#include#include#defineN20intbb[N];intfun(char*str,charch)(inti=0,n=0;chart=ch;char*p=str;while(*p)(if(—1—)2;P++;i++;}return3;}main()(charstr[N];charch;inti,n;printf(••*******inputtheoriginalstring*******

204*');gets(str);printf("*******TheOriginalstring*******

205n);puts(str);printf(••*******inputcharacter*******

206H);scanf(”%c”,&ch);n=fun(str,ch);printf(n

207Thenumberofcharacteris:%d

208H,n);printf(••*******Thesuffixofcharacter*******

209");for(i=0;i

210输出为:A=65B=60o请改正程序中的错误,使它能得出正确结果。

211注意:不要改动MAIN函数,不得增行或删行,也不要更改程序的结构!试题程序:#includettinclude/********found********/voidfun(inta,intb)(intt;I★★★★★★★★£ound★★★★★★★★It=b;b=a;a=t;)main(){inta,b;printf(nEntera,b:");scanf(n%d%dn,&a,&b);fun(&a,&b);}第第printf("a=%db=%d

212n,a,b);1处:voidfun(inta,intb)应改为voidfun(int*a,int*b)2处:l=b;b=a;a=t;应改为t=*b;*b=*a;*a=t;编程题编写程序,实现矩阵(3行列)的转置(即行列互换)例如,输入如下的矩阵:100200300400500600700800900则程序输出:100400700200500800300600900注意:部分源程序给出如下。请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。试题程序:#include#includevoidfun(intarray[3][3])}main()(inti,j;intarray[3][3]={{100,200,300},{400,500,600},{700,800,900}};FILE*out;for(i=0;i<3;i++)(for(j=0;j<3;j++)printf("%7dH,array[i][j]);printf(”

213”);fun(array);printf("Convertedarray:

214H);out=fopen(1•out.dat••,Hwn);for(i=0;i<3;i++)(for(j=0;j<3;j++)(printf<1•%7dH,array[i][j]);fprintf(out,11%7dnzarray[i][j]);}printf(*'

215H);

216fprintf(out,"

217n);)fclose(out);)答案是:voidfun(intarray[3][3])(inti,j,temp;for(i=0;i<3;i++)for(j=0;j#includeintfun(intscore[],intm,intbelow[])(inti,j=0;floataver=0.0;for(i=0;i

218Belowtheaveragescoreare:for(i=0;i

219改错题下列给定程序中函数FUN的功能是:从低位开始取出长整型变量S中偶数位上的数依次构成一个新数放在T中。例如,当S中的数为7654321时,T中的数为642。请改正程序中的错误,使它能得出正确结果。注意:不要改动MAIN函数,不得增行或删行,也不要更改程序的结构!试题程序:#include#include/********found********/voidfun(longs,longt)(longsi=10;s/=10;*t=s%10;I**★*★***£ound********Iwhile(s<0)(s=s/100;*t=s%10*sl+*t;si=sl*10;})main()(longs,t;printf(n

220Pleaseenters:n);scanf(,&s);fun(s,&t);printf(nTheresultis:%ld

221H,t);}第1处:voidfun(longs,longt)应改为voidfun(longsjong*t)第2处:while(s<0)应改为while(s>0)编程题请编写fun函数,函数的功能是:从字符串中删除指定的字符,同一字母的大,小写按不同的字母处置,例如:若程序执行时输入字符串为:turbocandBorlandc++从键盘上输入字符n,则输出后变为:turbocadborladc++如果输入的字符在字符串中不存在,则照原样输出注意:部分源程序给出如下。请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。试题程序:#include#includevoidfun(chars[],intc)main()(staticcharstr[]="turbocandborlandC++”;charch;FILE*out;printf(nO-E^xd-u'®:%s

222'*,str);printf(nEaEeO»,oxd-u:H);scanf(n%cnz&ch);fun(str,ch);printf(nstr[]=%s

223",str);strcpy(strr•'turbocandborlandC++”);fun(str,•a•);out=fopen(nout.dat",HwH);fprintf(out,H%sn,str);fclose(out);)答案是:

224voidfun(chars[],intc)(inti=0;char*p;p=s;while(*p)(if(*p!=c)(s[i]=*p;i++;)p++;)s[i]=>\O,;)第20套填空题给定程序的功能是求出能整除X且不是偶数的各整数,并放在数组PP中,这些除数的个数由N返回。例如,若X的值为30,则有4个数符合要求,它们是1,3,5,15。注意:部分源程序给出如下请勿改动主函数main和其他函数中的任何内容,仅在横线上填入所编写的若干表达式或语句。试题程序:ttincludevoidfun(intx,intpp[],int*n)inti,j=0;for(i=l;i<=x;i+=2)if((x%i)==0)pp[j++]=1;*n=2;)main()(intx,aa[1000],n,i;printf("

225Pleaseenteranintegernumber:

226n);scanf(H%dn,&x);fun(x,3);for(i=0;i

227");}第1处填空:i第2处填空:j第3处填空:aa,&n改错题N个有序整数数列已放在一维数组中,给定卜列程序中,函数FUN的功能是:利用拆半查找算法查找整数M在数组中的位置。若找到,则返回其下标值:反之,则返回拆半查找的基本算法是:每次查找前先确定数组中待查的范围:low和high(lowhigh,查找结束。请改正程序中的错误,使它能得出正确结果。注意:不要改动MAIN函数,不得增行或删行,也不要更改程序的结构!

228试题程序:#include#defineN10I*★*★★★★★£ound★★★★★★★★/voidfun(inta[],intm)(intlow=0,high=N-l,mid;while(low<=high)(mid=(low+high)/2;if(m=a[mid])low=mid+1;elsereturn(mid);)return(-1);)main()(inti,a[N]={-3,4,7,9,13,45,67,89,100,180},k,m;printf(naEyxeODpAEy%YEqlA:•');for(i=0;i=0)printf(nm=%d,index=%d

229",m,k);elseprintf(uNotbefound!

230n);)第1处:voidfun(inta[],intm)应改为intfun(inta[],intm)第2处:if(m>=a[mid])应改为if(m>a[mid])编程题编写函数intfun(intlim,intaa[MAX]),该函数的功能的求出小于或等于lim的所有素数,并放在aa数组中,该函数返回所求出的素数的个数注意:部分源程序给出如下。请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。试题程序:ttinclude#include#defineMAX100intfun(intlim,intaa[MAX])()main()(intlimit,ixsum;intaa[MAX];FILE*out;

231printf(HEaEeO»,dOuEy");scanf(M%d",;sum=fun(1imit,aa);for(i=0;i

232n);printf(1•%5dn,aa[i]);}sum=fun(28,aa);out=fopen(nout.dat",nwn);for(i=0;i

233H,aa[i]);fclose(out);)答案是:intfun(intlim,intaa[MAXJ)(intk=O,Ij;for(i=lim;i>l;i—)(for(j=2;jvoidfun(char*s)(inti,j=0,k=0;chartl[80],t2[80];for(i=0;s[i]1='\0';i++)if(s[i]>='0'&&s[i]<='9')(t2[j]=s[i];1—;)else(tl[k++]=s[i];)t2[j]=0;tl[k]=0;for(i=0;i

234for(i=0;i<3;i++)s[k+i]=TTiiTT)main()(chars[80]="ba3a54j7sd567sdffsn;printf(H

235Theoriginalstringis:%s

236n,s);fun(s);printf(H

237Theresultis:%s

238H,s);)第1处填空:j++或++j或j+=l或j=j+l第2处填空:s[i]=tl[i]第3处填空:j改错题下列给定程序是建立一个带头结点的单向链表,并用随机函数为各结点数据域赋值。函数FUN的作用是求出单向链表结点(不包括头结点)数据域中的最大值,并且作为函数值返回。请改正程序中的错误,使它能得出正确结果。注意:不要改动MAIN函数,不得增行或删行,也不要更改程序的结构!试题程序:#include#include#includetypedefstructaa(intdata;structaa*next;}NODE;fun(NODE*h)(intmax=-1;NODE*p;I★*******£ound********Ip=h;while(p)(■if(p->data>max)max=p->data;I★★★★★★★★found★★★★★★★★/p=h->next;}returnmax;)outresult(ints,FILE*pf)(.fprintf(pf,H

239Themaxinlink:%d

240*',s);}NODE*creatlink(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;}outlink(NODE*h,FILE*pf)(NODE*p;p=h->next;fprintf(pf,M

241THELIST:

242

243HEAD");while(p)(''

244fprintf(pf,11->%d",p->data);p=p->next;}fprintf(pf,n

245");}main()NODE*head;intm;head=creatlink(12z100);outlink(head,stdout);m=fun(head);printf(H

246THERESULT:

247n);outresult(m,stdout);)第1处:p=h;应改为p=h->next;第2处:p=h->next;应改为p=p->next;编程题请编写fun函数对长度为7个字符的字符串,除首,尾字符外,其他5个字符按ASCII码降序排列例如原来的字符串为,CEAecda,则排序后输出为CedcEAa注意:部分源程序给出如下。请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。试题程序:#include#include#include#includevoidfun(char*srintnum)}main()(chars[10];FILE*out;printf(nEaEe7,oxd•flpAxdu'®gets(s);fun(s,7);printf(n

248%sn,s);out=fopen("out.dat",Hwn);strcpy(s,"ceaEDCA");fprintf(out,,'%sn,s);fclose(out);)答案是:voidfun(char*s,intnum)(chart;intI,j;for(i=l;i

249填空题给定给定程序中,函数FUN的功能是:在形参S所指字符串中的每个数字字符之后插入一个*号。例如,形参S所指的字符串为:def35adh3kjsdf7»执行结果为:def3*5adh3*kjsdf7*。注意:部分源程序给出如F请勿改动主函数main和其他函数中的任何内容,仅在横线上填入所编写的若干表达式或语句。试题程序:ttincludevoidfun(char*s)(inti,j,n;for(i=0;s[i]!=*\01;i++)if(s[i]>=*0'1s[i]<=,9')(n=0;while(s[i+l+n]!=2)n++;for(j=i+n+l;j>i;j--)s[j+1]=3;s[j+1]='**;i=i+1;main(){chars[80]="ba3a54cd23aH;printf("

250Theoriginalstringis:%s

251”,s);fun(s);printf(M

252Theresultis:%s

253n,s);)第1处填空:&&第2处填空:0第3处填空:s[j]或*(s+j)改错题下列给定程序中,函数FUN的功能是:根据整型形参M,计算如下公式的值,1111y=l++++....+2*23*34*4m*m例如,若M中的值为5,则应输出:L4636H。请改正程序中的错误,使它能得出正确结果。注意:不要改动MAIN函数,不得增行或删行,也不要更改程序的结构!试题程序:#include#includedoublefun(intm)(doubley=1.0;inti;I★★★★★*★*£ound★★★★★★**Ifor(i=2;i

254intn=5;printf(H

255Theresultis%lf

256H,fun(n));)第1处:for(i=2;ivm;i++)应改为for(i=2;i<=m;i++)第2处:y+=l/(i*i);应改为y+=LO/(i*i);编程题N名学生的成绩已在主函数中放入一个带头结点的链表结构中,h指向链表的头结点,请编写函数fun,它的功能是找出学生的最高分,由函数返回。注意:部分源程序给出如下。请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。试题程序:#include#include#defineN8structslist{doubles;structslist*next;};typedefstructslistSTREC;doublefun(STREC*h)(}STREC*creat(double*s)(STREC*h,*p,*q;inti=0;h=p=(STREC*)malloc(sizeof(STREC));p->s=0;while(is=s[i];i++;p->next=q;p=q;}p->next=0;returnh;}outlist(STREC*h){STREC*p;p=h->next;printf("head”);do(

257printf.Of"zp->s);p=p->next;}while(p!=0);printf(H

258

259n);)main()(doubles[N]={85,76,69,85,91,72,64,87},max;STREC*h;FILE*out;h=creat(s);outlist(h);max=fun(h);printf(Hmax=%6.If

260M,max);out=fopen("out.dat“,);fprintf(out,nmax=%6.1fn,max);fclose(out);)答案是:doublefun(STREC*h)(doublemax;STREC*q=h;max=h->s;do(if(q->s>max)max=q->s;q=q->next;}while(q!=0);returnmax;)第23套填空题在主函数中从键盘输入若干个数放入数组X中,用0结束输入但不计入数组。下列给定程序中,函数FUN的功能是:输出数组元素中小于平均值的元素。例如:数组中元素的值依次为1,2,2,12,5,15,则程序的运行结果为1,2,2,5。注意:部分源程序给出如下请勿改动主函数main和其他函数中的任何内容,仅在横线上填入所编写的若干表达式或语句。试题程序:ftinclude#includevoidfun(1,intn)(doublesum=0.0;doubleaverage=0.0;inti=0;for(i=0;i

261average=3;for(i=0;i

262");printf(,,%d/”,x[i]);main()(intx[1000];inti=0;printf(n

263Pleaseentersomedata(endwith0):n);do(scanf(n%dH,&x[i]);}while(x[i++]!=0);fun(x,i-1);)第1处填空:intx□或int*x第2处填空:sum+=x[i]或sum=sum+x[i]第3处填空:sum/n改错题下列给定程序中,函数FUN的功能是:按以下递归公式求函数值。{10(n=l)Fun(n-l)+2(n>l)例如,当给n输入5吐函数值为18,当给n输入3时,函数值为14.请改正程序中的错误,使它能得出正确结果。注意:不要改动MAIN函数,不得增行或删行,也不要更改程序的结构!试题程序:#includeI★★★★★★★★£ound★★★★★★★★Iintfun(n)(intc;I★★★★★★★★£ound★★★★★★★★/if(n=1)c=10;elsec=fun(n-1)+2;return(c);}main()(intn;printf(HEntern:n);scanf(n%dn,&n);printf(••Theresult:%d

264

265n,fun(n));)第1处:inifun(n)应改为intfun(intn)第2处:if(n=l)应改为if(n==l)

266编程题编写函数fun,它的功能是:判断字符串是否为回文,若是,则函数返回1,主函数输出YES,否则返回0,主函数中输出NO,回文是指顺读和倒读都一样的字符串,例如,字符串LEVEL是回文,而字符串123312就不是回文。注意:部分源程序给出如下。请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。试题程序:#include#defineN80intfun(char*str)main(){chars[N];FILE*out;char*test[]={”1234321“,”123421“,“123321",MabcdCBAn};inti;printf(••Enterastring:");gets(s);printf(n

267

268n);puts(s);if(fun(s))printf(1•YES

269");elseprintf(HN0

270n);out=fopen("out.dat","w”);for(i=0;i<4;i++)if(fun(test[i]))fprintf(out,HYES

271n);elsefprintf(out,”N0

272”);fclose(out);)答案是:intfun(char*str)(inti,n=0,fg=l;char*p=str;while(*p)(n++;P++;)for(i=0;i

273break;)returnfg;)第24套填空题函数FUN的功能是:从三个形参a,b,c中找出中间的那个数,作为函数值返回。例如,当a=3,b=5,c=4时,中数为4。注意:部分源程序给出如下请勿改动主函数main和其他函数中的任何内容,仅在横线上填入所编写的若干表达式或语句。试题程序:#includeintfun(inta,intb,intc)(intt;t=(a>b)?(b>c?b:(a>c?c:1)):((a>c)?2:((b>c)?c:3));returnt;)main(){intal=3,a2=5,a3=4,r;r=fun(al,a2,a3);printf(*'

274Themiddlenumberis:%d

275n,r);空空空填填填处处处123第第第):b改错题下列给定程序中,函数fun的功能是:从s所指字符串中,找出t所指子串的个数作为函数值返回,例如,当s所指字符串中的内容为abcdabfab,t所指字符串的内容为ab,则函数返回整数3。请改正程序中的错误,使它能得也正确的结果,注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!试题程序:#include#include#include〈string.h>intfun(char*s,char*t)(intn;char*p,*r;n=0;while(*s)(P=s;r=t;while(*r)/********found********/if(r==p)r++;P++;else(break;)/********found********/if(r==1\01)n++;

276s++;)returnn;)main()(chars[100],t[100];intm;printf(H

277Pleaseenterstrings:");scanf(H%sn,s);printf(n

278Pleaseentersubstringt:");scanf(n%sHzt);m=fun(s,t);printf(H

279Theresultis:m=%d

280",m);)第1处:if(r==p)应改为if(*r==*p)第2处:if(=,\(T)应改为if(*r=、(T)编程题编写函数fun,它的功能是:将一个数字字符串转换为一个整数(不得调用C语言中提供的将字符串转换成整数的函数。)例如若输入字符串”一如34则函数把它转换为整数值-1234。注意:部分源程序给出如下。请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。试题程序:#include#includelongfun(char*p)main(){chars[6];longn;FILE*out;char*test[]={“-1234","5689"z"7102“,”-4356”};printf(HEnterastring:

281");gets(s);n=fun(s);printf(n%ld

282n,n);out=fopen("out.dat","w");for(n=0;n<4;n++)fprintf(out,,'%ld

283n,fun(test[n]));fclose(out);答案是:longfun(char*p){'longs=O,t;inti=O,j,n=strlen(p),k,sl;if(plO]==,-t)i++;for(j=I;j<=n-l;j++)(t=P叶'O';

284sl=10;for(k=j;kvoidfun(inta[],intn)(inti,t;for(i=0;i<1;i++)(t=a[i];a[i]=a[n-1-2];3=t;)}main()(intb[9]={1,2,3,4,5,6,7,8,9},i;printf("

285Theoriginaldata:

286");for(i=0;i<9;i++)printf(n%4d”,b[i]);printf(H

287H);funfb,9);printf(H

288Thedataafterinvert:

289");for(i=0;i<9;i++)printf(n%4d,b[i]);printf(,,

290H);第1处填空:n/2第2处填空:i第3处填空:a[n-i-l]改错题下列给定程序中,函数fun的功能是:y计算n!.例如给n输入5,则输出120.000000.请改正程序中的错误,使程序能输出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!试题程序:#include

291#includedoublefun(intn)(doubleresult=1.0;I★★★★★★★★£ound★★★★★★★★Iifn==0return1.0;while(n>l&&n<170)/********found****★***/result=n--;returnresult;)main()(intn;printf(nInputN:H);scanf(“之d”,&n);printf(M

292

293%d!=%lf

294

295n,n,fun(n));)第1处:ifn==0应改为if(n=0)第2处:resylt=n--;应改为result*=n—;编程题编写函数fun,它的功能是:比较两个字符串的长度,(不得调用C语言中提供的求字符串长度的函数),函数返回较长的字符串,若两个字符串长度相同,则返回第一个字符串例如,输入beijingshanghai(为回车键),函数将返回shanghai注意:部分源程序给出如下。请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。试题程序:#includechar*fun(char*s,char*t)(}main()(chara[20],b[10],*p,*q;inti;FILE*out;printf('*Input1thstring:;gets(a);printf(nInput2thstring:',);gets(b);printf(H%s

296n,fun(a,b));out=fopen("out.dat","w");fprintf(out,n%s",fun(Hhunan",nchangsha"));fclose(out);)答案是:char*fun(char*s,char*t)(char*p,*tl=t,*sl=s;intn=0,m=0;while(*sl)(n++;sl++;)while(*tl)

297(m++;tl++;}if(n>=m)P=s;elsep=t;returnp;第26套填空题请补充FUN函数,该函数的功能求能整除X,且是偶数的数,把这些数保存在数组BB,并按从大到小输出。例如,当x=20时,依次输出:201042o注意:部分源程序给出如下请勿改动主函数main和其他函数中的任何内容,仅在fun函数的横线上填入所编写的若干表达式或语句。试题程序:#include#includevoidfun(intk,intbb[]){inti;intj=0;for(1;i<=k;i++)if(k%i==02i%2==0)bb[j++]=i;printf(H

298

299”);for(i=3;i>=0;i--)priritF(,r%T”,bb[i]);)main()

300intk=1;intbb[100];printf(*'

301PleaseinputX

302'*);scanf(n%dH,&k);fun(k,bb);:i=l:&&:-j或j-l处处处填填填空空空改错题下列给定程序中,函数fun的功能是,先从键盘上输入一个3行2列矩阵的各个元素的值,然后输出主对角线元素之和。请改正函数fun中的错误或在横线处填上适当的内容并把横线删除,使它能得出正确的结果。#includevoidfun(){inta[3][3],sum;intizj;I★★★★★★★★/ound★★★★★★★★/__;for(i=0;i<3;i++)for(j=0;j<3;j++)I★★★★★★★★£ound★★★★★★★★/scanf(n%d,n,a[i][j]);for(i=0;i<3;i++)sum=sum+a[i][i];printf(nsum=%d

303H,sum);}main()(fun();)第1处:应填sum=0第2处:scanf(“%d,”,a[i]|jD;应改为scanf(,,%d,,,,&a[i][j]);编程题编写函数fun,它的功能是:根据下列公式求4的值,(要求满足精度0.0005,即某项小于0.0005时停止迭代):三="+1*21*2*33*153*5*31*2*3*4—IF73*5*7*91*2*3*...*〃H3*5*7*...*(2〃+1)程序远行后,如果输出精度为0.0005,则输出为3.14…注意:部分源程序给出如下。请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。试题程序:#includettincludedoublefun(doubleeps)}main()(doublex;FILE*out;printf(nInputeps:n);

304scanf(n%1f"z&x);printf(H

305eps=%lf,PI=%lf

306*'zx,fun(x));out=fopen("out.dat",Hw");fprintf(out,neps=%lf,PI=%lf

307",0.00003,fun(0.00003));fclose(out);)答案是:doublefun(doubleeps)(doubles;floatn,t,pi;t=1;pi=0;n=1.0;s=1.0;while((fabs(s))>=eps)(pi+=s;t=n/(2*n+l);s*=t;n++;)pi=pi*2;returnpi;第27套填空题请补充函数fun,该函数的功能是:统计所以小于等于n(n>2)的素数的个数,素数的个数作为函数值返回。注意:部分源程序给出如下请勿改动主函数main和其他函数中的任何内容,仅在fun函数的横线上填入所编写的若干表达式或语句。试题程序:#includeintfun(intn)(inti,j,count=0;printf(n

308Theprimenumberbetween2to%d

309n,n);for(i=2;i<=n;i++)(for(1;j=i)(count++;printf(count%15?n%5d":n

310%5dn,i);

311returncount;main()(intn=20,r;r=fun(n);printf(H

312Thenumberofprimeis:%d

313H,r);}第第第123处处处填填填空空空:i改错题下列给定程序中,函数fun的功能是:根据以下公式求力值,并作为函数值返回,兀,11*21*2*31*2*3*41-3353573579例如,给指定精度的变量eps输入0.005时应当输出pi=3.140578c请改正程序中的错误,使其能得出正确结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!试题程序:#include#include#includedoublefun(doubleeps)(doubles,t;intn=1;s=0.0;/********found********/t=0;I★★★★★★★★£ound★★★★★★★★/while(t<=eps)(s+=t;t=(t*n)/(2*n+l);n++;)return(s*2);}main()(doublex;printf("

314Pleaseenteraprecision:");scanf(n%1f,&x);printf(n

315eps=%lf/Pi=%lf

316

317H,x,fun(x));)第1处:t=0;应改为t=1.0;第2处:while(t<=eps)应改为while(t>=eps)编程题编写函数fun,它的功能是:求出1到m间能被7或11整除的所有整数放在数组a中,通过n返回这些数的个数,例如,若传输给m的值为50,则程序输出:711142122283335424449注意:部分源程序给出如下。请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。试题程序:#include#include#defineM100voidfun(intm,int*a,int*n)main()(intaa[M],n,k;FILE*out;fun(50,aa,&n);

318for(k=0;k

319nzaa[k]);elseprintf("%4dH,aa[k]);printf(n

320");out=fopen("out.dat”,nwn);fun(100,aa,&n);for(k=0;k

321nzaa[k]);elsefprintf(out,"%4d”,aa[k]);fclose(out);}答案是:voidfun(intm,int*a,int*n)(intI,j=O;*n=O;for(i=l;i<=m;i++)if(i%7==0lli%ll=0)(a[j]=i;j++;)*n=j;)第28套填空题程序的功能是计算s=fk!。4=0注意:部分源程序给出如下请勿改动主函数main和其他函数中的任何内容,仅在横线上填入所编写的若干表达式或语句。试题程序:#includelongfun(intn)('inti;longs;s=1;for(i=l;i<=n;i++)s=2;returns;}main()(longs;intk,n;scant(n%dH,&n);s=3;

322for(k=0;k<=n;k++)s=4;printf(n%ld

323Hzs);)第1处填空:1第2处填空:s*i或i*s第3处填空:0第4处填空:s+fun(k)或fun(k)+s改错题在字符串的最前端加入n个*号,形成新串,注意:字符串的长度允许为79。请改正程序中的错误,使其能得出正确结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!试题程序:#include#include#includevoidfun(chars[],intn)(chara[80],*p;inti;I★★★★★★**£oi_ind★★★★★★★★/s=p;for(i=0;i

324Enterastring:H);gets(s);printf(H

325Thestring%s

326n,s);printf(n

327Entern(numberof*):n);scanf(n%dH,&n);fun(s,n);printf(n

328Thestringafterinster:%s

329n,s);)第1处:s=p;应改为p=s;第2处:应填P++;或++p;或p+=l或p=p+l第3处:a[i]=。;应改为a[i]='(T;或a[i]=O;编程题

330编写函数fun,它的功能是:找出一维整数型数组元素中最大的值和它所在的下标,最大值和它的下标通过形参传回。数组元素中的值已在主函数中赋予,主函数中x是数组名,n是x中的数据个数,max存放最大值,index中存放最大值所在元素的下标。注意:部分源程序给出如下。请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。试题程序:#include#include#includevoidfun(inta[],intn,int*max,int*d)()main()(inti,x[20]zmax,index,n=10;FILE*out;for(i=0;i

331");fun(x,n,&max,&index);printf(nMax=%5dzIndex=%4d

332H,max,index);out=fopen("out.dat","w");memcpy(x,"3.141592653589793238462643383279n,32);fun(x,8,&max#&index);fprintf(out,uMax=%5dzIndex=%4dn,max,index);fclose(out);)答案是:voidfun(inta[],intn,int*max,int*d){inti;*max=a[0];*d=0;for(i=0;i*max)*max=a[i];*d=I;)1第29套填空题请补充fun函数,该函数的功能是求不超过给定自然数的各偶数之和。请勿改动主函数main和其他函数中的任何内容,仅在fun函数的横线上填入所编写的若干表达式或语句。

333试题程序:#includeintfun(intx)(inti,s;s=1;for(i=2;2;i+=2)s+=i;returns;)main()(intn;do(printf(*'

334Pleaseenternaturalnumbersn:n);scanf(n%dH#&n);}while(n<=0);printf("

3352»3-

336",n,fun(n));}一一,第1处填空:0第2处填空:iv=x或x>=i改错题下列给定程序中,函数fun的功能是:求出两个非。正整数的最大公约数并作为函数值,例如numl和um2分别输入49和21,贝U输出的最大公约数为7,若给numl和um2分别输入27和81,则最大公约数为27。请改正程序中的错误,使其能得出正确结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!试题程序:#includeintfun(inta,intb)(intr,t;I★★★★★★**£ound★★★★★★★★/if(a

337

338n,numl,num2);a=fun(numl,num2);printf(nThemaximuncommondivisoris%d

339

340H,a);)第1处:b=a;应改为a=b;第2处:return(a);应改为return(b);

341编程题请编写一个函数FUN,它的功能是:将SS所指字符串中所有下标为奇数位置上的字母转换为大写(若该位置上不是字母,则不转换)。例如,若输入abc4EFg,则应输出aBc4EFg注意:部分源程序给出如下。请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。试题程序:#include#include#includevoidfun(char*ss)main(){chartt[81];FILE*out;printf(n

342Pleaseenteranstringwithin80characters:

343H);gets(tt);printf(n

344

345Afterchanging,thestring

346%s

347",tt);fun(tt);printf(n

348becomes

349%s

350n,tt);out=fopen("out.dat","w");strcpy(tt,'•Pleaseenteranstringwithin80characters:");fun(tt);fprintf(out,n%sn,tt);fclose(out);)答案是:voidfun(char*ss)(inti,n;n=strlen(ss);for(i=l;i=,a,&&ss[i]<=,z,)ss[i]=ss[i]-32;)第30套填空题请补充fun函数,该函数的功能是:把从主函数中输入的由数字字符组成的字符串转换成一个无符号长整数,并且倒序输出。结果有函数返回。例如:输入:“123456”,结果输出:65432k注意:部分源程序给出如下请勿改动主函数main和其他函数中的任何内容,仅在fun函数的横线上填入所编写的若干表达式或语句。试题程序:#include#include#include〈string.h>unsignedlongfun(char*s){unsignedlongt=0;intk;inti=0;i=strlen(s);for(1;i>=0;i--)('

351k=2;t=3;}returnt;)main()(charstr[8];printf(HEnterastringmadeupof101to191digitalcharacter:

352n);gets(str);printf("Thestringis:%s

353",str);if(strlen(str)>8)printf(nThestringistoolong!H);elseprintf(HTheresult:%lu

354",fun(str));}第1处填空:-i或i—或i==l或i=i-l第2处填空:s[i]-O第3处填空:t*10+k或k+t*10或10*t+k或k+10*t改错题下列给定程序中,函数fun的功能是:计算正整数num的各位上的数字之积,例如若输入252,则输出应该是20,若输入202,则输出应该是0.请改正程序中的错误,使其能得出正确结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!试题程序:#include#includelongfun(longnum)(I★★★★★★★★£ound★★*★★★★*Ilongk;dok*=num%10;/★★★★★★★★found★★★★★★★★Inum\=10;}while(num);return(k);)main(){longn;printf(n\pleaseenteranumber:n);scanf(H%ld"f&n);printf(H

355%ld

356",fun(n));)第1处:longk;应改为longk=l;第2处:num\=10;应改为num/=10;编程题请编写一个函数FUN,它的功能是:求出一个2*M整型二维数组中最大元素的值,并将最大值返回调用函数。注意:部分源程序给出如下。请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。试题程序:#defineM4#include

357fun(inta[][M]))main()(intarr[2][M]={5,8,3,45,76,-4,12,82};FILE*out;printf(Hmax=%d

358",fun(arr));out=fopen(Hout.dat“,“w”);fprintf(out,nmax=%d",fun(arr));fclose(out);)答案是:intfun(inta[][M])(intI,j,max;max=a[0][0];for(i=0;i<2;i++)for(j=0;jmax)max=a[i]|j];returnmax;第31套填空题请补充fun函数,该函数的功能是:把主函数中输入的字符串str2接在字符串strl后面。例如:strl="Howare'',str="you?”,结果输出:Howareyou?注意:部分源程序给出如下请勿改动主函数main和其他函数中的任何内容,仅在fun函数的横线上填入所编写的若干表达式或语句。试题程序:#include#include#defineN40voidfun(char*strl,char*str2)(inti=0;char*pl=strl;char*p2=str2;while(1)i++;for(;2;i++)*(pl^ij~3;*(pl+i)=,\0,;)main()charstrl[N],str2[N];intm,n,k;printf(»•*******inputthestringstrl&str2*******

359H);printf(H

360strl:");gets(strl);printf(”

361str2:n);gets(str2);printf('»*******Thestringstrl&str2*******

362");puts(strl);puts(str2);fun(strl,str2);printf(»•*******Thenewstring*******

363n);puts(strl);)

364第1处填空:*(pl+i)或pl[i]或*(pl+i)!=0或pl[i]!=0第2处填空:*p2或p2[0]或*p2!=0或p2[01!=0第3处填空:*p2++改错题下列给定程序中,函数fun的功能是:将字符串tt中的小写字母都改成对应的大写字母,其他字符不变,例如输入Ab,cD,则输出AB,CD,请改正程序中的错误,使其能得出正确结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!试题程序:#include#include#includechar*fun(chartt[])(inti;I★★★★★★★★£ound★★★★★★★★/for(i=0;tt[i];i++)if((tt[i]>='a»)||(tt[i]<='z»))

365/★★★★★★★★£ound★★★**★★★/tt[i]+=32;return(tt);)main(){chartt[81];printf(H

366Pleaseenterastring:M);gets(tt);处处12}第第printf(n

367Theresultstringis:

368%s11,fun(tt));if((tt[i]>='a')ll(tt[i]<='z'))应改为if((tt[i]>='a')&&(tt[i]v='z'))tt[i]+=32;应改为tt[i]-=32;编程题请编写函数FUN,其功能是:将S所指字符串中除了下标为偶数、同时ASCII值也为偶数的字符外,其余的全都删除:串中剩余字符所形式的一个新串放在T所指的数组中。例如,若S所指字符串中的内容为ABCDEFG123456,其中字符A的ASCII码值为奇数,因此应当删除:其中字符B的ASCII码值为偶数,但在数组中的下标为奇数:因此也应当删除:而字符2的ASCII码值为偶数,所在数组中的下标也为偶数,因此不应当删除,其他依此类推。最后T所指的数组中的内容应是246。注意:部分源程序给出如下。请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。试题程序:#include#include#includevoidfun(char*s,chart[])main(){chars[100]zt[100];FILE*out;printf(H

369PleaseenterstringS:n);scanf(H%sH,s);fun(s,t);printf(H

370Theresultis:%s

371H,t);out=fopen("out.dat","w");strcpy(s,''PleaseenterstringS:");fun(s,t);fprintf(out,n%sn,t);fclose(out);)答案是:voidfun(char*s,chart[])(intI,j=O,n;n=strlen(s);for(i=0;i

372例如:当x[10]={15.6,19.9,16.7,15.2,18.3,12.1,155,11.0,10.0,16.0},输出结果为:avg=15.030000.注意:部分源程序给出如下请勿改动主函数main和其他函数中的任何内容,仅在fun函数的横线上填入所编写的若干表达式或语句。试题程序:ttinclude#includedoublefun(doublex[10])(inti;longt;doubleavg=0.0;doublesum=0.0;for(i=0;i<10;i++)―1—;avg=sum/10;avg=2;t=3;avg=(double)t/100;returnavg;)main()(doubleavg,x[10]={15.6,19.9,16.7,15.2,18.3,12.1,15.5,11.0,10.0,16.0};inti;printf("

373Theoriginaldatais:

374");for(i=0;i<10;i++)printf("%6.If",x[i]);printf("

375

376");avg=fun(x);printf("average=%f

377

378",avg);)'第1处填空:sum+=x[i]或sum=sum+x[i]第2处填空:avg*1000或1000*avg第3处填空:(avg+5)/10或(5+avg)/10改错题下列给定程序中,函数fun的功能是:s所指数组中的元素赋予从2开始的偶数,然后再按顺序对每5个元素求一个平均埴,并将这些值依次存放在w所指的数组中。若s所指数组中元素的个数下是5的倍数,多余部分忽略下计。例如,s所指数组有14个元素,则只对前10个元素进行处理,不对最后的4个元素求平均值。请改正程序中的错误,使其能得出正确结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!试题程序:#include#defineSIZE20intfun(double*s,double*w)(intk,i;doublesum;for(k=2,i=0;i

379/*★★★★★★★£ound********/if(i+1%5==0)(w[k]=sum/5;sum=0;k++;}}returnk;)main()(doublea[SIZE],b[SIZE/5];inti,k;k=fun(a,b);printf(••Theoriginaldata:

380n);for(i=0;i

381H);printf(n%4.Of",a[i]);)printf(H

382

383Theresult:

384n);for(i=0;i

385

386H);}第1处:if(i+l%5==0)应改为if((i+l)%5==0)编程题请编写函数FUN,其功能是:将S所指字符串中除了下标为奇数、同时ASCII值也为奇数的字符外,其余的全都删除:串中剩余字符所形式的一个新串放在T所指的数组中。例如,若S所指字符串中的内容为ABCDEFG12345,其中字符A的ASCH码值为奇数,但所在元素的下标为偶数,因此必需删除:而字符1的ASCII码值为奇数,所在数组中的下标也为奇数,因此不应当删除。其他依此类推。最后T所指的数组中的内容应是135。注意:部分源程序给出如下。请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。试题程序:#include#include#includevoidfun(char*s,chart[])()main()(chars[100]zt[100];FILE*out;printf(n

387PleaseenterstringS:n);scanf(H%s",s);fun(szt);printf(M

388Theresultis:%s

389",t);out=fopen("out.dat","w");strcpy(s,"PleaseenterstringS:',);fun(szt);fprintf(out,n%s",t);fclose(out);)答案是:voidfun(char*s,chart[])(

390intI,j=O,n;n=strlen(s);for(i=0;i#defineN9voidfun(inta[],intn){inti,t,p;p=(n%2==0)?n/2:n/2+1;for(i=0;i

391Theoriginaldata:

392");for(i=0;i

393H);fun(b,N);printf(H

394Thedataaftermoving:

395H);for(i=0;i

396H);)第1处填空:1第2处填空:i第3处填空:a[p+i]或*(a+p+i)改错题下列给定程序中,函数fun的功能是:将s所指字符串中的字母转换为按字母序列的后续字(但Z转换为A,z转换为a),其他字符不变。请改正程序中的错误,使其能得出正确结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!试题程序:

397#include#include#includevoidfun(char*s)(I**★★★***£ou.nd********Iwhile(*s!=•@')(if(*s>=A&&*s<=Z||*s>='a,&&*s<='z,)(if(*s==1Z')*g=1A1;elseif(*s==,z')*s=a;else*s+=1;}/********found********/(*s)++;})main()(chars[80];printf(n

398Enterastringwithlength<80.:

399

400");gets(s);printf(n

401Thestring:

402

403");puts(s);fun(s);printf(M

404

405TheCords:

406

407•');puts(s);第1处:while(*s!='@')应改为while(*s)或while(*s!='\O')或while(&s!=O)第2处:(*s)++;应改为s++;编程题假定输入的字符串中只包含字母和*号。请编写函数FUN,它的功能是:使字符串中尾部的*号不得多于N个;若多于N个,则删除多余的*号;若少于或等于N个,则什么也不做,字符串中间和前面的*号不删除。例如,字符串中的内容为****A*BC*DEF*G*******,若N的值为4,删除后,字符串中的内容则应当是****a*BC*DEF*G****;若N的值为7,则字符串中的内容仍为****A*BC*DEF*G*******。N的值在主函数中输入。在编写函数时,不得使用C语言提供的字符串函数。注意:部分源程序给出如下。请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。试题程序:#include#include#includevoidfun(char*a,intn)main(){chars[81];intn;FILE*out;printf("Enterastring:

408n);gets(s);printf(nEntern:••);scanf("%d”,&n);fun(s,n);printf(HThestringafterdeleted:

409H);puts(s);out=fopen("out.dat","w”);strcpy(s,”*★★*a*BC*D**EF*G*******★*”);

410fun(s,5);fprintf(out,n%s",s);fclose(out);)答案是:voidfun(char*a,intn)(inti=0,k=0;charp=t=a;while(*t)t++;t—;while(*t=='*')k++;t-;)t++;if(k>n)(while(*p&&p#include#defineN100voidfun(char*str,intbb[])(char*p=str;inti=0;for(i=0;i<6;i++)―1;while(*p)(switch(*p)(case'A':case'a,:bb[0]++;break;case'E':case'e':bb[l]++;break;case'I':case1i':bb[2]++;break;case'O':case'o':bb[3]++;break;case'U1:case'u':bb[4]++;break;default:2—;)3main(){charstr[N],ss[5]="AEIOU";inti;intbb[6];printf(nInputastring:

411n);gets(str);printf(nthestringis:

412n);

413puts(str);fun(str,bb);for(i=0;i<5;i++)printf(*,

414%c:%d'*,ss[i],bb[i]);printf(n

415other:%d",bb[i]);)第1处填空:bb[i]=O或*(bb+i)=O第2处填空:bb[5]++或++bb[5]或bb[5]=bb[5]+l或bb[5]+=l第3处填空:p++;或++p;或p+=l;或p=p+l;改错题下列给定程序中,函数ftm的功能是:将长整型数中每一位上为奇数的数依次取出,构成一个新数放在t中,高位仍在高位,低位仍在低位,当s中的数为87653142时,t中的数为753lo请改正程序中的错误,使其能得出正确结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!试题程序:#include#includevoidfun(longs,long*t)(intd;longsi=1;I★★★★★*★★£ound★★★★★★★★/t=0;while(s>0)(d=s%10;/***★★★★★£ound********/if(d%2==0)(*t=d*sl+*t;si*=10;}s/=10;main()(longs,t;printf("

416Pleaseenters:scanf(,&s);fun(s,&t);printf(nTheresultis:%ld

417n,t);)第1处:t=0;应改为*t=0;第2处:if(d%2==0)应改为if(d%2!=0)编程题学生的记录由学号和成绩组成,N名学生的数据已在主函数中放入结构体数组S中,请编写函数FUN,它的功能是:把分数最高的学生数据放在H所指的数组中,注意:分数最高的学生可能不只一个,函数返回分数最高的学生的人数。注意:部分源程序给出如下。请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。试题程序:

418#include#defineN16typedefstruct(charnum[10];ints;}STREC;intfun(STREC*a,STREC*b)main()(STRECs[N]={{"GA05",85},{"GA03",76},{"GA02",69},{"GA04",85},{"GA01",91},{"GA07",72},{"GA08",64},{"GA06",87},{"GA015",85},{"GA013",91},{"GA012",64},{"GA014",91},{"GA011",77},{"GA017",64},{"GA018",64},{"GA016",72}};STRECh[N];inti,n;FILE*out;n=fun(s,h);printf(nThe%dhighestscore:

419nzn);for(i=0;i

420n,h[i].num,h[i].s);printf("

421”);out=fopen(••out.datHwn);fprintf(out,n%d

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

423n,h[i].s);fclose(out);)答案是:intfun(STREC*a,STREC*b)intI,j=0,n=0,max;max=a[O].s;for(i=0;imax)max=a[i].s;fbr(i=O;i

424#include#defineN80voidfun(char*s,int*num)(inti,n=0;for(i=0;1;i++)if(s[i]>=*a'&&s[i]<='z*&&s[i+1]==1*||s[i+1]==1\0,)―2_;3;)main()(charstr[N];intnum=0;printf(••Enterastring:

425n);gets(str);while(str[num])num++;fun(str,&num);printf(nThenumberofwordis:%d

426

427u,num);)第1处填空:iv*num或*num>i第2处填空:n++或++n或n+=l或n=n+l第3处填空:*num=n改错题下列给定程序中,函数fun的功能是:将p所指字符串中每个单词的最后一个字母改成大写(这里的“单词”是指由空格隔开的字符串)。例如,若输入:Iamastudenttotaketheexamination.则应输出:IaMAstudenTtOtakEthEexaminatioN.请改正程序中的错误,使其能得出正确结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!试题程序:#include#include#includevoidfun(char*p)intk=0;for(;*p;p++)I★★★★★★★★found★★★★★★★★/if(k)(if(p==1')(k=0;/★★★★★★★★found★★★★★★★★I*p=toupper(*(p-1));)}else(k=1;})main()(charchrstr[64];intd;printf("

428Pleaseenteranenglishsentencewithin63letters:");gets(chrstr);d=strlen(chrstr);chrstr[d+1]=11;chrstr[d+1]=0;printf(n

429

430Beforchanging:%sn,chrstr);fun(chrstr);

431printf(H

432Afterchanging:

433%s",chrstr);}一一一第1处:if(p==-)应改为if(*p=-)第2处:*p=loupper(*(p-l));应改为*(p-l)=toupper(*(p-l));编程题请编写-一个函数,用来删除字符串中的所有空格。例如,输入asdafaaz67,则输出为asdafaaz67o注意:部分源程序给出如下。请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。试题程序:#include#include#includevoidfun(char*str)main()charstr[81];charMsg[]=*'Inputastring:H;intn;FILE*out;printf(Msg);gets(str);puts(str);fun(str);printf(»****str:%s

434",str);out=fopen("out.dat",Hwn);fun(Msg);fprintf(out,"%sn,Msg);fclose(out);)答案是:voidfun(char*str)(inti=0;char*p=str;while(*p){if(*p!='')(str[i]=*p;i++;)P++;)str[I]=,\O';第36套填空题Str是全部由数字和字母字符组成的字符串,由num传入字符串的长度,请补充fun函数,该函数的功能是把字符串str中的数字字符转换成数字并存放到整型数组bb中,函数返回数组bb的长度。例如:st="Abcl23e456hui7890”,结果为:1234567890注意:部分源程序给出如下请勿改动主函数main和其他函数中的任何内容,仅在fun函数的横线上填入所编写的若干表达式或语句。试题程序:#include#defineN80intbb[N];intfun(chars[],intbb[],intnum)(inti,n=0;

435for(i=0;i='0'1s[i]<='9')(bb[n]=2;n++;return}main()(charstr[N];intnum=0,n,i;printf(''Enterastring:

436'*);gets(str);while(str[num])num++;n=fun(str,bb,num);printf(H

437bb=");for(i=0;iintfun(intx,inty,intz)(intj,t,n,m;I★★★★★★★★£ound★★★★★★★*Ij=1;t=m=n=1;I★★★★★★★★£ound★★★★★★★★Iwhile(t!=0&&m!=0&&n!=0)(j=j+1;t=j%x;m=j%y;n=j%z;}returnj;)main()(intxl,x2,x3,j;printf("Inputxlx2x3:•));scant(n%d%d%dH,&xlz&x2,&x3);printf(nxl=%d,x2=%d,x3=%d

438H,xl,x2,x3);j=fun(xlrx2,x3);printf(HTheminimalcommonmultipleis:%d

439n,j);)第1处:j=l;应改为j=0;第2处:while(t!=0&&m!=0&&n!=0)应改为while(t!=0lln!=0)编程题假定输入的字符串中只包含字母和*号。请编写函数FUN,它的功能是:使字符串中前导*号全部移到字符串的尾部。例如,若字符串中的内容为*******A*BC*DEF*G****,移动后,字符串中的内容应当是A*BC*DEF*G***********。在编写函数时,不得使用C语言提供的字符串函数。注意:部分源程序给出如下。请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。试题程序:#include#include

440voidfun(char*a)}main()(chars[81],*p;FILE*out;chartest[4][80]={,•*******a*BC*DEF*G****n,”a******b*cd**ef*g*11“★★★★A****g*”f“★d**b**a**e*”}jinti;printf(HEnterastring:

441n);gets(s);fun(s);printf(nThestringaftermoveing:

442");puts(s);out=fopen("out.dat“,);for(i=0;i<4;i++)(fun(test[i]);fprintf(out,"%s

443H,test[i]);}'fclose(out);)答案是:voidfun(char*a)(inti=0,n=0;char*p;P=a;while(*p=='*')(n++;P++;)while(*p)(a[i]=*p;i++;P++;)while(n!=0)(a[i]='*';i++;n-;)a[i]=,\(T;)第37套填空题从键盘输入一组无符号整数并保存在数组xx[N]中,以整数0结束输入,要求这些数的最大位数不超过4位,其元素的个数通过变量num传入dun函数,该函数的功能是:从数组xx中找出个位和十位的数字之和大于5的所以无符号整数,结果保存在数组yy,中其个数由fun函数返回。例如:当xx[8]={123,11,23,222,42,333,14,5451}时,bb[3]={42,333,5451)注意:部分源程序给出如下请勿改动主函数main和其他函数中的任何内容,仅在fun函数的横线上填如所编写的若干表达式或语句。试题程序:#include#defineN1000intfun(intxx[],intbb[],intnum)(inti,n=0;intg,s;for(i=0;i5)―2_;

444}return3;)main()(intxx[N];intyy[N];intnum=0,n=0,i=0;printf(nInputnumber:

445u);do(scanf(•,%uH,&xx[num]);}while(xx[num++]!=0);n=fun(xx,yy,num);printf(*'

446yy=*');for(i=0;i#include#include#defineN80intfun(char*s,char*t)(intn;char*pz*r;n=0;I***★★***£ound********Ip=&s[0];*r=t;while(*p)(if(*r==*p)(r++;if(*r==1\01)(n++;I★★★★★★★★£ound★★★★★★★★/licO}一~~~}P++;)returnn;)main(){chara[N],b[N];intm;printf(n

447Pleaseenterstringa:");gets(a);printf(n

448Pleaseentersubstringb:");gets(b);m=fun(a,b);

449m=printf(n

450Theresultis:m=%d

451H,m);)第1处:*r=t;应改为r=t;或r=&t[OJ;第2处:应填r=t;或r=&t[O];编程题某学生的记录由学号、8门课程成绩和平均分组成,学号和8门课程的成绩已在主函数中给出。请编写函数FUN,它的功能是:求出该学生的平均分并放在记录的AVE成员中。请自己定义正确的形参。例如,若学生的成绩是85.5,76,69.5,85,91,72,64.5,87.5,则他的平均分应当是78.875。注意:部分源程序给出如下。请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。试题程序:#include#defineN8typedefstructcharnum[10];doubles[N];doubleave;}STREC;voidfun(STREC*p)main()(STRECs={"GA005",85.5,76,69.5,85,91,72,64.5,87.5};inti;FILE*out;fun(&s);printf(HThe%s1sstudentdata:

452"rs.num);for(i=0;i

453",s.s[i]);printf(n

454ave=%7.3f

455n,s.ave);out=fopen("out.dat",Hwn);fprintf(out,nThe%s'sstudentdata:

456n,s.num);for(i=0;i

457H,s.s[i]);fprintf(out,"

458ave=%7.3f

459n,s.ave);fclose(out);)答案是:voidfun(STREC*p)(doubleav=0.0;inti;for(i=0;ivN;i++)av+=p->s[i];av/=N;p->ave=av;)第38套填空题请补充fun函数,该函数的功能是判断一个数的个位数字和百位数字之和是否等于其十位上的数字,是则返回“yes!",是否返回“no!”.注意:部分源程序给出如卜一请勿改动主函数main和其他函数中的任何内容,仅在fun函数的横线上填入所编写的若干表达式或语句。试题程序:ttinclude#includechar*fun(intn)(

460intg,s,b;g=n%10;s=n/10%10;b=1;if((g+b)==s)return2;elsereturn3;}main()(intnum=0;printf("******Inputdata*******

461");scanf(H%dnr&num);printf(n

462

463

464H);printf(«******Theresult*******

465*,);printf(n

466

467

468%sn,fun(num));)第1处填空:n/100%10第2处填空:"yes!”第3处填空:"no!”改错题卜列给定程序中,函数fun的功能是:通过某种方式实现两个变量值的交换,规定下允许增加语句和表达式。例如变量a中的值原为8,b中的值原为3,程序运行后a中的值为3,b的值为8。请改正程序中的错误,使其能得出正确结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!试题程序:#include#includeintfun(int*x,inty)(intt;/★★★★★★★*£ound********/t=x;x=y;I★★★★★★★★£ound★★★★★★★*/return(y);}main(){inta=3,b=8;printf(H%d%d

469",a,b);b=fun(&a,b);printf(n%d%d

470n,a,b);)第1处:t=x;x=y;应改为仁*x;*x=y;第2处:retum(y);应改为retum(t);或returnt;编程题请编写函数FUN,它的功能是:求出SS所指字符串中指定字符的个数,并返回此值。例如,若输入字符串123412132,输入字符1,则输出3。注意:部分源程序给出如下。

471请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。试题程序:#include#include#include#defineM81intfun(char*ss,charc)main(){chara[M],ch;FILE*out;printf(H

472Pleaseenterastring:H);gets(a);printf(n

473Pleaseenterachar:n);ch=getchar();printf(H

474Thenumberofthecharis:%d

475n,fun(a,ch));out=fopen(••out.dat",nwn);strcpy(a,"Thenumberofthecharis:1');fprintf(out,n%dn,fun(a,1'));fclose(out);)答案是:intfun(char*ss,charc)(intn=0;while(*ss)(if(*ss==c)n++;SS4-+;)returnn;第39套填空题请补充main函数,该函数的功能是:从一个字符串中截取前面若干个给定字符数的子字符串。其冲,strl指向原字符串,截取后的字符串存放在str2所指的字符数组中,n中存放预截取的字符个数。例如,当strl="abcdefg”,然后输入3,则str2=,,abcM.注意:部分源程序给出如下仅在横线上填入所编写的若干表达式或语句,请勿改动函数中的任何内容。试题程序:#include#include#defineLEN80main()(charstrl[LEN]zstr2[LEN];intn,i;printf('*Enterthestring:

476n);gets(strl);printf(HEnterthepositionofthestringdeleted:11);scanf(1);for(i=0;i

477str2[i]='\01;printf("Thenewstringis:%s

478",3);)第1处填空:"%d'',&n第2处填空:str2[i]=strl[i]第3处填空:str2改错题下列给定程序中,函数fun的功能是,将s所指字符串的正序和反序进行连接,形成一个新串放在t所指的数组中,例如,当s所指这字符串为ABCD时,则t所指字符串中的内容应为ABCDDCBAo请改正程序中的错误,使其能得出正确结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!试题程序:#include#include#includeI★★★***★★£ound★★★★★★★★/voidfun(chars,chart)(inti,d;d=strlen(s);for(i=0;i

479PleaseenterstringS:n);scanf(n%s",s);fun(s,t);printf(n

480Theresultis:%s

481H,t);)第1处:voidfun(chars,chart)应改为voidfun(char*s;char*t)第2处:t[2*d"]='\(r;应改为t[2*d]='\0';或t[d+i]='\O';或t[2*d]=0;或t[d+i]=O;编程题请编写函数FUN,该函数的功能是:移动•维数组中的内容;若数组中有N个整数,要求把F标从0到P(P小于等于N-1)的数组元素平移到数组的最后。例如,■-维数组中的原始内容为:1,2,3,4,5,6,7,8,9,10;P的值为3。移动后,一维数组中的内容应为:5,6,7,8,9,10,1,2,3,4。注意:部分源程序给出如下。请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。试题程序:ftinclude#defineN80voidfun(int*w,intp,intn)}main()(

482inta[N]={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15};inti,p,n=15;FILE*out;inttest[N]={1,1,2,3,5,8,13,21,34,55,89,144};printf(nTheoriginaldata:

483H);for(i=0;i

484

485Enterp:");scanf(n%dH,&p);fun(a,p,n);printf(n

486Thedataaftermoving:

487");for(i=0;i

488

489n);out=fopen("out.dat•',”w");fun(test,6,12);for(i=0;i<12;i++)fprintf(out,”岩d

490”,test[i]);fclose(out);)答案是:voidfun(int*w,intp,intn)(intb[N],I,j=0;for(i=0;i<=p;i++)b[i]=w[i];for(i=p+1;i#include#defineLEN80main()

491charstrl[LEN],str2[LEN];char*pl=strl,*p2=str2;inti=0,j=0;printf(nEnterthestring:

492n);scanf(1);printf(»•******theorigialstring********

493n);while(*(pl+j))(■printf("2",*(pl+j));j++;}for(i=0;i

494Thenewstringis:%s

495H,3);)第1处填空:“%s”,strl第2处填空:%c第3处填空:str2改错题下列给定程序中,函数fun的功能是:将n个无序整数从小到大排序。请改正程序中的错误,使其能得出正确结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!试题程序:#include#include#includefun(intn,int*a){intifj,p,t;for(j=0;ja[i])I★★★★★★★★£ound★★★★★★★★/if(p!=J'(t=a[j];a[j]=a[p];a[p]=t;)putarr(intn,int*z)(inti;for(i=l;i<=n;i++,z++)(printf(n%4d"z*z);if(!(i%10))printf(11

496*');}printf("

497");main()

498intaa[20]={9,3,0,4,1,2,5,6,8Z10,7},n=11;printf("

499

500Beforesorting%dnumbers:

501H,n);putarr(n,aa);fun(n,aa);printf(H

502Aftersorting%dnumbers:

503H,n);putarr(n,aa);}第1处:for(i=j+l;iivn-l;i++)应改为for(i=j+l;i#include〈string.h>#defineN80voidfun(char*w,intm)()main()chara[N]=nABCDEFGHIJKn;intm;FILE*out;printf(nTheoriginalstring:

504H);puts(a);printf(H

505

506Enterm:••);scanf(,&m);fun(a,m);printf("

507Thestringaftermoving:

508H);puts(a);printf(,,

509

510n);out=fopen(Hout.dat",Hw'*);fun(a,strlen(a)-m);fun(a,3);fprintf(out,n%sH,a);fclose(out);)答案是:voidfun(char*w,intm)(charb[N];intI,j=0;for(i=0;i

511b[j]=w[i];j++;)for(i=0;i#includemain()(longintn;printf(HEnterthedata:

512'*);scanf(1);printf(H******theorigialdata********

513");if(n<0)—2―printf(H

514

515H);printf(-3_);)第二题:改错题下列给定程序是建立一个带头结点的单向链表,并用随机函数为各结点赋值。函数fun的功能是将单向链表结点(不包括头结点)数据域为偶数的值累加起来,并且作为函数值返回。请改正函数fun中的错误,使它能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!#include#include#includetypedefstructaa(intdata;structaa*next;}NODE;intfun(NODE*h){intsum=0;NODE*p;p=h->next;/********砧und********/while(p->next)if(p->data%2=0)sum+=p->data;/********found********/p=h->next;}

516returnsum;)NODE*creatlink(intn)(NODE*h,*p,*s;inti;h=p=(NODE*)malIoc(sizeof(NODE));for(i=l;idata=rand()%16;s->next=p->next;p->next=s;p=p->next;)p->next=NULL;returnh;)oullink(NODE*h)(NODE*p;p=h->next;printf(n

517

518THELIST:

519

520HEAD");while(p)(printf("->%d",p->data);p=p->next;)printf(',

521,');)main()(NODE*head;intsum;head=creatlink(lO);outlink(head);sum=fun(head);printf(,'

522SUM=%dH,sum);)第三题:编程题请编写函数fun,该函数的功能是;将M行N列的二维数组中的字符数据,按列的顺序依次放到一个字符串中。例如,若二维数组中的数据为:WWWWSSSSHHHH则字符串中的内容应是WSHWSHWSHo请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。#include#defineM3#defineN4voidfun(char(*s)[NJ,char*b)main()

523(chara[l00],w[M][N]={{},{'S',S?S',S},{;inti,j;FILE*out;printf("Thematrix:

524");for(i=0;i

525H);)fun(w,a);printf("TheAstring:

526");puts(a);printf("

527

528");out=fopen("out.dat","w");fprintf(out,"%s",a);fclose(out);)答案:第一题:第1处填空:“%Id”,&n第2处填空:n=-n;或n*=-l第3处填空:"%ld",n第二题:第1处:while(p->next)应改为while(p!=NULL)第2处:p=h->next;应改为p=p->next;第42套填空题请补充main函数,该函数的功能是:从字符串str中取出所有数字字符,并分别计数,并把结果保存在数组b中并输出,把其它字符保存在b[10]中.例如:当str="del23456789abc0908”时,结果为:0:21:12:13:14:15:16:17:18:29:2othercharacter:5.仅在横线上填入所编写的若干表达式或语句,勿改动函数中的其它任何内容.#include#includemain()(inti,b[ll];char*str=ude123456789abc0908M;char*p=str;prints********theorigialdata********

529");puts(str);for(i=0;i

530case2:b⑵++;break;case3:b[3]++;break;case'4':b[4]++;break;case5:b[5]++;break;case'6':b[6]++;break;case'7’:b⑺++;break;case8:b[8]++;break;case9:b[9]++;break;default:b[10]44-;break;}P++;)printf(H******theresult********

531n);for(i=0;i<10;i++)printf(u

532%d:%dM,i,b[i]);printf(n

533othercharacter:%d'\b[i]);)改错题下列给定程序中,函数fun的功能是:将字符串s中位于奇数位置的字符或ASCII码为偶数的字符依次放入字符串中.例如,字符串的数据为AABBCCDDEEFF,则输出应当是ABBCDDEFF.请改正函数fun中的错误,使它能得出正确的结果.注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!#include#include#include#defineN80voidfun(char*s,chart[])inti,j=0;/********found********/for(i=0;i<(int)strlen(s);i++)if(i%2IIs[i]%2==0)t|j++]=s[i];/********8und********/t|j]=AO';)main()(chars[N],t[N];printf("

534Pleaseentherstrings:");gets(s);

535fun(s,t);printf("

536Theresultis:%s

537",t);)程序题下列程序定义了N*N的二维数组,并在主函数中自动赋值,请编写函数fun(inta[][N],intn),该函数的功能是:使数组右上半三角元素中的值乘以m.例如:若m的值为2,a数组中的值为197a=238456则返回主程序后a数组中的值为2181426164512请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句.#include#include#include#include#defineN5voidfun(intintm){intij;for(j=0;j

538n);for(i=0;i

539M,m);fun(a,m);printf("THERESULTS);for(i=0;i

540");}out=fopen(Mout.datH,nwM);for(i=0;i

541for(j=0;j

542n);)fclose(out);第43套第43题的填空题请补充fun函数,该函数的功能是:按'0'到9统计一个字符串中的奇数数字字符各自出现的次数,结果保存在数组num中。注意:不能使用字符串库函数。例如:输入:“x=1123.456+0.909*bc“,结果为:1=23=1,5=1,7=0,9=2.请勿改动主函数main和其他函数中的任何内容,仅在fun函数的横线上填入所编写的若干表达或语句。#include#include#defineN1000voidfun(char*tt,intnum[])(inti,j;intbb[10];char*p=tt;for(i=0;i<10;i++){num[i]=0;bb[i]=0;)while(*p){if(*p>=V&&*p<='9')bb[*p-'0']++;p++;)for(i=l,j=0;i<10;i=i+2,j++)numfj]=bb[i];main()charstr[N];intnum[10],k;printf("

543Pleaseenteracharstring:");gets(str);printf("

544*******Theoriginalstring******

545");puts(str);fun(str,num);printf("

546*******Thenumberofletter******

547");for(k=0;k<5;k++)(printf("

548");printf("%d=%d",2*k+l,num[k]);)printf("

549");)第43题的改错题下列给定程序中,函数fun的功能是:找出100至n(不大于1000)之间三个位上的数字都相等的所有整数,把这些整数放在s所指数组中,个数作为函数值返回。请改正函数fun中的错误,使它能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!#include#defineN100intfun(int*s,intn)(inta,b,c;j=0;for(i=100;i

550*奉*****found********/b=k%10;c=k/10;if(a==b&&a==c)s[j++]=i;}returnj;)main()(inta[N],n,num=0,i;do{printf(n

551Entern(<=1000):“);scanf("%d",&n);}while(n>1000);num=fun(a,n);printf(u

552

553Theresult:

554H);for(i=0;i

555

556H);)第43题的编程题编写一个函数,从传入的num个字符串中找出最长的一个字符串,传回该串地址(用****作为结束输入的标志)。请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中秘编写的若干语句。#include#include#includechar*fun(char(*a)[81],intnum){inti;char*max;max=a[OJ;for(i=0;i<=num;i++)if(strlen(max)

557max=%s

558,',max);out=fopen("out.dat",”w");strcpy(ss[O],MOh,M);strcpy(ss[l],"you1');strcpy(ss[2],"want'1);strcpy(ss[3],"some");strcpy(ss[4],Mtoo?!?M);fprintf(out,M%sH,fun(ss,5));fclose(out);)答案

559第一题*p或*p!=0或0!=*pbb[*p-'0']++或bb[*p-'0']+=lnum[j]=bb[i]第二题k=n;改为k=I;b=k/10;改为b=k%10;第三题char*fun(char(*a)[81],intnum){inti;char*max;max=a[O];for(i=0;i<=num;i++)if(strlen(max)#includevoidfun(char*p,char*q,char*c)(intk=0;while(*pll*q){if(*p<*q)c[k]=*q;elsec[k]=*p;if(*P)P++;if(*q)q++;k++;})main()Ichara[10]="aBCDeFgH",b[10]="ABcd",c[80]={\0'};fun(a,b,c);printf("Thestringa:");puts(a);printf("Thestringb:");puts(b);printf("Theresult:");puts(c);)2改错题下列给出程序中,函数fun的功能是:根据形参m的值(2(=m〈=9〉,在m行m

560列的二维数组中存放如下所示的数据,由main()函数输出。例如,若输入21若输入4则输出:121则输出:1123424124681369121481216请改正程序的错误,使它能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改持续的结构!#include#include#defineM10inta[M][M]={0};/********气und********/fun(int()*a[M],intm){intj,k;for(j=0;j

561”);)}3编程题编写一个函数,该函数可以统计一个长度为2的字符串在一个字符串的次数。例如,假定输入的字符串为:asdasasdfgasdaszx67asdmklo,子字符串为as,则应输出6o请勿改动主函数main和其他函数中的的任何内容,仅在函数fun的花括号中填入所编写的若干语句。#include#include#includeintfun(char*str,char*substr)(intn;char*p,*r;n=0;while(*str)(p=str;r=substr;while(*r)if(*r==*p)(r++;p++;)elsebreak;if(*r=='\0')}n++;str++;}returnn;}main(){

562charstr[81],substr[3];intn;FILE*out;printf("输入主字符串:”);gets(str);printf("输入子字符串:”);gets(substr);puts(str);puts(substr);n=fun(str,substr);printf(nn=%d

563n,n);out=fopen("out.dat“,"w");strcpy(str,"asdasasdfgasdaszx67asdmklo,');strcpy(substr,nasM);fprintf(out,H%dM,fun(str,substr));(close(out);第45套第一题:填空题请补充fun函数,该函数的功能是:先将在字符串s中的字符按逆序存放到t串中,然后把s中的字符按正序连接到I串的后面。例如:s中的字符串为ABCDE时,则t中的字符串应为EDCBAABCDE。请勿改动主函数main和其他函数中的任何内容,仅在fun函数的横线上填入所编写的若干表达式或语句。#include#include#includevoidfun(char*s,char*t)(intsi,i;si=strlen(s);for(i=0;i

564Pleaseenterstrings:n);scanf(n%sn,s);fun(s,t);printf(nTheresultis:%s

565",t);)参考答案:1:sl-MgJcsl-l-i2:2*sl或si*2第二题:改错题下列给定程序中,函数fun的功能是:将s所指字符串中最后一次出现的tl所指子串替换成t2所指子串,所形成的新串放在w所指的数据中。在此处,要求tl和t2所指字符串的长度相同。例如,当s所指字符串中的内容为abcdabfabc,tl所指子串的内容为ab,t2所指子串中的内容为99时,结果,在w所指的数组中的内容为abcdabf99c。请改正程序中的错误,使它能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!#include#include#include*******found********/voidfun(char*s,tl,t2,w)(char*p,*r,*a;

566strcpy(w,s);/****************/while(w){p=w;r=tl;while(*r)if(*r==*p){r++;P++;}else(break;}if(*r==\0')a=w;w++;}r=t2;while(*r){*a=*r;a++;r++;})main()(chars[100],tl[100],t2[100],w[100];printf("

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

568Pleaseentersubstringtl:M);scanfC^sMl);printf(n

569Pleaseentersubstringt2:");scanf(”%s",t2);if(strlen(tl)==strlen(t2))fun(s,tl,t2,w);printf(n

570Theresultis:%s

571K,w);elseprintf(H

572Error:strlen(tl)!=strlen(t2)

573");))参考答案:l:voidfun(char*s,tl,t2,w)应改为voidfun(char*s,char*tl,char*t2,char*w)2:while(w)应改为while(*w)第三题:编程题假定输入的字符串中只包含字母和*号。请编写函数fun,它的功能是:只删除字符串前导和尾部的*号,串中字母之间的*号都不删除。形参n给出了字符串的长度,形参h给出了字符串中前导*号的个数,形参e给出了字符串中最后*号的个数。在编写函数时,不得使用C语言提供的字符串函数。例如,若字符串的内容为****A*BC*DEF*G*******,删除后,字符串中的内容则应当是A*BC*DEF*G。请勿改动主函数main和其他函数中的任何内容,仅在函数的花括号中填入所编写的若干语句。参考答案:

574voidfun(char*a,intn,inth,inte){inti=0;char*p;for(p=a+h;p#includevoidfun(ints,intt,int1_)(inti,max;max=s[0];for(i=0;i

575",k,a[k]);第二题:已知一个数列从第0项开始的前三项分别为0、0、1,以后的各项都是其相邻的前三项之和。下列给定程序中,函数fun的功能是:计算并输出该数列前n项的平方根之和sum。n的值通过形参传入。例如,当n=10时,程序输出结果应为23.197745。请改正程序中的错误,使程序能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!#include#include#include/********[bund********/fun(intn)(doublesum,sO,si,s2,s;intk;sum=1.0;if(n<=2)sum=0.0;50=0.0;51=0.0;s2=1.0;for(k=4;k<=n;k++)

576(s=s0+sl+s2;sum+=sqrt(s);sO=s1;si=s2;50=s;}/********found********/returnsum)main(){intn;printf(HInputN=n);scanf("%d",&n);printf(,,%lf

577,\fun(n));)第三题:学生的记录由学号和成绩组成,N名学生的数据-在主函数中放入结构体数组s中,请编写函数fun,它的功能是:按分数的高低排列学生的记录,高分在前。请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。#include#defineN16typedefstruct(charnum[10];ints;}STREC;voidfun(STRECa[])}main()STRECs[N]={{"GAOO5”,85},{"GAOO3U,76},{HGA002n,69},{nGA004n,85),{“GA001”,91},{”GA007”,72},{“GA008”,64},{“GA006",87),{UGAO15H,85},{,,GA013,1,91},{uGA012n,64},{"GA014M,91),{“GA0U”,66},{“GA017”,64},{“GA018”,64},{“GA016”,72}};inti;FILE*out;fun(s);printf("Thedataaftersorted:

578");for(i=0;i

579");printf("%s%4d”,s[ij.num,s[ij.s);}printf(n

580n);out=fopen("out.dat","w");for(i=0;i

581");fprintf(out,H%4d",s[i].s);)fprintf(out,n

582H);

583fclose(out);}参考答案:第一题:(l)*k(2)s[i]>max(3)i第二题:第一处fun(intn)应改为doublefun(intn)第二处returnsum应改为returnsum;第三题:voidfun(STRECa[]){inti,j;STRECt;for(i=0;i#include#defineN1000intfun(intxx[],intbb[],intnum)inti,n=0;intg,b;for(i=0;i

584**);for(i=0;i

585

586

587");n=fun(xx,yy,num);printf(H

588yy=n);for(i=0;i

589请改正程序中的错误,使它能得出正确的结果。注意:不要改动main函数,不得增行或减行,也不得更改程序的结构!#include#include#defineN20/********found********/voidfun(int*a,intn);(inti,m,t,k;for(i=0;i<2;i++){/*******nd********/m=0;for(k=i+l;ka[m])m=k;t=a[i];a[i]=a[m];a[m]=t;main()(intb[N]={11,5,12,0,3,6,9,7,10,8),n=10,i;for(i=0;i

590u);fun(b,n);for(i=0;i

591");)第三题:请编写一个函数voidfun(char*ss),其功能是:将字符串ss中所有下标为奇数位置上的字母转换为大写(若该位置上不是字母,则不转换)。例如,若输入abc4EFg,则应输入aBc4EFg.»请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。#include#include#includevoidfun(char*ss))voidmain(void)(chartt[51];FILE*out;printf("

592Pleaseenterancharacterstringwithin50characters:

593,*);gets(tt);printf(n

594

595Afterchanging,thestring

596%sn,tt);fun(tt);printf(M

597becomes

598%s",tt);out=fopen("out.dat“,"w");strcpy(tt,"Afterchanging,thestring1,);fun(tt);fprintf(out,H%sn,tt);

599fclose(out);)第一题答案1:(xx[l]%10)答案2:(bb[n++]=xx[l])答案3:(n)第二题答案:第1处:voidfun(int*a,intn);应改为voidfun(int*a,intn)第2处:m=o;应改为m=i;第三题答案:voidfun(char*ss){inti,n=0;char*p=ss;while(*p){n++;P++;}for(i=0;i=y'&&ss[i]<=,')&&i%2!=0)ss[i]=ss[i]-32;ss[i]=AO9;第48套填空题:请补充fun函数,该函数的功能是:把一个证书转换成字符串,并到序保存在字符数组str中。例如:当n=12345678时,sg“87654321”。请勿改动主函数main和其他函数中的任何内容,仅在fun函数的横线上填入所编写的若干表达式或语句。改错题:下列给定程序中,函数fun的功能是:从N个字符串中找出最长的那个串,并将其地址作为函数值返回。各字符串在主函数中输入,并放入一个字符串数组中。请改正程序中的错误,使它能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!编程题:请编写函数fun,其功能是:将两个两位数的正证书a、b合并形成一个证书放在c中。合并的方式是:将a数的十位和个位数依次放在c数的千位和十位上,b数的十位和个位数依次放在c数的百位和个位上。例如,当a=45,b=12,调用该项函数后,c=4152o请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。答案:填空题:#include#include#defineN80charstr[N];voidfun(longintn)(inti=0;

600while(—1—)(str[i]=__2_;n/=10;i++;)—3:)main()(longintn=1234567;printf("******theorigialdata********5");printf("n=%ld",n);fun(n);printf("

601%s",str);)第一处填空:n>0或0#include#defineN5#defineM81/********foun(j********/fun(char(*sq)lNJ)(inti;char*sp;

602sp=sq[O];for(i=0;i

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

604TheNstring:

605H,N);for(i=0;i

606Thelongeststring:

607");puts(longest);)第一处:fun(char(*sq)[NJ)应改为char*fun(char(*sq)[MJ)第二处:returnsq;应改为returnsp;编程题:#include#includevoidfun(inta,intbJong*c)main()(inta,b;longc;FILE*out;printf("Inputa,b:");scanf(',%d%d,\&a,&b);fun(a,b,&c);printf("Theresultis:%d

608n,c);out=fopen("out.dat",”w");for(a=10;a<20;a++)(fun(a,109-a,&c);fprintf(oul,"%d

609”,c);)fclose(out);)输入fun函数:voidfun(inta,intb,long*c){*c=(a/10)*1000+(b/10)*100+(a%10)*10+b%10;第49题第一题、请补充main函数,该函数的功能是求方程ax2+bx+c=0的两个实数根。方程的系数a>b、c从键盘输入,如果判别式(disc=b*b~4*a*c)小于0,则要求从新输入a、b、c的值。一无二次方程的求根公式为:2a-h±\h2-b4ac例如,当a=l,b=2,c=l时,方程的两个根分别是:xl=-1.00,x2=-1.00.注意:部分源程序给出如下。

610仅在横线上填入所编写的若干表达式式语句,勿改动函数中的其他任何内容。#include#includemain()(doublea,b,c,disc,xl,x2;do(printf("Inputa,b,c:");scanf(n%lf,%lf,%lf',&a,&b,&c);disc=b*b-4*a*c;if(disc<0)printf(Mdisc=%lf

611Inputagain!

612n,disc);}while(_1—);printf(,********theresult*******

613u);xl=(-b+2_(disc))/(2*a);x2=(-b-_3_(disc))/(2*a);printf("

614x1=%6.21f

615x2=%6.2lf

616H,xl,x2);)第二题、下列给定程序中,函数fun的功能是:对N名学生的学习成绩,按从高到低顺序找出前m(mv=10)名觉得来,并将这些学生数据存放在一个动态分配的连续存储区中,此存储区的首地址作为函数值返回。请改正函数fun中的错误,使它能得出正确的结果。注意:不要改动main函数,不得增得或删行,也不得更改程序的结构!#include#include#include#defineN10typedefstructss(charnum[10];ints;}STU;STU*fun(STUa[],intm)(STUb[N],*t;inti,j,k;/****************/*t=malloc(sizeof(STU));for(i=0;ib[j].s)j=i;/********found********/t[k].num=b[j].num;t[k].s=b|j].s;b[j].s=O;)returnt;)outresult(STUa[],HLE*pf)inti;for(i=0;i

617",a[i].num,a[i].s);fprintf(pf,M

618

619M);

620}main()(STUa[N]=({MA01M,81},{MA02",89},{“A03”,66},{wA04M,87},{MA05M,77},{nA06",90},{"A07",79},{“A08”,61},{“A09”,80},{MA10M,71)};STU*pOrder;inti,m;printf(M*****TheOriginaldata*****

621M);outresult(a,stdout);printf(,'

622Givethenumberofthestudentswhohavebetterscore:");scanf("%d”,&m);while(m>10)|printf(u

623Givethenumberofthestudentswhohavebetterscore:");scanf(n%dH,&m);}pOrder=fun(a,m);printf(M*****THERESULT*****

624H);printf("Thetop:

625n);for(i=0;i

626n,pOrder[i].num,pOrder[i].s);free(pOrder);)第三题、请编写函数fun,其功能是:次s所指字符串下标为偶数同时ASCII值为奇数的字符删除,s中剩余的字符形成的新串放在t所指的数组中。例如,若s所指字符串中的内容为ABCDEFG12345,其中字符C的ACSII码值为奇数,在数组的下标为偶数,因些必须删;而字符1的ASCII码值为奇数,在数组中的下标也为奇数,因此不应当删除,其他依此类推。最后t所指的数组中的内容就是BDF12345。请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。#include#include#includevoidfun(char*s,chart[])1main()(chars[100],t[100];FILE*out;printf("

627PleaseenterstringS:");scanf(n%sH,s);fun(s,t);printf(H

628Theresultis:%s

629u,t);out=fopen("out.dat”,"w");strcpy(s,"PleaseenterstringS:”);fun(s,t);fprintf(out,M%sM,t);fclose(out);

630第50套第一题:请补充fun函数的功能是在字符串的最前端加入n个*号,形成新串,并且覆盖。注意:字符串长度最长允许为79。请勿改动主函数main和其他函数中的任何内容,仅在fun函数的横线上填入所写的若干表达式或语句。#include#include#includevoidfun(chars[],intn)(chara[80],*p;inti;P=1;for(i=0;i

631Enterastring:n);gets(s);printf(M

632Thestring\',%s\M

633,',s);printf(n

634Entern(numberof*):");scanf("%d”,&n);fun(s,n);printf(H

635Thestringafterinsert:\"%s\"

636",s);1第二题「下列给定程序中函数fun的功能是:先将在字符串中s中的字符按逆顺序存放到t串中,然后把s中的字符按正序连接到t串的后面。例如:s中的字符串为ABCDE时,则t中的字符串应为EDCBAABCDE.请改正程序中的错误,使它能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!#include#include#includevoidfun(char*s,char*t)intsi,i;si=strlen(s);/********found********/for(i=0;i

637Pleaseenterstrings:n);scanf("%s”,s);fun(s,t);printf(°Theresultis:%s

638M,t);}

639第三题:Li知学生的记录由学号的学习成绩构成,N名学生的数据己存入a结构体数组中。评估编写函数fun,该函数的功能是:找出成绩最高的学生记录,通过形参返回主函数(规定只有一个最高分)。已给出函数的首部,评估完成该函数。请勿改动主函数main的其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。#include#include#include#defineN10typedefstructss{charnum[10];ints;}STU;voidfun(STUa[J,STU*s))main()(STUa[N]={{“A01”,81},NA02”,89},{“A03”,66},{“A04”,87},{“A05”,77},{“A06”,90},{“A07”,79},{“A08”,61},{“A09”,80},{“A10”,71}},m;inti;FILE*out;printf(H*****Theoriginaldata*****

640H);for(i=0;i

641M,a[ij.num,a[i]s);fun(a,&m);printf(H*****THERESULT****%”);printf("Thetop:%s,%d

642",m.num,m.s);out=fopen(Mout.datH,Hwu);fprintf(out,,,%s

643%d,'»m.num,m.s);fclose(out);答案:填空题:第1处填空:s第2处填空:*p++第3处填空:*(p)或*p或者*p!=0改错题:第1处:t[i]=s[sl-i];应改为t[i]=s[sl-i-l];或t[i]=s[sl-l-ij;编程题:voidfun(intm,int*k,intxx[]){intI,max;max=a[0J,s;for(i=0;imax)(max=a[i],s;*s=a[i];)第51套第一题:

644请补充fun函数,该函数的功能是把从键盘输入的3个整数按从小到大输出。例如:输入场233214,结果输出142332.注意,部分源程序给出如下。仅在横线上填入所*写的若干表达式或语句,勿改动函数中的其他任何内容。#include#includemain(){intx,y,z,t;printf(HInputx,y,z

645u);scanf("%d%d%dH,&x,&y,&z);if(一1一)(t=x;x=y;y=t;}/*交换x,y的值*/if(一2—)(t=z;}/*交换x,z的值*/if(一3—)(t=y;y=z;z=t;}/*交换z,y的值*/printf(H******theresult*******

646M);printf(Mfromsmalltobig:%d%d%d

647'\x,y,z);}第二题:下列给定程序中,函数fun的功能是:将m(l<=m<=10)个字符串连接起来,组成一个新串,放在pt所指字符串中。例如:把3个串abc,CD,EF串连起来,结果是abcCDEF。请改正程序中的错误,使它能计算出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序结构!#include#include#include/********foun(j********/voidfun(charstr[][],intm,char*pt)(intk,q,i;for(k=0;k

648Pleaseenterm:");

649scanf(n%d",&m);gets(s[OJ);printf("

650Pleaseenter%dstring:

651H,m);for(h=0;h

652Theresultis:%s

653",p);)第三题:请编写函数fun,其功能是:将所有大于1小于整数m的非素数存入xx所指数组中,非素数的个数通过k传回。例如,若输入17,则应输出:9和46891012141516。请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。#include#includevoidfun(intm,int*k,intxx[])main()(intm,n,zz[100J;FILE*out;printf("

654Pleaseenteranintegernumberbetween10and100:");scanf(n%dM,&n);fun(n,&m,zz);printf("

655

656Thereare%dnon-primenumberslessthan%d:",m,n);for(n=0;n

657%4dM,zz[n]);out=fopen(',out.dat';"w");fun(28,&m,zz);fprintf(out,H%d

658n,m);for(n=0;n

659,\zz[n]);fclose(out);)第51题答案填空题:第1处填空:x>y或yvx第2处填空:x>z或zz或z#include#defineN80main()(FILE*fp;

660inti=0;charch;charstr[N]='I'mastudents!M;if((fp=fopen(_1_))=NULL)(printf(ncannotopenout52.dat

661M);exit(O);)while(str[i]){ch=str[i];―2—;putchar(ch);i++;)—3—;)“out52.dat","w"fputc(ch,fp)fclose(fp)第2题卜列给定程序中,喊上函数fun的功能是:给定n个实数,输出平均值,并统计在平均值以上(含平均值)的实数个数。例如,n=8时,输出193.199,195.673,195.757,196.051,196.092,196.056,196.579,196.763,所得平均值为195.838750,在平均值以上的实数个数应为5=请改正程序的错误,使程序能的出正确的结果。注意:不要改动main函数,不的增行或删行,也不的更改程序的结构。#include#include/********found********/intfun(doublex[],intn)intj,c=0;doublexa=0.0;for(j=0;j

662",xa);for(j=0;j=xa)C++;returnc;)main()(doublex[100]={193.199,195.673,195.757,196.051,196.092,196.596,196.579,196.763};printf(,,%d

663M,fun(x,8));)intfun(doublex[J,intn)改为intfun(doubex[],intn)第3题编写一个函数fun,它的功能是:实现俩个字符串的连接(不使用库函数strcat),j即把p2所指的字符串连接到pl所指的字符串后。例如,分别输入下面俩个字符串:firtststring一secondstring则程序输出:firtststring—secondstring请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句voidfun(charpl[J,charp2[J)(inti=0,n=0;char*p=pl,*q=p2;while(*p)(P++;n++;}i=n;while(*q)(

664pl[i]=*q;q++;i++;)pl[i]='\0';第53套第一题:请补充函数fun,该函数的功能是建立一个带头结点的单向链表并输出到文件“out53.dat”和屏幕上,各结点的值为对应的下标链表的结点数和输出的文件名作为参数传入。请不要改动主函数main和其他函数中的任何内容,仅在fun函数的横线上填入所编写的若干表达式或语句。#include#includetypedefstructss(intdata;structss*next;JNODE;voidfun(intn,char*filename)(NODE*h,*p,*s;FILE*pf;inti;h=p=(NODE*)malloc(sizeof(NODE));h->data=O;for(i=l;idata=1;―2—;p=—3—;}p->next=NULL;if((pf=fbpen(filename,,,wM))=NULL){printf(nCannotopenout53.dat!*');exit(O);)P=h;fprintf(pf;'

665***THELIST***

666M);printf(n

667***THELIST***

668n);while(p)(fprintf(pf,H%3dH,p->data);printf(n%3d",p->data);if(p->next!=NULL){fprintf(pf,n->n);printf}p=p->next;)fprintf(pf;,

669H);printf(,'

670n);fclose(pf);

671p=h;while(p){s=p;p=p->next;free(s);}}main()char*filename=,,out53.datH;intn;printfC^Vnlnputn:H);scanf(u%dn,&n);fun(n,filename);第二题:下列给定的程序,函数fun的功能是:用递归法计算裴波拉契级数数列中第n项的值。从第1项起,裴波拉契级数序列为1、1、2、3、5、8、13、21…例如,若给予n输入7,该项的裴波拉契级数值为13。#includelongfun(intg)(/********found********/switch(g);{case0:return0;/********found********/case1;case2:return1;}return(fun(g-l)+fun(g-2));}main()(longfib;intn;printf(HInputn:");scanf("%d”,&n);printf(,'n=%d

672M,n);fib=fun(n);printf(ufib=%d

673

674",fib);第三题:请编写函数fun,该函数的功能是:实现8=人+',即把矩阵A加A的转置,存放在矩阵B。计算结果在main函数中输出。例如,输入下面的矩阵:其转置矩阵为:123147456258789369则程序输出:261061014101418注意:部分源程序给出如下。请不要改动主函数main各其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。#include

675#includevoidfun(inta[3][3],intb[3][3])main()(inta[3][3]={{L2,3},{4,5,6),(7,8,9}},t[3][3];inti,j;FILE*out;fun(a,t);out=fopen(nout.datu,nwM);for(i=0;i<3;i++)(for(j=0;j<3;j++){printf("%7d",t[i][j]);fprintf(out,"%7d",t[i][j]);}printf("

676");iprintf(out,”

677");)fclose(out);答案:第一题(填空题):第一空:i第二空:p—next=s第三空:p~next第二题(改错题):第一处:switch(g);应改成switch(g)第二处:case1;应改成case1:第三题(编程题):voidfun(inta[3][3],intb[3][3]){inti,j,at[3][3];for(i=0;i<=2;i++)for(j=0;j<=2;j++)at[i][j]=a|j][i];for(i=0;i<3;i++)for(j=0;j<3;j++)b[i][j]=a[i]|j]+at[i][j];)第54套第一题:请补充函数fun,该函数的功能是比较字符串strl和str2的大小,并返回比较的结果。例如:当strl="abed”,str2="abc”时,fun函数返回请勿改动主函数main和其他函数中的任何内容,仅在fun函数的横线上填入所编写的若干表达式和语句。#include#include#defineN80char*fun(char*strl,char*str2)(char*pl=strl,*p2=str2;while(*pl&&*p2){if(一1一)return"v”;if(一2一)returnn>";pl++;p2++;}if(*pl==*p2)return"==";

678if(*pl==—3—)returnelsereturnn>*';)main(){charstrl[N],str2[N];printf(*'Inputstrl:

679M);gets(strl);printf(*'Inputstr2:

680M);gets(str2);printf(H

681*******theresult********

682H);printf(n

683strl%sstr2n,fun(strl,str2));}第二题下列给定程序中,函数fun的功能是:比较两个字符串,将长的那个字符串的首地址作为函数值返回。请改正函数fun中的错误,使它能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!#include#include/********found********/doublefun(char*s,char*t)(intsi=0,tl=0;char*ss,*tt;ss=s;tt=t;/********found********/while(*ss)(sl++;(*ss)++;)/********found********/while(*tt)(tl++;(*tt)++;}if(tl>sl)returnt;elsereturns;)main()(chara[80],b[80];printf(n

684Enterastring:");gets(a);printf(M

685Enterastringagain:");gets(b);printf(**

686Thelongeris:

687

688%s

689'\fun(a,b));第三题:学生的记录由学号和成绩组成,N名学生的数据已在主函数中放入结构体数组s中,请编写函数fun,它的功能是:把低于平均分的学生数据放在b所指的数组中,低于平均分的学生人数通过形参n传回,平均分通过函数值返回。请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写在若干语句。#include#defineN8typedefstruct(charnum[10];doubles;}STREC;doublefun(STREC*a,STREC*b,int*n)

6901main()(STRECs[N]={{"GA05”,85},{“GA03”,76},{“GA02”,69},{“GA04”,85},{nGA01M,91},{nGA07u,72},{"GA08",64},{HGA06H,87}};STRECh[N],t;FILE*out;inti,j,n;doubleave;ave=fun(s,h,&n);printf("The%dstudentdatawhichislowerthan%7.3f:

691M,n,ave);for(i=0;i

692M,h[i].num,h[i].s);printf(M

693H);out=fopen(Mout.datn,Mw,');fprintf(out,M%d

694%7.3f

695",n,ave);for(i=0;ih|j].s)(t=h[i];h[i]=h[j];h[j]=t;)for(i=0;i

696n,h[i].s);fclose(out);)第54题答案一填空题:第1处填空:*plv*p2或*p2>*pl第2处填空:*pl>*p2或*p2v*pl第3处填空:、(T或0二改错题:第doublefun(char*s,char*t)应改为char*fun(char*s,char*t)第二处:(*ss)++;应改为SS++;第三处:(*tt)++;应改为tt++;三编程题:doublefun(STREC*a,STREC*b,int*n)(doubleaver=0.0;inti,j=0;*n=0;for(i=0;i

697请补充fun函数,该函数的功能是:寻找两个整数之间的所有素数(包括这两个整数),把结果保存在数组bb中,函数返回素数的个数。例如:输入3和17,则输出为357111317请勿改动主函数mian和其他函数中的任何内容,仅在fun函数的横线上填入所编写的若干表达或语句。#include#include#defineN1000intfun(intn,intm,intbb[N])!inti,j,k=0,flag;for(j=n;j<=m;j++)for(i=2;i

698n);scanf(H%dH,&n);printf(uInputm

699H);scanf(n%dM,&m);fbr(i=0;i#includevoidfun(inta,int*b,int*c)(inti,j,d,y;for(i=3;i

700/***************/d=i-a;for(j=2;j<=sqrt((double)i);j++)if(d%j==0)y=0;if(y=1)(*b=i;*c=d;})main()(inta,b,c;do{printf(H

701Inputa:");scanf(,,%d,\&a);}while(a%2);fun(a,&b,&c);printf(u

702

703%d=%d+%d

704",a,b,c);第三题:编程题请编写函数fun,该函数的功能:将M行N列的二维数组中的数据,按行的顺序依次放到一维数组中,一维数组中数据的个数存放在行参n所指的存储单元中。例如,若二维数组中的数据为:333333334444444455555555则一维数组中的内容应是:333333334444444455555555请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。includevoidfun(int(*s)[10],int*b,int*n,intmm,intnn)main()intw[10][10]={{33,33,33,33},{44,44,44,44),{55,55,55,55}},i,j;inta[100]={0},n=0;FILE*out;printf(uThematrix:

705M);fbr(i=0;i<3;i++){for(j=0;j<4;j++)printf(M%3dn,w[i][j]);printf(H

706n);)fun(w,a,&n,3,4);printf("TheAarray:

707H);out=fopen(,'out.dat",,'wn);fbr(i=0;i

708H,a[i]);}fclose(out);

709printf(H

710

711n);55填空题答案:第1处填空:flag=l第2处填空:j%i==0或0==j%i或!(j%i)第3处填空:flag==l或l==flag55改错题答案:第一处:y=0;应改为y=l;第二处:d=i-a;应改为d=a-I;55编程题答案:voidfun(int(*s)[10],int*n,intmmjntnn)intIJ;for(i=0;i#include#defineN80main()(FILE*fp,*fpl,*fp2;inti;charc[N],ch;fp=fopen(,'A.datH,"w");fprintf(fp,Ml'mFileA.dat!

712u);fclose(fp);fp=fopen(nB.dat",nwn);fprintf(fp,"I'mFileB.dat!

713H);fclose(fp);if((fp=fopen("A.dat丁T'))=NULL)(printf(nfileAcannotbeopened

714M);exit(0);)printf("

715Acontentsare:

716

717M);for(i=0;(ch=fgetc(fp))!=EOF;i++)(c[ij=ch;putchar(c[ij);}fclose(fp);if((fp=fopen(HB.datM,V))==NULL)(printf(nfileBcannotbeopened

718H);exit(0);)printf(H

719

720

721Bcontentsare:

722

723M);for(i=0;(ch=fgetc(fp))!=EOF;i++)(

724c[i]=ch;putchar(clij);}fclose(fp);if((fpl=fopen(MA.datM,Han))—1—(fp2=fopen("B.dat“,T)))(while((ch=fgetc(fp2))!=EOF)2:}elseprintf(HCannotopenAB!

725H);)fclose(fp2);fclose(fpl);printf(H

726********newAcontents*********

727

728n);if((fp=fopen(,,A.datM,V))==NULL)(printf(nfileAcannotbeopened

729'*);exit(O);}for(i=0;(ch=fgetc(fp))!=EOF;i++)(c[i]=ch;putchar(c[i]);)—3—;)答案第一处填空:&&第二处填空:fputc(ch.fpl)第三处填空:fclose(fp)第二题:改错题下列定程序中,函数fun的功能是;用冒泡法对6个字符串按由小到大的顺序进行排序。请改正程序中的错误。使它能得出正确结果。注意:不要改动main函数,不得增加或删行,也不得更改程序的结构!#include#include#defineMAXLINE20/********found********/voidfun(char(*pstr)[6])(inti,j;char*p;for(i=0;i<5;i++)(for(j=i+1;j<6;j++){/********foun(j********/if(strcmp(*(pstr+i),pstr+j)>0)!p=*(pstr+i);/********found********/*(pstr+i)=pstr+j;*(pstr+j)=p;}}main()(

730inti;char*pstr[6],str[6][MAXLINE];for(i=0;i<6;i++)pstr[i]=str[i];printfC^XnEnter6sting(lstingateachline):

731H);for(i=0;i<6;i++)scanf(n%sn,pstr[i]);fun(pstr);printf(HThestringsaftersorting:

732°);for(i=0;i<6;i++)printf("%s

733",pstr[i]);)答案第一处改错:doublefun(char*s,char*t)应改为char*fun(char*s,char*t)第二处改错:(*ss)++;应改为ss++;第三处改错:(*tt)++;应改为tt++;第三题:编程题假定输入的字符串中只包含字母和*号。请编写函数fun,他的功能是:除了尾部的*号之外,将字符串中其他*号全部删除。形参p已指向字符串中最后的一个字母。在编写函数时,不得使用c语言提供的字符串函数。例如,若字符串中的内容为****A*BC*DEF*G*******,删除后,字符串中的则内容应当是ABCDEFG*******。请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。#include#include#includevoidfun(char*a,char*p))main()(chars[81],*t;FILE*out;printf("Enterastring:

734H);gets(s);t=s;while(*t)t++;t—;while(*t=='*')t-;fun(s,t);printf(nThestringafterdeleted:

735H);puts(s);out=fopen(Mout.dat,',MwM);strcpy(s”****a*BC*DE*F*G********')fun(s,s+14);fprintf(out,"%s",s);fclose(out);)答案voidfun(fun*a,char*p)inti=0;char*p=a;

736while(q<=p)(if(*q!='*')(a[i]=*q;i++;)q++;)while{*q}(a[i]=*q;i++;q++;)a[i]=>\O,;第57套第一题:请补充fun函数,该函数的功能是:计算并输出下列多项的值.11S=1h11-...+1+2+3+…+501+21+2+3例如,若主函数从键盘给n输入50后,则输出为S=1.960784请勿改动主函数main和其他函数中任何内容.仅在fun函数中的横线上填入所编写的若干表达式或语句。#includedoublefun(intn)(inti,j;doublesum=0.0,t;for(i=l;i<=n;i++){t=0.0;for(j=l;j<=i;j++)t+=j;sum+=1.0/t;|returnsum;)main()intn;doubles;printf(n

737lnputn:");scanf(n%dn,&n);s=fun(n);printf("

738

739s=%f

740

741,',s);

742第二题:下列给定的程序中,函数fun的功能是:首先把b所指字符串中的字符按逆序存放,然后将a所指字符串中探子符和b所指字符串中的字符,按排列的顺序交叉合并到c所指数组中,过长的剩余字符接在c所指数组的尾部。例如,当a所指字符串中的内容为abcdefg,b所指字符串中的内容为1234时,c所指数组中内容应该为a4b3c2dlefg;而当a所指字符串中的内容为1234,b所指字符串中的内容为abcdefg时,c所指数组中内容应该为Ig2f3e4dcba。请改正程序中的错误,使它能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!#include#include#includevoidfun(char*a,char*b,char*c)(inti,j;charch;i=0;j=strlen(b)-l;/********f^ound********/while(i>j){ch=b[i];b[i]=b[j];b[j]=ch;i++;j-;)while(*aII*b)(if(*a){*c=*a;C++;a++;)if(*b)C++;b++;)}/********Cund********/c=0;)main()charsl[100],s2[100],t[200];printf(n

743Entersistring:'*);scanf(u%sn,si);printf(n

744Enters2steing:");scanf(H%sM,s2);fun(sl,s2,t);printf(M

745Theresultis:%s

746u,t);第三题:学生的记录由学号和成绩组成,N名学生的数据已居主函数中入入结构体数组S中,请编写函数fun,它的功能是:把指定分数范围内的学生数据放在b所指的数组中,分数范围内的学生人数由函数值返回。例如,输入的分数是60和69,则应当把分数在60到69的学生数据进行输出,包含60分和69分的学生数据。主函数中将把60放在low中,把69放在heigh中。请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。

747#include#defineN16typedefstruct(charnum[10];ints;}STREC;intfun(STREC*a,STREC*b,int1,inth))main()(STRECs[N]={{HGAOO5M,85},{,,GA003,1,76},{HGA002n,69},{,'GA004,1,85},{HGA00r,96),{MGA007,',72},{"GA008n,64},{MGA006M,87),{“GA015”,85},{“GA013”,94},{“GA012”,64},{“GA014”,91},{“GA011”,90},{“GA017”,64},{”GA018”,64},{uGA016';72});STRECh[N],tt;FILE*out;inti,j,n,low,heigh,t;printf("Enter2integernumberlow&heigh:'*);scanf(M%d%dH,&low,&heigh);if(heigh

748*'»low,heigh);for(i=0;i

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

750");out=fopen("out.dat0,HwH);n=fun(s,h,80,98);fprintf(out,M%d

751M,n);for(i=0;ihU].s)tt=h[»];h[i]=h[j];h[j]=tt;)for(i=0;i

752,,,h[i].s);fprintf(out,H

753n);fclose(out);答案:第一题:第一处:double第二处:j第三处:1.0/t或(double)”第二题:while(i>j)改为while(j>i)或while(i

754intfun(STREC*a,STREC*b,inthinth)(inti,j=0;for(i=0;i=l&&a[i].s<=h)(b[j]=a[ij;j++;1returnj;)第58套第1题请补充main函数,该函数的功能是,将保存在磁盘文件中的10个学生的数据中的第1、3、5、7、9个学生的数据输入计算机,并在屏幕上显示出来。公在横线上填入所编写的若干表达式或语句,勿改动函数中的其他任何内容。#include#includemain()(inti,n;longf=l;printf("Inputn:");scanf(n%dM,1);for(2;i<=n;i++)―3—;printf(n%d!=%ld

755';n,f);第2题下列给定程序中函数fun的功能是:先将在字符串s中的字符按正序存放到t串中,然后把s中的字符按逆序连接到t串中的后面。例如:当s中的字符串为ABCDE时,则t中的字符串应为ABCEEEDCBo请改正程序中的错误,使它能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!#include#include#includevoidfun(char*s,char*t)(inti,si;si=strlen(s);/********fk)und********/for(i=0;i<=sl;i++)t[i]=s[i];for(i=0;i

756Pleaseenterstrings:n);scanf(n%sH,s);fun(s,t);

757printf("Theresultis:%s

758",t);)第3题编写函数fun,它的功能是:求n以内(不包括n)同时能被3与7整除的所有自然数之和的平方根s,并作为函数值返回。例如,若n为1000Bt,函数值应为s=153.909064«请改动主函数main和其他函数中的任何内宾,仅在函数fun的花括号中填入所编写的若干语句。#include#include#includedoublefun(intn))main()(FILE*out;printf(,'s=%f

759H,fun(1000));out=fopen(nout.datH,wwM);fprintf(out,H%f\fun(1024));fclose(out);)第1题答案第1处填空:&n第2处填空:i=l第3处填空:f*=I或f=f*I或f=i*f第2题答案第1处:for(i=0;i<=s1;i++)应改为for(i=0;ivsl;i++)第2处:应改为tn*sl]='\O';第3题答案doublefun(intn){doubles=0.0;intI;for(i=l;i

760第一题:请补充main函数,该函数的功能是,计算两个自然数n和m(mvl(XX)0)之间所有数的和。n和m从键盘输入。例如,当n=l,m=100时sum=5050,当n=100,m=1000时,sum=495550仅在横线上填入所编写的若干表达式或语句,勿改动函数的其他任何内容。#include#includemain()intn,m;longsum;sum=0;printfCAnInputn,m

761u);scanf(n%d,%d",&n,&m);while(n<=m){sum+=n;n++;}printf(nsum=%ld

762",sum);)第二题:下列给定程序中,函数fun的功能是:统计字符串中各元音字母(即:A、E、I、O、U)的个数。注意:字母不分大、小写。例如:若输入THIsisaboot,则输出应该是1、0、2、2、0.请改正程序中的错误,使它能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!#include#include/********found********/voidfun(char*s,intnum[5])(intk,i=5;/********found********/

763for(k=0;k

764break;)case*u':case'U':i=4;break;))if(i>=0)num[i]++;})main()(charsl[81];intnuml[5],i;printf(u

765Pleaseenterastring:");gets(sl);fun(sl,numl);for(i=0;i<5;i++)printf("%d”,numl[i]);printf(M

766H);)第三题:请编写函数fun,该函数的功能是:将放在字符串数组中的M个字符串(每串的长度不超过N),按顺序合并组成一个新的字符串。例如,若字符数中的M个字符串为:AAAABBBBBBCC

767则合并后的字符串的内容应是AAAABBBBBBCCo请勿改动主函数main和其他函数中的任何内容,仅在fun的花括号中填入所编写的若干语句。#include#defineM3#defineN20voidfun(chara[M][N],char*b)(intij,k=0;for(i=0;i

768M);fbr(i=O;i

769puts(w[i]);printf(M

770H);fun(w,a);printf(uTheAstring:

771H);printf(M%sH,a);printf("

772

773”);out=fopen(,'out.dat'\,"w'');fprintf(out,a);fclose(out);)voidfun(chara[M][N],char*b)(inti,j,k=O;for(i=0;i

774函数的横线上填和所编写的若干表达式或语句。#include#defineN100voidfun(intbb[],intn)(inti,j,t;for(i=0;—1—;i++)for(j=0;—2—;j++)if(bb[j]>bb[j+l])(t=bb[j];bbU]=bb[j+i];bb[j+l]=t;)}main(){inti=0,n=0;intbb[N];printf("

775lnputn:

776u);scanf(”%d”,&n);printf(M

777Inputdata:

778M);while(i

779********theresult*********^ji")・for(i=0;i#includeintfun(intm)(inti,k;for(i=m+l;;i++)|for(k=2;k

780if(k

781pleaseentern:");scanf("%dn,&n);printf(',%d

782,\fun(n));)第三题:请编写函数fun,该函数的功能是:删去一维数组中所有相同的数,使之只乘一个。数组中的数上按由小到大的顺序排列,函数返回删除后数组中数据的个数。例如,若一维数组中的数据是:2223445666677899101010删除后,数组中的内容应该是:2345678910请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。#include#defineN80intfun(inta[],intn)()main()(inta[N]={2,2,2,3,4,4,5,6,6,6,6,7,7,8,9,9,10,10,10,10},i,n=20;FILE*out;printf(MTheoriginaldata:

783u);for(i=0;i

784

785Thedataafterdeleted:

786u);out=fopen(,,out.dat,,,MwH);for(i=0;i

787M,a[i]);}fclose(out);printf(”

788

789");

790)一、ii2、jvn-1或n-l>j二、第一处应改为:if(i%k==O)第二处应改为:if(k>=i)inti,t,j=O,*p=a;t=p[O];for(i=0;i<=n;i++)if(t==p[i])else{a[j]=t;t=p[i];j++;}if(i>=n)a|j]=t;returnj;第61套第61套题一、填空题请补充main函数,该函数的功能是:计算每个学生科目的平均分,并把结果保存在数组bb中。例如,当scorefN][M]={{78.5,84,83,65,63},{88,91.5,89,93,95},{72,5,65,56,75,77}}时,三个学生的平均分为:74.791.369.k仅在横线上填入所编写的若干表达式或语句,勿改动函数中的其他任何内容。#include#defineN3#defineM5main()(inti,j;staticfloatscore[N][M]={{78.5,84,83,65,63},{88,91.5,89,93,95},{72.5,65,56,75,77)};floatbb[N];for(i=0;i

791student%d\taverage=%5.1f\i+1,bb[i]);)二、改错题

792下列给定程序中,函数fun的功能是:根据整型行参m,计算如下公式的值。1][1y-100x100200x200300x300mxm例如,若m=2000,则应该输出:0.000160o请改正程序中的错误,使它能得出正确的结果。#include#include/********found********/fun(intm)(doubley=0,d;inti;/********found********/for(i=100,i<=m,i+=100){d=(double)i*(double)i;y+=1.0/d;}return(y);}main()(intn=2000;printf(H

793Theresultis%IAnH,fun(n));)三、编程题请编写函数fun,该函数的功能是:统计个年龄段的人数。N个年龄通过调用随机函数获得,并放在主函数的age数组中:要求函数把0至9岁年龄段的人数放在d[0]中,把10至19岁年龄段的人数放在d[l]中,把20至29岁年龄段的人数放在d[2]中,其余依此类推,把100岁(含100)以上年龄的人数都放在d[10]中。结果在主函数中输出。请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。#include#defineN50#defineM11voidfun(int*a,int*b)doublemd()(statict=29,c=217,m=1024,r=0;r=(r*t+c)%m;retum((double)r/m);)main(){intage[N],i,d[M];FILE*out;

794for(i=0;i

795");for(i=0;i

796H:M%4dM,age[i]);printf(',

797

798H);fun(age,d);out=fopen("out.dat",”w“);for(i=0;i<10;i++){printf(n%4d—%4d:%4d

799n,i*10,i*10+9,d[i]);fprintf(out,"%4d…%4d:%4d

800n,i*10,i*10+9,d[i]);}printf(nOver100:%4d

801",d[10J);fprintf(out,MOver100:%4d

802M,d[10]);fclose(out);1答案:一、1、bb[i]=0或*(bb+i)=02、bb[i]+=score[i][j]bb[i]=b[i]+score[i][j]4Kbb[i]=score[i][j]+bb[i]二、1、fun(intm)应改为doublefun(intm)2、for(i=l(X),iv=m,i+=100)应改为for(i=100;i<=m;i+=100)-、voidfun(int*a,int*b)(inti,j;for(j=0;j=0&&a[iJ<=9)b[O]+=l;elseif(a[i]>=10&&a[i]<=19)b[l]+=l;elseif(a[i>=20&&a[i]<=29)b[2]+=l;elseif(a[i]>=30&&a[i]<=39)b[3]+=l;elseif(a[i>=40&&a[i]<=49])b[4]+=l;elseif(a[i]>=50&&a[i]<=59)b[5]+=l;elseif(a[i]>=60&&a[i]<=69)b[6]+=l;elseif(a[i]>=70&&a[i]<=79)b[7]+=l;elseif(a[i]>=80&&a[i]<=89)b[8]+=l;elseif(a[i]>=90&&a[i]<=99)b[9]+=l;elseb[10]+=l;}62第62套题:填空题请补充main函数,该函数的功能是:从键盘输入一组字符串,以'结束输入,并显示出这个字符串。例如,输入abcdef*,结果显示abcdef。

803仅在横线上添入所编写的若干表达式或语句,勿改动函数中的其他任何内容。#includettdefineN80main(){inti=-1,j=0;charstr[N];printf("

804Inputastring

805");do{i++;scanf(_1_);)while(_2_);printf(*

806*******displaythestring*******

807〃);while(j

808答案:⑴“%案,&str[i](2)str[i]!=,*'⑶"%cw,str[j]改错题:下列给定程序中,函数fun的功能是:计算并输出high以内最大的10个素数之和。High由主函数传给fun函数。若high的值为100,则函数的值为732。ttinclude#includettincludeintfun(inthigh)(intsum=0,n=0,j,yes;while((high>=2)&&(n<10))(yes=1;for(j=2;j<=high/2;j++)/********found********/if(high%j=0)(yes=0;break)if(yes)(sum+=high;n++;)high一;)returnsum;}main()(printf("%d

809”,fun(100));}答案:break改为break;程序设计:请编写函数fun,该函数的功能是:统计一行字符串中单词的个数,作为函数值返回。一行字符串在主函数中输入,规定所有单词由小写字母组成,单词之间由若干个空格隔开,一行的开始和结束都没有空格。#include#include^defineN80intfun(char*s)

810charline[N];intnum=O;FILE*out;char*test[]={"HelloWorld!","Thisisateststring.",b”,*cdefg,sf1"};printf("Enterastring:

811");gets(line);num=fun(line);printf("Thenumberofwordis:%d

812

813z

814um);out二fopen("out.dat","w");for(num=0;num<4;num++)printf(out,"%d

815”,fun(test[num]));fclose(out);}第63套第63题第一题:已知学生的记录由学号和学习成绩构成,N名学生的数据已存入a结构体中,给定程序的功能是找出成绩最低的学生记录,通过形参返回函数。请勿改动主函数main和其他函数中的任何内容,仅在fun函数的横线上填入所编写的若干表达式或语句。#include#include#defineN10typedefstructss(charnum[10];ints;}STU;fun(STUa[],STU*s)(stuh;inti;h=a[0];for(i=l;i

816H);for(i=0;i

817",a[i].num,a[i].s);fun(a,&m);printf(H*****THERESULT*****

818n);printf(nThelowest:%s,%d

819H,m.num,m.s);

820第二题:下列给定程序中,函数fun的功能是:将字符串p中的所有字符复制到字符串b中,要求每复制三个字符之后插入一个空格。例如,在调用fun函数之前给字符串a输入ABCDEFGHIJK,调用函数之后,字符串之后,字符串b中的内容则为ABCDEFGH1JK。请改正程序中的错误,使它能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!#includevoidfun(char*p,char*b)(inti,k=0;while(*p)(/********foun(j********/i=0;/*******nd********/while(i<3&&*p)(b[k]=*p;k++;P++;i++;I/********found********/if(*p)bfk++l=')b[k]='O';)main()(chara[80],b[80];printf("Enterastring:");gets(a);printf("Theoriginalstring:");puts(a);fun(a,b);printf(H

821Thestringafterinsertspace:");puts(b);printf(H

822

823H);)第三题:请编写一个函数fun,它的功能是:计算并输出给定整数n的所有因子(不包括1与自身)之和。规定n的值不大于1000。例如,若主函数从键盘给n输入的值为856,则输出为sum=763。请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。#includeintfun(intn)intn,sum;FILE*out;priiHf("Inputn:");scanf(H%dM,&n);sum=fun(n);

824printf(,,sum=%d

825,,,sum);out=fopen(,,out.dat,',,,w,');fprintf(out,M%d

826n,fun(123));fprintf(out,H%d

827M,fun(456));fprintf(out,H%d

828H,fun(789));fprintf(out,H%d

829n,fun(147));fprintf(out,n%dM,fun(258));fclose(out);intfun(intn)(ints=O,i;for(i=2;i<=n-l;i++)if(n%i==O)s+=i;returns;)第64套填空题请补充main函数,该函数的功能是:把字符串strl中的非空格字符拷贝到字符串str2中.例如,若strl="nicetomeetyou!”,则str2="nicetomeetyou!”仅在横线上填入所编写的若干表达式或语句,勿改动函数中的其他任何内容.#include#defineN80main()(staticcharstrl[N]="nicetomeetyou!";charstr2[N];inti=0,j=0;printf("

830******strl******

831");puts(strl);while(strl[i])(if(一1一)str2|j++]=strl[i];—2—;)printfn******slr2******

832for(i=0;i#includecharfun(charc)(/********found********/if(c>='A'&&c<='Z,)c=c-32;/********found********/if(c>='a,&&c<=V)c=c-5;elseif(c>='v'&&c<=,z,)c=c-21;returnc;)main()(charcl,c2;printf(n

833Enteraletter(A-Z):");cl=getchar();if(isupper(cl))(c2=fun(cl);printf(u

834

835Theletter%cchangeto%c

836M,cl,c2);

837)else(printf(n

838Enter(A-Z)!

839n);))编程题请编写函数fun,其功能是:将s所指字符串中ASCH值为奇数的字符删除,串中剩余字符形成一个新串放在t所指的数组中。例如,若s所指字符串中的内容为ABCDEFG12345,其中字符A的ASCII码值为奇数、……、字符1的ASCII码值也为奇数、……都应当删除,其他依次类推。最后t所指的叔祖中的内容应是BDF24。请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。#include#include#includevoidfun(char*s,chart[])main()(chars[100],t[100],Msg[]="PleaseenterstringS:H;FILE*out;printf(Msg);scanf(n%sH,s);fun(s,t);printf(*'

840Theresultis:%s

841*',t);out=fopen(,,out.dat,';,wn);fun(Msg,t);fprintf(out,"%sH,t);fclose(out);)答案:第一题:第1处填空strl[i]!=八或一!=strl[i]第2处填空i++或++i或i+=l或i=i+l第二题:第1处:c=c-32;应改为c=c+32;第2处:c=c-5;应改为c=c+5;第三题:voidfun(charts,chart[])(intI,j=0,n;n=strlen(s);fbr(i=O;i

842#defineN10main()(intbb[N][N];inti,j,n;printf(H

843lnputn:

844H);scanf("%dM,&n);for(i=0;i

845");for(i=0;i

846下列给定程序中函数fun的功能是:从低位开始取出长整型变量s中奇数位上的数,依次构成一个新数放在t中,例如,当s中的数为7654321时,t中的数为7531。请改正程序中的错误,使它能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!#include#include/********found********/voidfun(longs,longt){一longsi=10;*t=s%10;while(s>0){s=s/100;*t=s%10*sl+*t;/********found********/si=sl*100;}}main()(longs,t;printf(u

847Pleaseenters:'*);scanf(n%ldH,&s);fun(s,&t);printf(uTheresultis:%ld

848u,t);)编程题请编写函数fun,其功能是:将两个两位数的正整数a、b合并形成一个整数放在c中。合并的方式是:将a数的十位和个位数依次放在c数的百位和个位上,b数的十位和个位数依次放在c数的十位和千位上。例如,当a=45,b=12,调用该函数后,c=2415»请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。#include#includevoidfun(inta,intb,long*c))main()(inta,b;longc;FILE*out;printf("Inputa,b;M);scanf(M%d%dn,&a,&b);fun(a,b,&c);printf("Theresultis:%ld

849",c);out=fopen(',out.dat",,,wn);for(a=20;a<50;a+=3)fun(a,109-a,&c);fprintf(out,"%ld

850",c);}fclose(out);

851)答案第一题(填空题)第1处填空:bb[i][j]=l第2处填空:bb[i][j]=O第二题(改错题)第1处:voidfun(longs,long。应改为voidfun(longs,long*t)第2处:sl=sl*100;应改为sl=s改为;第三题(编程题)voidfun(inta,intb,long*c)(*c=(b%10)1000+(a/10)*100+(b/10)*l0+a%10;第66题填空题请补充main函数,该函数的功能是:把一个整数插入到一个已经按从小到大顺序排列的数组中.插入后,数组仍然有序.例如,在数组bb[N]={11,21,31,41,51,61,71,79,81,95,}中插入99,结果为bb[N]={11,21,31,41,51,61,71,79,81,95,99}注意:部分源程序给出如下.仅在横线上填入所编写的若干表达式或语句,勿改动函数中的其他任何内容.#include#defineN10main()(inti.j;intn;intbb[N]={11,21,31,41,51,61,71,79,81,95);printf(u

852lnputn

853H);scanf(n%dH,&n);printf(°

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

855******originallist*******

856H);for(i=0;i

857******newlist*******

858");for(i=0;i#include

859/********foun(j********/fun(intn)(inta=2,b—1,c,k;doubles=0.0;for(k=1;k<=n;k++)(s=s+1.0*a/b;/********found********/c=a;a+=b;b+=c;)returns;)main()(intn=5;printf(n

860Thevalueoffunctionis:%lf

861u,fun(n));}编程题假定输入的字符串中只包含字母和*号.请编写函数fun,它的功能是:删除字符串中所有的*号.在编写函数时,不得使用C语言提供的字符串函数.例如,若字符串听内容为****A*BC*DEF*G******,删除后,字符串中的内容则应当是ABCDEFG请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入不敷出所编写的若干语句.#include#include#includevoidfun(char*a))main()(chars[81];FILE*out;printf(*'Enterastring:

862H);gets(s);fun(s);printf("Thestringafterdeleted:

863n);puts(s);out=fopen(,,out.dat,,,MwH);strcpy(s”****a*BC*D*EF**G*******')fun(s);fprintf(out,H%sn,s);fclose(out);)第67套1.填空题请补充main函数,该函数的功能是:把一个二维字符数组每行字符川最大的字符拷贝到字符数组S中。例如,如果str[3]={"adefj","ehfkn","opwxres"},则s="jnx"。仅在横线上填入所编写的若干表达式或语句,勿改动函数中的其他任何内容。#includemain()(inti=0;

864char*str[3]={"adefj","ehfkn","opwxres"};char**p;chars[3];—1—;for(i=0;i<3;i++)(s[i]=*p[i];while(*p[i]){if(s[i]<*p[i])s[i]=*p[i];―2—;)}―3—;printf(unewstring

865H);puts(s);1.改错题下列给定程序中,函数fun的功能是:应用递归算法求某数a的平方根。求平方根的迭代公式如下:xl=—(x0+—)2x0例如,2的平方根值为1.414214请改正程序中的错误,使它能的出正确的结果.注意:不要改动main函数,不得增行或删行,也不得更改程序的结构.#include#include/********^^jund********/fun(doublea,doublexO)(doublexl,y;xl=(xO+a/x0)/2.0;/********fourid********/if(abs(xl-xO)>=le-6)y=fun(a,xl);elsey=xl;returny;)main()doublex;printf(nEnterx:”);scanf(M%lf;&x);printf("Thesquarerootof%lfis%lf

866",x,fun(x,1.0));)3.编程题学生的记录有学号和成绩组成,N名学生的数据已在主函数中放入结构提函数组s中,请编写函数fun,它的功能是:函数返回指定学号的学生数据,指定的学号在主函数中输出.若没找到指定学号,在结构提变量中给学号置空串,给成绩置〕作为函数值返回(用于字符串比较的函数是strcmp)o请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。#include

867#include#defineN16typedefstruct(charnum[10];ints;}STREC;STRECfun(STREC*a,char*b)}main()(STRECs[N]={{MGA005M,85},{MGA003M,76},{MGA002M,69),{HGA004M,85),{nGA00r;91},{nGA007H,72},{,,GA008M,64},{MGA006M,87},{“GA015”,85},{“GA013”,91}""GA012”,64},{”GA014”,91},{HGA0ir\77},{nGA017';64},{nGA018",64},{1,GA016,1,72}};STRECh;charm[10];inti;FILE*out;printf(*'Theoriginaldata:

868u);for(i=0;i

869H);printf(n%s%3d*',s[i].num,s[i].s);)printf(H

870

871Enterthenumber:*');gets(m);h=fun(s,m);printf(nThedata:'1);printf(*'

872%s%4d

873'\h.num,h.s);printf("Xn");out=fopen("out.dat","w");h=fun(s,MGA013");fprintf(out,n%s%4d

874M,h.num,h.s);fclose(out);题目答案:填空题:第1处:p=str第2处:p[i]++或++p[i]或p[i]+=l或p[i]=p[i]=p[i]+l第3处:s[i]='\O'或s[i]=O改错题:第1处:fun(doublea,doublexO)应改为doublefun(doublea,doublexO)第2处:if(abs(xl-x0)>=le-6)应改为if(fabs(x1-x0)>=1e-6)编程题:STRECfun(STREC*a,char*b)(inti;STRECh;For(i=0;i

875returnh;第68套一.填空题.请补充main。函数,该函数的功能是:从键盘输入若干字符放到一个字符数组中,当按回车键时结束输入,最后输出这个字符数组中的所有字符.仅在横线上填入所编写的若干表达式或语句,勿改动函数中的其他任何内容.#include#includemain()(inti=0;chars[81];char*p=s;printf(HInputastring

876H);for(i=0;i<80;i++)(s[i]=getchar();if(s[i]==An')—1—;)s[i]=2_;printf("displaythestring

877");while(*p)putchar(3);)二.改错题.下列给定程序中,函数fun的功能是:根据输入的三个边长(整型值),叛断能否构成三角形;构成的是等边三角形,还是等腰三角形.若能构成等边三角形函数返回3,若能构成等腰三角形函数返回2,若能构成三角形函数返回1,若不能构成三角形函数返回0.请改正函数fun中的错误,使它能得出正确的结果.注意:不要改动主main函数,不得增行或删行,也不得更改程序的结构!#includeintfun(inta,intb,intc)(if(a+b>c&&b+c>a&&a+c>b)(/*******ound********/if(a==b&&b==c)return1;elseif(a==bIIb==cIIa==c)return2;else/********found********/return3;}elsereturn0;)main()(inta,b,c,shape;printf(M

878Inputa,b,c:");scanf(',%d%d%dn,&a,&b,&c);printf(n

879a=%d,b=%d,c=%d

880H,a,b,c);shape=fun(a,b,c);printf("

881

882Theshiipe:%d

883”,sh即e);}‘

884三.编程题.请编写函数fun,其功能是:计算并输出下列多项式值:Sn=l+l/l!+l/2!+l/3!+l/4!+-l/n!例如,若主函数从犍盘给n输入15,则输出为S=2.718282.注意:n的值要求大于1但不大于100.请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句.#includedoublefun(intn)}main()(intn;doubles;FILE*out;printfC^Inputn:");scanf("%d”,&n);s=fun(n);printf(us=%f

885M,s);out=fopen("out.dat","w");for(n=10;n<15;n++)fprintf(out,n%f

886n,fiin(n));fclose(out);答案:填空题第一处填空:break第一处填空:'\0'或0第一处填空:*p++改错题第一处:return1;应改为return3;第一处:return3;应改为return1;编程题doublefun(intn)(doublet,sn=l.0;inti,j;for(i=l;i<=n;i++)(t=1.0;for(j=l;j<=i;j++)t*=j;sn+=1.0/t;)returnsn;第69题请补充main函数,该函数的功能是:从键盘输入两个字符串并人别保存在字符数组成strlt和str2中,用字符串str2替换字符串联strl前面的所有字符,注意:str2的长度不大于strl,否则需要重新输入.例如,如果输入不敷出str1=,,abced,,,str2=,,ggM,则输出ggced.仅在横线上填入所编写的若干表达式语句,勿改动函数的其它任何内容.#include

887#includemain(){charstrl[81],str2[81];char*pl=strl,*p2=str2;do(printf("Inputstrl

888n);gets(strl);printf("Inputstr2

889H);gets(str2);}while(strlen(strl)1strlen(str2));while(2)*pl++=*p2++;printf(HDisplaystrl

890n);puts(-3-);下列给定程序的功能是:读入一个英文文本行,将其中每个单词的第一个字母改成大写,然后输出此本行(这里的“单词”是反指由空格隔开的字符串).例如,若输入Iamastudenttotaketheexamination厕应输出AmAStudentToTakeTheExamination.请改正程序中的错误,使程序能得出正确的结果.注意;不要动main函数,不得增行或删行,也不得更改程序的结构#include#include#include/********foun(j********/voidupfst(charp)(intk=0;for(;*p;p++)if(k){if(*p=='')k=0;}else{if(*p!=**)(k=1;*p=toupper(*p);})}main()(charchrstr[81];printf("

891PleaseenteranEnglishtextline:");gets(chrstr);printf(H

892

893BeforechangingAn%sn,chrstr);upfst(chrstr);printfC^XnAfterchangingAn%s

894H,chrstr);请编写函数fun,它的功能是:求Fibonacci数列中大于t(t>3)的最小的一个数,结果由函数返回.其中Fibonacci数列F(n)的定义为:F(0)=0,F(1)=1F()=F(n-l)+F(n-2)假如:当t=1000时,函数值为1567.请勿改动主函数动main其它的函数中的任何内容,仅在函数fun

895花括号中填入所编写的若干语句.#include#include#includeintfun(intt)1main()(intn;FILE*out;n=1000;printf(,'n=%d,f=%d

896",n,fun(n));out=fopen("out.dat“,"w");for(n=500;n<3000;n+=500)fprintf(out,M%d

897H,fun(n));fclose(out);)一填空题:第1处填空:<第2处填空:*p2或p2⑼第3处填空:strl二改错题:第1处voidupfst(charp)改为voidupfst(char*p)三编程题intfun(intt)(inta=l,b=l,c=0,I;for(i=4;i<=t;i++)(if(c#include#defineMAXLINE20fun(char*pstr[6])(inti,j;char*p;for(i=0;i<5;i++)for(j=i+l;j<6;j++)

898if(strcmp(*(pstr+i),1)>0)(p=*(pstr+i);pstr[i]=2;*(pstr+j)=-3一;))main()(inti;char*pstr[6],str[6][MAXLINE];for(i=0;i<6;i++)pstr[i]=str[i];printf(H

899Enter6string(lstringateachline):

900M);for(i=0;i<6;i++)scanf(H%s",pstr(il);fun(pstr);printfC'Thestringsaftersorting:

901u);for(i=0;i<6;i++)printf(n%s

902M,pstr[ij);)第二题:下列给定程序中,函数fun功能是:从整数1到55之间,选出能被3整除、且有一位上的数是5的那些数,并把这些数放在b所指的数组中,这些数作为函数值返回。规定,函数中al放个位数,a2放十位数。请改正程序中的错误,使程序能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!#include/**************/intfun(int*b);(intk,a1,a2,i=0;/*******nd********/for(k=10;k<=55;k++)(a2=k/10;al=k-a2*10;if((k%3==0&&a2==5)II(k%3=0&&a1=5))(b[i]=k;i++;/********found********/returnk;)main()(inta[100],k,m;m=fun(a);printf(MTheresultis:

903");for(k=0;k

904n);}第三题:编写函数fun,它的功能是:计算并输出下列级数和:11s—11•…+n(n+1)1*22*3例如,当n=10时,函数值为0。909091.请勿改动主函数main和其他函数中的任何内容,仅在函数fun

905的花括号中填入所编写的若干语句。#include#includedoublefun(intn)main()inti;FILE*out;printf(H%f

906M,fun(10));out=fopen("out.dat","w");for(i=5;i<10;i++)fprintf(out,u%f

907n,fun(i));fclose(out);)答案:第一题:第一空:*(pstr+j)orpstr|jj第二空:pstr[j]or*(pstr+j)第三空:p第二题:第一处:intfun(int*b);应改为intfun(int*b)第二处:for(k=10;kv=55;k++)应改为for(k=l;k<55;k++)第三处:returnk;应改为returnI;第三题:doublefun(intn){doubles=0.0;inti;for(i=l;i<=n;i++)s=s+1.0/(i*(i+l));rerurns;)第7]套(填空题)给定程序中,函数fun的功能是:将行参指针所指结构体数组中的三个元素按num成员进行升序排列。请勿改动主函数main和其他函数中的任何内容,仅在横线上填入所编写的若干表达式或语句。#includetypedefstruct(intnum;charname[10];}PERSON;voidfun(PERSON_1_)(2temp;if(stdlOJ.num>std[l].num)(temp=std[O];std[O]=std[l];std[l]=temp;}if(std[0].num>std[2].num){temp=std[O];std[O]=std[2];std[2]=temp;)if(std[l].num>std[2].num)(temp=std[l];std[l]=std[2];std[2]=temp;))main()

908PERSONstd[]={5,,'Zhanghun,2,"WangLi“,6,"LinMin");inti;fun(_3_);printf(,'

909Theresultis:

910");for(i=0;i<3;i++)printf(,,%d,%s

911M,std[i].num,std[i].name);}(改错题)下列给定程序中,函数fun的功能是:求k!(k<13),所求阶乘的值作为函数值返回。例如:若k=10,则应输出3628800。请改正程序中的错误,使它能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!#include#includelongfun(intk)(/********found********/ifk>1return(k*fun(k-l));return1;)main()(intk=10;printf(',%d!=%ld

912,\k,fun(k));)(编程题)请编写函数fun,其功能是:将两个两位正整数a、b合并形成一个整数放在c中。合并的方式是:将a数的十位和各位树依次放在c树的十位和千位上,b树十位和各位树依次放在c树的白位和各位上。例如:当a=45,b=12,调用该函数后,c=5142.请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。#include#includevoidfun(inta,intb,long*c))main(){inta,b;longc;FILE*out;printf(HInputa,b:”);scanf(',%d%d,\&a,&b);fun(a,b,&c);printf(HTheresultis:%ld

913n,c);out=fopen(Mout.datn,nw");for(a=21;a<51;a+=3){fun(a,109-a,&c);fprintf(out,M%ld

914M,c);}fclose(out);参考答案:填空题

915第一处:std[3]或std[]或*std第二处:PERSON第三处:std改错题第一处:ifk>l改为:if(k>l)编程题c=(a%10)1000+(b/10)*100+(a/10)*10+b%10;第72套一、填空题请补充main函数,该函数的功能是:计算三个学各科的平均分。例如:当score=[N][M]={{78.5,84,83,65,63},{88,91.5,89,93,95},{72.5,65,56,75,77}}时,五科的平均分为:79.780.276.077.778.3.仅在横线上填入所编写的若干表达式或语句,勿改动函数中的其它任何内容。其源代码如下:#include#defineN3#defineM5main()(inti,j;staticfloatscore[N][M]=({78.5,84,83,65,63},{88,91.5,89,93,95},{72.5,65,56,75,77});staticfloatbb[N];for(i=0;i

916subject%d\taverage=%5.1f\i+1,3);return0;1二、改错题下列给定程序函数fun的功能是:统计子字符串substr在字符串str中出现的次数。例如,若字符串aaasIkaaas,子字符串为as,则应输出2。请改正程序中的错误,使它能得出正确的结果。注意:不要改动main函数,不得增行或删除行,也不得更改程序的结构。源程序如下:#include/********found********/intfun(char*str,*substr){inti,j,k,num=0;/********found********/for(i=0,str[i],i++)for(j=i,k=0;substr[k]==str[j];k++,j++)if(substr[k+l]==W)(num++;break;

917}returnnum;}main()(charstr[80],substr[80];printf(uInputastring:'1);gets(str);printf(uInputasubstring:");gets(substr);printf(',%d

918,',fun(str,substr));)三、编程题请编写函数fun,其功能是:将s所指字符串中下标为偶数的字符删除,串中剩余字符形成的新串放在t所指数组中。例如,当s所指字符串中的内容为ABCDEFGH1JK,则在t所指数组中的内容应是:BDFHJo请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。源代码如下:#include#include#includevoidfun(char*s,chart[]))main()(chars[100],t[100],Msg[]=H

919PleaseenterstringS:M;FILE*out;printf(Msg);scanf(H%sn,s);fun(s,t);printf(n

920Theresultis:%s

921M,t);out=fopen("out.dat","wn);fun(Msg,t);fprintf(out,n%s",t);fclose(out);1第73套填空题:请补充函数,该函数的功能是:输出一个N*N

922矩阵,要求非对对角线上的元素赋值0,对角线元素赋值1。仅在横线上填入所编写的若干表达式或语句,勿改动函数中的内容。#include#defineN10main()(intbb[NJ[N];inti,j,n;printf(M

923lnputn:

924M);scanf(n%dM,&n);for(i=0;i

925*****theresult*******

926“);for(i=0;i

927

928H);for(j=0;jvn;j++)printf(H%4dM,bb[i][j]);})改错题:下列给定程序中,fun函数的功能是:传入一个整数m,计算如下公式的值。例如,若输入5,则应输入-0.283333。请改正函数fun中的错误或在横线处填上适当的内容并把横线删除,使它能计算出正确的结果。注意:不要改动main函数,不得增行或减行,也不得更改程序的结构。#include#includedoublefun(intm)(doublet=1.0;inti;/********found********/for(i=2;i<=m;i++)t=1.0-1/i;/********found********/一填空一)main(){intm;printf(u

929Pleaseenter1integernumbers:

930n);scanf(M%d",&m);printf("

931

932Theresultis%lf

933H,fun(m));)编程题:假定输入的字符串中只包含字母和*号。请编写函数,它的功能是:除了字符串前导和尾部的*号之外,将串中其他*号全部删除。形参已指向字符串中第一个字母,形参已指向字符串中最后一个字母。在编写函数时,不得使用C语言提供的字符串函数。例如,若字符串中的内容为****A*BC*DEF*G********,删除后,字符串中的内容则应当是****ABCDEFG********。在编写函数时,不得使用C语言提供的字符串函数。请勿改动主函数和其他函数中的内容,仅在函数的花括号中填入所编写的若干语句。#include#include#include

934voidfun(char*a,char*h,char*p)main(){chars[81],*t,*f;FILE*out;printf(uEnterastring:

935H);gets(s);t=f=s;while(*t)t++;t-;while(九=='*')t-;while(*f==,**)f++;fun(s,f,t);printf(uThestringafterdeleted:

936M);puts(s);out=fopen("out.dat","w");strcpy(s"****DEF*^3********")•fun(s,s+4,s+13);fprintf(out,w%sH,s);fclose(out);}答案:填空题:bb[i][j]=O1j==n-l-i或j==n-i・l改错题:或t=t・LO/ireturnt;编程题:voidfun(char*a,char*h,char*p)inti=0:char*q=a;while(q

937第74套一、填空题给定程序中,函数fun的功能是:将形参std所指结构体数组中年龄最大者的数据作为函数值返回,并在main函数中输出。请勿改动主函数main和其它函数中的任何内容,仅在fun函数的横线上填入所编写的若干表达式或语句。#includetypedefstruct{charname[10];intage;)STD;STDfun(STDstd[J,intn)(STDmax;inti;max=1;for(i=l;i

938Theresult:

939M);printf(n

940Name:%s,Age:%d

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

942aa[j+l]=ch;})main()(chara[N]二"QWERTYUIOPASDFGHJKLMNBVCXZ”;printf(HTheoriginalstring:%s

943",a);insert(a);printf(uThestringaftersorting:%s

944

945M,a);)三、编程题学生的记录由学生成绩组成,N名学生的数据已在主函数中放入结构体数组s中,请编写函数fun,它的功能是:把分数最低的学生数据放在h所指的数组中,注意:分数最低的学生可能不止一个,函数返回分数最低的学生的人数。请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。#include#defineN16typedefstruct(charnum[10J;ints;)STREC;intfun(STREC*a,STREC*b)main()STRECs[N]={{”GA05”,85},{“GA03”,76},{“GA02”,69},{“GA04”,85},{“GA01”,91},{“GA07”,72},{“GA08”,64},{“GA06”,87},{“GA015”,85},{“GA013”,91},{“GA012”,64},{“GA014”,91},{nGA011H,91},{MGA017H,64},{nGA018n,64},{nGA016H,72});STRECh[N];inti,n;FILE*out;n=fun(s,h);printf("The%dlowestscore:

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

947';h[i].num,h[i].s);printf(M

948M);out=fopen("out.dat1',"w");fprintf(out,"%d

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

950M,h[i].s);fclose(out);}第75套填空题请补充main函数,该函数的功能是:求1=2!+3!+…+N!的和。例如,1+2!+3!+…+5!的和为153。仅在横线上所编写的若干表达式或语句,勿3改动函数中的其他任何内容。

951#includemain(){inti,n;longs=0,t=1;printf(H

952Inputn:

953u);scanf("%d”,―1_);for(i=l;i<=n;i++)(t=2;s=3;)printf(Hl!+2!+3!...+%d!=%ld

954n,n,s);}改错题下列给定程序中函数fun的功能是:输出M行M列正方阵,然后求两条对角线上各元素之和,返回此和数。请改正程序的错误,使它S能得出正确的结果。注意;不要改动main函数,不得增行或删行,也不得更改程序的结构!#include#include#defineM5/********foun(j********/intfun(intm,intxx[][])(inti,j,sum=0;printf("

955The%dx%dmatrix:

956",M,M);for(i=0;i

957H);)for(i=0;i

958Thesumofallelementson2diagnalis%d.",fun(M,aa));编程题请编写函数fun,该函数的功能是:将M行N列的二维数组中的数据,按列的顺序依次放到一维数组中。一维数组中的个数存放在形参n所指的存储单元中。例如,若二维数组中的数据为:333333334444444455555555则一维数组中的内容应是:334455334455334455334455请勿改动主函数main和其他函数中的任何内容,仅在函数fun

959的花括号中填入所的若干语句。#includevoidfun(int(*s)[10],int*b,int*n,intmm,intnn)main()(intw[10][10]={{33,33,33,33),{44,44,44,44}t(55,55,55,55}},i,j;inta[1001={0},n=0;FILE*out;printf("Thematrix:®");for(i=0;i<3;i++){for(j=0;j<4;j++)printfC%3d”,w[i][j]);printi("

960");)fun(w,a,&n,3,4);out=fopen("out.dat“,"w");printf(nTheAarray:

961M);for(i=0;i

962",a[i]);}printf("

963

964");fclose(out);}

965答案:填空题第一处空:&n第二处空:t*i或i*t第三处空:s+t改错题第一处:intfun(intm,intxx口口)应改为intfun(intm,intxx[][M])第二处:printf("%4d',xx[i][jD;应改为printf(4%4d,,,xx[i][j]);编程题voidfun(int(*s)[10],int*b,int*n,intmm,intnn)(intI,j;for(j=0;j#defineN80voidfun(chars[],intn)(inti,j;charch;for(i=0;i

966Inputastring:

967u);gets(str);while(str[i]!=AO'){strlen++;i++;)fun(str,strlen);printf("

968*********displaystring*********

969H);

970puts(str);)第二题:下列给定程序中函数fun的功能是:将长整数中每一位上为偶数的数依次取出,构成一个新数在t中。高位仍在高位,低位仍在低位。例如,当s中的数为87653142时,t中的数为8462o请改正程序中的错误,使它能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结果。#include#includevoidfun(longs,long*t)(/*******nd********/intd;longsi=0;*t=0;while(s>0){d=s%10;if(d%2=0){*t=d*sl+*t;si*=10;)/********found********/s\=10;})main()(longs,t;printf(n

971Pleaseenters:n);scanfC^ld",&s);fun(s,&t);printf(nTheresultis:%ld

972u,t);}第三题:请编写函数fun,其功能是:计算并输出当x<0.97时下列多式的值,直到|S«-5n-l|<0.00001为止。,“0.5(0.5-1)20.5(0.5-1)(0.5-2)30.5(0.5-1)(0.5-2)...(0.5-n+l)„c=1+0.5xdyYHYkjn3]«/V«/V例如,若主函数从键盘给x输入0.21后,则输出为s=1.100000.请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。#include#includedoublefun(doublex)main()(inti;doublex,s;FILE*out;printf("Inputx:");scanf(n%lf\&x);s=fun(x);printf(,'s=%f

973",s);out=fopen(nout.datH,Hwn);for(i=20;i<30;i++)fprintf(out,n%f

974'\fun(i/100.0));fclose(out);}答案:第一题:第1空应填:i第2空应填:s[j]=s[i]

975第二题:第1处应改为:longsl=l;第2处应改为:s/=10;第三题:doublefun(doublex)(doublesl=l.0,p=1.0,sum=0.0,s0,t=1.0;intn=l;do(sO=sl;sum+=s0;t*=n;p*=(0.5-n+l)*x;sl=p/t;n++;)while(fabs(sl-s0)>=le-6);returnsum;第77套题第一题请补充main函数,该函数的功能是:如果数组aa的前一个元素比后一个元素小,则把它保存在数组bb中并输出.例如,输入45,55,62,42,35,52,78,95,66,73则结果输出455535527866.仅在'横线上填入所编写的若干表达式或语句,勿改动函数中的其他任何内容.#include#defineN10main()(inti,n=0;intaa[N]={45,55,62,42,35,52,78,95,66,73);intbb[NJ;for(i=0;i<_1—;i++)if(aa[i]

976"),for(i=0;i/********3und********/voidfun(chara)(if(*a)(fun(a+l);printf("%c",*a);))main()

977(chars[10]="abed";printf("处理前字符串二%s

978处理后字符串s);fun(s);printf(H

979M);}第三题请编写函数fun,其功能是:将两个两位数的正整数a、b合并形成一个整数放在c中。合并的方式是:将a数的十位和个位数依次放在c数的个位和百位上,b数的十位和个位数依次放在c数的十位和千位上。例如,当a=45,b=12,调用该函数后,c=2514请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。#include#includevoidfun(inta,intb,long*c)}main()(inta,b;longc;FILE*out;printfClnputa,b:n);scanf(n%d%dn,&a,&b);fun(a,b,&c);printf(uTheresultis:%ld

980'\c);out=fopen("out.dat“,“w");for(a=22;a<52;a+=3)fun(a,109-a,&c);fprintf(out,n%ld

981n,c);fclose(out);答案第1题1:N-l2:BB[n++]=aa[i]3:i,bb[i]第2题1:voidfun(chara)应改为voidfun(char*a)第3题voidfun(inta,intbJong*c)(*c=(b%10)l000+(a%10)*100+(b/10)*10+a/10;第78套题第一题请补充fun函数,该函数的功能是:把字符的ASCII码为偶数的字符从字符串str中删除,结果仍然保存在字符串str中.字符串str从键盘输入,其长度作为参数传入fun函数.例如,输入:“abcde「,输出:“ace”.

982请勿改动主函数main和其他函数中的任何内容,仅在fun函数的横线上填入所编写的若干•表达式或语句.#include#defineN80void1(inti,j;―2—;for(i=0;i

983lnputastring:

984M);gets(str);while(strli]!=、0')(strlen++;i++;)fun(str,strlen);printf(M

985*********displaystring*********

986");puts(str);}第2题下列给定程序中函数fun的功能;判断一个整数m是否是素数,若是返回1,否则返回0.在main。函数中,若fun返回1则输出YES,若fun返回0则输出NO!.请改正程序中的错误,使它能得出正确的结果.注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!#include#includeintfun(intm){intk=2;while(k<=m&&(m%k))/********found********/k++/*******nd********/if(m=k)return1;elsereturn0;}main()(intn;printf(u

987Pleaseentern:M);scanf(n%d",&n);if(fun(n))printf(HYES

988M);elseprintf(MNO!

989H);}第3题请编写函数fun,其功能是:将s所指字符串中的ASCII值为偶数的字符删除,串中剩余字符形成一个新串放在t所指的数组中.例如,若s所指字符串的内容为ABCDEFG12345淇中字符B的ASCII码为偶数字符2的ASCH码值为偶数、…都应当删除,其他依此类推.最后t所指的数组

990中的内容应是ACEG135.请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句.#include#include#includevoidfun(char*s,chart[])(inti,j=O,n=strlen(s);for(i=0;i<=n;i++)if(s[i]%2!=0)(j++;)t[j]='\O';)main(){chars[100],t[100],Msg[]=M

991PleaseenterstringS:M;FILE*out;printf(Msg);scanf(n%sn,s);fun(s,t);

992printf(u

993Theresultis:%s

994H,t);out=fopen("out.dat","w");fun(Msg,t);fprintf(out,t);fclose(out);}答案:第一题:第1空应填:fun(chars[],intn)或fun(char*s,intn)第2空应填:j=0第2空应填:s|j]=\(y或s[j]=O第二题:第1处应改为:k++;第2处应改为:if(m==k);第三题:inti,j=O,n=strlen(s);for(i=0;i<=n;i++)if(s[i]%2!=0)Ij++;)t[j]='\O';第79套第一题请输入fun函数,该函数的功能是把数组aa中的偶数元素按原来的先后顺序放在原数组后面。例如,输入“45,55,62,42,35,52,78,95,66,73”,则结果输出“45,55,35,95,73,62,42,52,78,66”。请勿改动主函数main和其他函数中的任何内容,仅在fun函数的横线上填入所写的若干表达式或语句。#include#defineN10voidfun(intaa[])inti,j=0,k=0;intbb[N];for(i=0;i

995********nevvlist***********

996'')・for(i=0;i

997车符)。输入字符串时用结束输入。请该正程序中的错误,使它能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得改动程序的结构!#include#include#includevoidfun(char*p)(inti,t;charc[80];for(i=0,t=0;p[i];i++)if(!isspace(*(p+i)))Clt++]=p[i];/********found********/c[t]="\0”;strcpy(p,c);)main(){charc,s[80];inti=0;printf(uInputastring:");c=getchar();while(c!=*#'){s[i]=c;i++;c=getchar();}s[i]=MT;fun(s);puts(s);)第三题已知学生的记录有学号和学习成绩构成,N名学生的数据已存入a结构体数组中。请编写函数fun,该函数的功能是:找出成绩最低的学生记录,通过形参返回主函数(规定只有一个最低分)。已给出函数的首部,请完成该函数。请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。#include#include#include#defineN10typedefstructss(charnum[10];ints;}STU;voidfun(STUa[],STU*s)1main()(STUa[N]={{"AOl';81},{"A02",89},{*'A03n,66},{*'A04';87},{"A05",77),{HA06H,90},{MA07M,79},{0A08M,61},{HA09,,,80},{MA10',,71}},m;inti;FILE*out;printf(n****Theoriginaldata*****

998");for(i=0;i

999",a[i].num,a[i].s);fun(a,&m);printf(H*****THERESULT*****

1000M);printf(HThelowest:%s,%d

1001",m.num,m.s);

1002out=fopen("out.dat","w");fprintf(out,n%s

1003%dH,m.num,m.s);fclose(out);}答案第一题第1处填空:aa[i]%2==0或0==aa[i]%2或aa[i]%2第2处填空:ivk或k>i第二题第1处:应改为c[t]=,\O,;第三题voidfun(STUa[],STU*s)(inti,min;min=a[0].s;for(i=0;i#defineN10main()(inti,j,t;intbb[N];for(i=0;i

1004******originallist*******

1005M);for(i=0;i

1006******newlist*******

1007n);for(i=0;i#include/********砧und********/fun(intn)(inta,b,c,k;doubles;s=0.0;

1008a=2;b=1;for(k=l;k<=n;k++)(/********found********/s=s4-(Double)a/b;c=a;a=a+b;b=c;}returns;)main()(intn=5;printf("

1009Thevalueoffunctionis:%lf

1010M,fun(n));)程序定义了NxN的二维数组,并在主函数中自动赋值。请编写函数fun(inta[][N],intn),该函数的功能是:使数组左下半三角元素中的值乘以n。例如:若n的值为3,a数组中的值为197a=238456则返回主程序后a数组中值应为397298121518请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写若干语句。#include#include#include#defineN5voidfun(inta[][N],intn))main()(inta[N][N],n,i,j;FILE*out;printf(M*****Thearray*****

1011M);for(i=0;i

1012",n);fun(a,n);printf(H*****THERESULT*****

1013M);for(i=0;i

1014n);}out=fopen(Mout.datK,nwM);

1015for(i=0;i

1016H);)fclose(out);)答案:一、1、--i或i—或i-=l或i=i-l2、bb|jj=bb[i]

1017二、1、fun(intn)应改为doublefun(intn)2、s=s+(Double)a/b;应改为s=s+(double)a/b;三、fun(inta[][N],intn)(inti,j,;for(i=0;i#defineN4fun(intt[][N],intn)(inti,sum;一1一;for(i=0;i

1018Theoriginaldata:

1019");for(i=0;i

1020n);)printf(nTheresultis:%d",fun(t,N));)第二题:下列给定程序中,A1=1,函数fun的功能是:根据整型参n,计算如下公式的值。.・.a-1+A,''"-1+A-例如,若n=10,则应输出0.617978。请改正程序中的错误,使它能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不要更改程序的结构!#include#include/********found********/fun(intn)(doubleA=1;inti;/********found********/for(i=2;i

1021Pleaseentern:");scanf("%d”,&n);printf("A%d=%lf

1022",n,fun(n));

1023)第三题:请编写函数fun,其功能是:将两个两位数的正整数a、b合并形成一个整数在c中。合并的方式是:将a数的十位和个位依次放在c数的百位和个位上,b数的十位和个位数依次放c数的千位和十位上。例如,当a=45,b=12,调用该函数后,c=1425。请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。#include#includevoidfun(inta,intb,long*c)()main()(inta,b;longc;FILE*out;printf("Inputa,b:n);scanf(,,%d%dH,&a,&b);fun(a,b,&c);printf("Theresultis:%ld

1024M,c);out=fopen("out.dat",nw");for(a=0;a<10;a++){fun(a+28,a+82,&c);fprintf(out,n%ld

1025H,c);}fclose(out);}第一题答案:第1处填空:sum=0;第2处填空:第3处填空:1第二题答案:第1处:fun(intn)应改为doublefun(intn)第2处:for(i=2;imain()(inti,g;for(i=l;i<1000;i++)(g=__1__;if(—2—)printf("%4d",i);第二题:下列给定程序中,函数fun的功能是:计算整数n的阶乘。请改正程序中的错误或在横线上填上适当的内容并把横线删除,使它能计算出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结果。#includedoublefun(intn)(doubleresult=1.0;

1026/********found********/while(n>l&&n<170)result*=—n;/*******nd********/一填空一)main()(intn;printf(nEnteraninteger:");scanf("%d",&n);printf("

1027

1028%d!=%lg

1029

1030",n,fun(n));)第三题:请编写一个函数fun,它的功能是:计算n门课程的平均数,计算结果作为函数值返回。例如:若有5门课程的成绩是:90.5,72,80,61.5,55,则函数的值为71.80.请勿改动主函数main和其他函数中哦的任何内容,仅在函数fun的花括号填入所编写的若干语句。#includefloatfun(float*a,intn))main()floatscore[30]={90.5,72,80,61.5,55),aver;FILE*out;aver=fun(score,5);printf("

1031Averagescoreis:%5.2f

1032",aver);out=fopen("out.dat","w");fprintf(out,H%5.2f\aver);fclose(out);}答案第一题第一处:i%10第二处:g*g*g==i或i==g*g*g第二题第•处:result*=・・n;应该为result*=n—;第二处:应填result第三题floatfun(float*a,intn)(floatave=0.0;inti;for(i=0;i#defineN80main()inti=0;

1033charstr[N];charch;printf("

1034Inputastring:

1035n);gets(str);printf(M

1036Inputacharater:

1037u);scanf(u%cM,&ch);while(str[i]!=AO*)str[i]=—3—;printf("

1038*********displaystring*********

1039M);puts(str);)第二题:下列给定程序中,函数fun的功能是:交换主函数中两个变量的值。例如:若变量a中的值原为8,b中的值为3,则程序远行后a中的值为3,b中的值为8。请改正程序中的错误,使它能得出正确的结果。注意,不要改动main函数,不得增行或删行,也不得更改程序的结构!#include/********found********/voidfun(intx,inty)intt;/********fV)und********/t=x;x=y;y=t;)main()(inta,b;a=8;b=3;fun(&a,&b);printf(n%d,%d

1040",a,b);)第三题:假定输入的字符串中只包含字母和*号。请编写函数fun,它的功能是:将字符串尾部的*号全部删除,前面和中间的*号不删除。例如,若字符串中的内容为****A*BC*DEF*G*******,删除后,字符串中的内容则应当是****A*BC**DEF*G。在编写函数时,不得使用C语言提供的字符串函数。请勿改动主函数main和其他函数中哦的任何内容,仅在函数fun的花括号填入所编写的若干语句。#include#include#includevoidfun(char*a))main()(chars[81];FILE*out;printfV'Enterastring:

1041n);gets(s);fun(s);printf(nThestringafterdeleted:

1042u);puts(s);out=fopen("out.dat","w");strcpy(s”****a*BC*DE*F*G*********)fun(s);fprintf(out,H%sM,s);

1043fclose(out);答案第一题:第1处:break;第2处i++或++i或i+=l或i=i+l第3处或0第二题:第1处voidfun(intx,inty)应改为voidfun(int*x,int*y)第2处t=x;x=y;y=t;应改为t=*x;*x=*y;*y=t;第三题:voidfun(char*a)inti=0;char*p,*q;p=q=a;while(*p)p++;P-;while(*p='*')p・・;while(q<=p){a[i]=*q;i++;q++;Ia[i]=,\O,;}第84套试题一、填空题请补充main函数的功能是:输出方程组A+B=5,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—1—i+2*j==60)printf(MA=%2d,B=%2dH,—2一);)第1处填空:&&第2处填空:i,j二、改错题下列给定程序中,函数fun的功能是:将十进制正整数转换成k(2<=k<=9)进制数,并按位输入出.例如,若输入8和2,则应输出1000(即十进制数8转换成二制成二进制表示是1(X)0).请改正fun函数中的错误,使它能得出正确的结果.注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!#include#include/不*******f^^und********/voidfun(intm,intk);(intaa[20],i;for(i=0;m;i++){/********found********/

1044aa[i]=m/k;m/=k;}for(;i;i-)/********found********/printf("%d",aa[i]);)main()intb,n;printfC'XnPleaseenteranumberandabase:

1045M);scanf(',%d%dH,&n,&b);fun(n,b);printf(n

1046n);}第1处:voidfun(intm,intk):应改为voidfun(intm,intk)第2处:aa[i]=m/k;应改为aa[ijm%k;第3处:printf(“%d”,aa[i]);应&为printf("%d”,aa[i・l]);三、编程题请编写函数fun,其功能是:将两个两面三刀位数的正整数a、b合并形成一个整数放在c中.合并的方式是:将a数的十位和个位数依次放在c数的个位和十位上.例如,当a=45,b=12,调用该函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句.#include#includevoidfun(inta,intb,long*c)main()(inta,b;longc;FILE*out;printf(uInputa,b:”);scanf(',%d%d,\&a,&b);fun(a,b,&c);printf(HTheresultis:%ld

1047n,c);out=fopen("out.dat","w");for(a=0;a<10;a++)(fun(a+77,a+66,&c);fprintf(oul,"%ld

1048\c);)fclose(out);)voidfun(inta,intbjong*c)(c=(b/l0)1000+(a%10)*100+(b%10)*10+a/10;}第85套试题一填空题给定程序中,函数fun的功能是:有N*N矩阵.以主对角线为对称线,对称元素相加并将结果存放在左下三角元素中,右上三角元素置为0.例如,若N=3,有下列矩阵:123456789计算结果为:100

104965010149请勿改动主函数main和其它函数中的任何内容,仅在fun函数的横线上填入所编写的若干表达式或语句.#include#defineN4voidfun(int(*t)1)(inti,j;for(i=l;i

1050Theoriginalarray:

1051H);for(i=0;i

1052");)fund);printf("

1053Theresultis:

1054");for(i=0;i

1055");))答案:第一处:[N]第一处:t[i皿第三处:二.改错题下列给定程序中,函数fun的功能是:从字符串s中删除所有小写字母请改正程序中的错误,使它能计算出正确的结果.注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!#includevoidfun(char*s)(inti,j;for(i=j=0;sliJJ^O';i++)/********nd********/if(s[i]!=V)s[j]=s[i];/********found********/s[i]=MT;main()(chars[80];printf(uEnterastring:");gets(s);printf(nTheoriginalstringputs(s);fun(s);printf(nThestringafterdeleted:'*);puts(s);printf(H

1056

1057M);)答案:l:s[j]=s[i];改为s[j++]=s[i];2:s[i]='\0';改为s[j]=7O,;三.编程题N名学生的成绩已在主函数中放入一个带头节点的链表结构中,h指向链表的头节点.请编写函数fun,它的功能是:求出平均分,由函数值返回.例如,若学生的成绩是85,69,85,91,64,87;则平均分应当是78.625.请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句.#include#include#defineN8

1058structslist(doubles;structslist*next;};typedefstructslistSTREC;doublefun(STREC*h))STREC*creat(double*s)(STREC*h,*p,*q;inti=0;h=p=(STREC*)malloc(sizeof(STREC));p->s=0;while(is=s[i];i++;p->next=q;p=q;}p->next=0;returnh;outlist(STREC*h)(STREC*p;p=h->next;printf(nhead");do(printf);p=p->next;}while(p!=0);printf("

1059

1060");)main()(doubles[N]={85,76,69,85,91,72,64,87},ave;STREC*h;FILE*out;h=creat(s);outlist(h);ave=fun(h);printf(uave=%6.3f

1061H,ave);out=fopen("out.daf',nwn);fprintf(out,"%6.3f",ave);fclose(out);)答案:doublefun(STREC*h)(doubleaver=0.0;while(h!=null)(aver+=h->s;h=h->next;)aver/=N;returnaver;

1062)第86套试题第题:给定程序中,函数fun的功能是:将N*N矩阵中元素的值按列右移1个位置,右边被移出矩阵的元素挠回左边。例如,N=3,有下列矩阵:123456789计算结果为:312645987请勿改动主函数main和其他函数任何内容,仅在横线上填入所编写的若干表达式或语句。#include#defineN4voidfun(int(*t)[N])inti,j,x;for(i=0;i<1;i++)(x=t[i][—2_];for(j=N-l;j>0;j-)t[i]U]=t[i]U-U;t[i][一3—J=x;))main()(inti,j,t[][N]={21,12,13,24,25,16,47,38,29,11,32,54,42,21,33,10);printf("Theoriginalarray:

1063");for(i=0;i

1064");)fun(t);printf("

1065Theresultis:

1066");for(i=0;i

1067");))第二题:下列给定程序中,函数fun的功能是:把主函数中输入的3个数,最大的放在a中,最小的放在C中。例如,输入的数位:551234,输出结果应当是:a=55.0,b=34.0,c=12.0o请改正程序中的错误,使它能得出正确的结果。注意,不要改动main函数,不得增行或删行,也不得更改程序的结构!#includevoidfun(float*p,float*q,float*s)(/********Cund********/

1068float*k;if(*p<*q)(*=*p;*p=*q;*q=k;}/********found********/if(*s<*p)(k*s.*s=*p;*P=k;if(*q<*s)(k=*q;*q=*s;*s=k;)main()(floata,b,c;printf("Inputabc:n);scanf(,,%f%f%f',&a,&b,&c);printf(Ha=%4.1f,b=%4.1f,c=%4.1f

1069

1070n,a,b,c);fun(&a,&b,&c);printf(na=%4.1f,b=%4.1f,c=%4.1f

1071

1072\a,b,c);)第三题:请编写函数fun,其功能是:计算并输出给定10个数的方差:其中Iii>''市中其中例如,给定的10个数为95.0、89.0、72.0、85.0、81.0,90.0、56.0,则输出为S=11.730729。请勿改动主函数main和其他函数中哦的任何内容,仅在函数fun的花括号填入所编写的若干语句。#include#includedoublefun(doublex[10])main()(doubles,x[10]=(95.0,89.0,76.0,65.0,88.0,72.0,85.0,81.0,90.0,56.0};inti;FILE*out;printf("

1073Theoriginaldatais:

1074H);for(i=0;i<10;i++)printf(H%6.ir,x[i]);printf(”

1075

1076");s=fun(x);printf(,'s=%f

1077

1078',,s);out=fopen("out.dat“,"w”);fprintf(out,n%f\s);

1079fclose(out);)答案:第一题第一处N第二处N-l第三处0第二题第一处float*k;应改为floatk;第二处if(*sv*p)应改为if(*s>*p)第三处第三题doublefun(doublex[10])(intij;doubles=0.0,s1=0.0;for(i=0;i<10;i++)sl+=x[i];sl/=10;for(j=0;j<10;j++)s+=(x|j]-sl)*(x[j]-sl);s/=10;s=pow(s,0.5);returns;第87套试题一、请补充main函数,该函数的功能是:打印出满足个位上的数字、十位上的数字和百位上的数字都相等的所有三位数。本题的结果为:111222333444555666777888999。仅在横线上填入所编写的若干表达式或语句,勿改动函数中的其他任何内容。#includemain(){intg,s,b;for(g=l;g<10;g++)for(s=l;s<10;s-H-)for(b=l;b<10;b++)if(g==s_1—s==b)printf(n%5d';―2—s*10+b*100);}二、下列给定程序中,函数fun的功能是:给一维数组a输入任意4个整数,并按如下的规律输出。例如输入1、2、3、4,程序运行后将输出以下方阵:4123341223411234请改正函数fun中的错误,使它能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!#include#defineM4/*******nd********/voidfun(inta)|inti,j,k,m;

1080printf(nEnter4number:");for(i=0;i

1081

1082Theresult:

1083

1084H);for(i=M;i>0;i—)k=a[M-l];/********found********/for(j=M-l;j>0;j-)a|j]=a|j+l];a[0]=k;for(m=0;m

1085n);}}main()(inta[M];fun(a);printf(',

1086

1087n);)三、请编写函数fun,其功能是:将两个丙位数的正整数a\b合并形成一个整数放在c中。合并的方式是:将a数的十位和个位数依次放在c数的千位和个位上,b数的十位和个位数依次放在c数的个位和百位上。例如,当a=45,b=12,调用该函数后,c=4251。请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。#include#includevoidfun(inta,intb,long*c))main()(inta,b;longc;FILE*out;printf("Inputa,b:M);scanf(,'%d%dH,&a,&b);fun(a,b,&c);printf("Theresultis:%ld

1088';c);out=fopen("out.dat",W);for(a=0;a<10;a++){fun(a+44,a+55,&c);fprintf(out,,,%ld

1089,',c);)fclose(out);}答案:-s1、&&2、g+二:k应改为:voidfun(inta[M])2、应改为:a|j]=a|j-l];第88套试题一、补充fun函数,该函数的功能是:返回字符数组中指定字符的个数,指定字符从键盘输入。

1090请勿改动主函数main和其他函数中的任何内容,仅在fun函数的横线上填入所编写的若干#include#defineN80intfun(chars[],charch)inti=0,n=0;while(1)(if(—2—)n++;i++;)―3_;}main(){intn;charstr[N],ch;printf(n

1091lnputastring:

1092u);gets(str);printf(n

1093lnputacharacter:

1094n);scanf(n%cn,&ch);n=fun(str,ch);printf(n

1095numberof%c:%d",ch,n);}表达式或语句。下列给定程序中,函数fun的功能是:从3个红球,5个白球,6个黑球中任意取出8个作为一组,进行输出,在每组中,可以没有黑球,但必须要有红球和白球,组合数作为函数值返回,正确的组合应该是15。程序中的值代表红球数,j的值代表白球数,k的值代表黑球数。请改正正函数fun中的错误,使它能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不等更改程序的结构!#includeintfun()(inti,j,k,sum=0;printf("

1096Theresult:

1097

1098");/********found********/for(i=0;i<=3;i++)for(j=l;j<=5;j++)(k=8-i-j;/********found********/if(k>=l&&k<=6)(sum=sum+1;printf(Mred:%4dwhite:%4dblack:%4d

1099M,i,j,k);returnsum;)main()(intsum;sum=fun();printf(',sum=%4d

1100

1101",sum);}二、假定输入的字符中只包含字母和*号。请编写函数fun,它的功能是:除了字符串前导的*号之外,将串中其他*号全部删除,。在编写函数时,不得使用c语言提供的字符串函数。例如,若字符串中的内容为****A*BC*DEF*G*******,删除后,字符串中的内容则应当是****ABCDEFG。请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。

1102#include#include#includevoidfun(char*a)main(){chars[81];FILE*out;printf(uEnterastring:

1103H);gets(s);fun(s);printf(uThestringafterdeleted:

1104H);puts(s);out=fopen("out.dat“,"w");strcpy(s,,,****a*BC*DEF*G*******h);fun(s);fprintf(out,*'%s",s);fclose(out);1答案:一:1、s[i]或s[i]!=02、s[i]=ch或ch==s[i]3、returnn二:1、应改为for(i=l;iv=3;i++)2、应改为if(k>=0&&kv=6)第89套试题一、从键盘输入一组小写字母,保存在字符数组str中,请补充fun函数,该函数的功能是:把字符数组str中字符下标为奇数的小写字母转换成对应的大写字母,结果仍保存在原数组中。例如,输入:“abcdefg",输出:"aBcDeFg请勿改动主函数main和其他函数中的任何内容,仅在fun函数的横线上填入所编写的若干表达式或语句。#include#defineN80voidfun(chars[]){inti=0;while(1)(if(i%2!=0)s[i]-=—2—;_3—;main()charstr[NJ;printf(n

1105Inputastring:

1106");gets(str);puts(str);fun(str);prjnvf("

1107********newstrin。********^ji")・puts(str);}二、下列给定程序中,函数fun的功能是:求整数x的y次方的低3位值。例如,整数5的6次方为15625,

1108此数的低3位值为625o请改正函数中的错误,使它能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!#includelongfun(intx,inty,long*p)(inti;longt=1;/********found********/for(i=l;i

1109lnputxandy:");scanf(n%ld%ld",&x,&y);t=fun(x,y,&r);printf(n

1110

1111x=%d,y=%d,r=%ld,last=%ld

1112

1113M,x,y,r,t);}三、学生的记录由学号和成绩组成,N名学生的数据已在主函数中放入结构体数组s中,请编写函数fun,它的功能是:把高于等于平均分的学生数据放在b所指的数组总,高于等于平均分的学生人数通过形参n传回,平均分通过函数值返回。请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。#include#defineN12typedefstruct(charnum[10];doubles;JSTREC;doublefun(STREC*a,STREC*b,int*n)main()(STRECs[N]={{MGA05M,85},{HGA03M,76},{,,GA02,1,69}»{“GA04”,85},{MGA0r;91},{MGA07M,72},{“GA08164},{nGA06n,87),{“GA09”,60},{“GA11”,79},{“GA12”,73},{“GA10”,90}};STRECh[N],t;FILE*out;inti,j,n;doubleave;ave=fun(s,h,&n);printf(nThe%dstudentdatawhichishigherthan%7.3f:

1114M,n,ave);fbr(i=0;i

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

1116");out=fopen("out.dat,',"wM);

1117fprintf(out,,,%d

1118%7.3f

1119M,n,ave);for(i=0;i

1120,',h[i].s);fclose(out);)答案:一:ks[i]!='\O'或s[i]!=02、32或‘a'」A'3、i++或++i或i+=l或i=i+l二:1、应改为for(i=l:i<=y;i++)2、应改为:t=t%10000第90套题一、填空题人员的记录由编号和出生年、月、日组成,N名人员的数据已在主函数中存入结构体数组std中,且编号唯一。函数fun的功能是:找出指定编号人员的数据,作为函数值返回,由主函数输出,若指定编号不存在,返回数据中的编号为空串。请勿改动主函数main和其他函数中的任何内容,仅在fun函数的横线上填入所编写的若干表达式或语句。#include#include#defineN8typedefstruct(charnum[10J;intyear,month,day;}STU;1fun(STU*std,char*num)(inti;STUa={”",9999,99,99};for(i=0;i

1121Notfound!

1122H);)else{printf(H

1123Succeed!

1124");

1125printf(*'%s%d-%d-%d

1126,\p.num,p.year,p.month,p.day);二、改错题下列给定程序中,函数fun的功能是:计算n的5次方的值(规定n的值大于2、小8),通过形参指针传回主函数;并计算该值的个位、十位、百位上数字之和作为函数值返回。例如,7的5次方是16807,其低3位数的和值是15。请改正函数fun中的错误,使它能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!#include#includeintfun(intn,int*value){intd,s,i;/********found********/d=0;/********found********/s=1;for(i=l;i<=5;i++)d=d*n;*value=d;for(i=l;i<=3;i++){s=s+d%10;/********found********/s=s/10;)returns;}main()(intn,sum,v;do{printf(H

1127Entern(2=8);sum=fun(n,&v);printf(n

1128

1129Theresult:

1130value=%dsum=%d

1131

1132M,v,sum);)三、编程题请编写函数fun,其功能是:计算并输出下列多项式的值:例如,若主函数从键盘给n输入8后,则输出为s=0.662872o注意:n的值要求大于1但不大于100o请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。#includedoublefun(intn)main()(intn;doubles;FILE*out;printf("

1133lnputn:");scanf(u%dn,&n);s=fun(n);

1134printf(M

1135s=%f

1136M,s);out=fopen(',out.dat',/'wn);for(n=5;n<10;n++)fprintf(out,n%f

1137'\fun(n));fclose(out);)答案:一、1、STU2、std[i].num3、std[i]二、1、d=0;应改为d=l;2、s=l;应改为s=0;3、s=s/10;应改为d=d/10;三、doublefun(intn){inti;doublesn=0.0;for(i=l;i<=n;i++)sn+=(1.0/(2*i-1)-1.0/(2*i));returnsn;)第91套题一、填空题请补充fun函数,该函数的功能是:求100(不包括100)以内能被2或3整除,但不能同时被2和3整除的自然数。结果保存在数组bb中,fun函数返回数组bb元素的个数。请勿改动主函数main和其他函数中的任何内容,仅在fun函数的横线上填入所编写的若干表达式或语句。#include#defineN100intfun(intbb[]){inti,j;for(_1—;i<100;i++)if((i%2!=0&&i%3==0)II(i%2==0&&i%3!=0))2;.3.main()(inti,n;intbb[N];n=fun(bb);for(i=0;i

1138");printf("%4d",bb[i]);))二、改错题下列给定程序中,函数fun的功能是:读入一个字符串(长度<20),将该字符串中的所有字符按ASCII码升序排列后输出。例如,若输入edcba,则应输出abcde。请改正程序中的错误,使它能统计出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!#include#includevoidfun(chart[]){charc;inti,j;/*******nd********/for(i=strlen(t);i;i-)for(j=0;j

1139/********found********/•f(tU]

1140Pleaseenteracharacterstring:gets(s);printf(n

1141

1142Beforesorting:

1143%s",s);fun(s);printf(M

1144Aftersortingdecendingly:

1145%sM,s);)三、编程题请编写函数fun,起功能是:将两个两位数的正整数a、b合并形成一个整数放在c中。合并的方式是:将a数的十位和个位依次放在c数的十位和千位上,b数的十位和个位数依次放在c数的个位和百位上。例如,当a=45,b=12,调用该函数后,c=5241。请勿改动主函数main和其他函数中的任何内容,仅在函数fun中的花括号中填入所编写的若干语句。#include#includevoidfun(inta,intb,long*c)main()(inta,b;longc;FILE*out;printf(nInputa,b:");scanf(n%d%dn,&a,&b);fun(a,b,&c);printf(uTheresultis:%ld

1146n,c);out=fopen(',out.dat',,,'wn);for(a=0;a<10;a++){fun(a+ll,a+22,&c);fprintf(out,n%ld

1147M,c);)fclose(out);)答案:一、1、i=l,j=0或j=0,i=]2、bb[j++]=I3、retrunj二、1、for(i=strlen(t);i;i—)应改为for(i=strlen(t)-l;i;i—)或for(i=strlen(t)・l;i>0;i・・)2.if(t[j]t[j+l])三、voidfun(inta,intb,long*c)(c=(a%10)*1000+(b%10)*100+(a/10)*10+b/10;)第92套题一、填空题请补充main函数,该函数的功能是:把字符串str中的字符向前移动一位,原来的第一个字符移动到字符串尾,结果仍然保存在原字符串中。例如,输入“howareyou?”,则结果输出“owareyou?h仅在横线上填入所编写的若干表达式或语句,勿改动函数中的其他任何内容。#include#defineN80main()

1148(charstr[N],ch;inti;printf(n

1149Inputastring:

1150H);gets(str);printfC^Xn********originalstring********

1151n);puts(str);ch=str[O];for(i=0;—1—;i++)str[i]=str[i+l];._2—;printf("

1152********newstrin。********puts(str);}二、改错题下列给定程序中,fun函数的功能是:求s=aa…aa-…-aa-aa-a(此处aa...aa表示n个a,a和n的值在1至9之间)。例如a=3,n=6,则以上表达式为:s=333333-33333-3333-333-33-3其值是296298。a和n是fun函数的形参,表达式的值作为函数值传回main函数。请改正程序中的错误,使它能计算出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!#include#includelongfun(inta,intn){‘intj;/********^^und********/longs=0,t=1;/********found********/for(j=0;j<=n;j++)t=t*10+a;s=t;for(j=l;j

1153Pleaseenteraandn:n);scanf(',%d%d",&a,&n);printf(HThevalueoffunctionis%ld

1154u,fun(a,n));)三、编程题请编写函数fun,它的功能是计算:S=yj历⑴+/〃(2)+/〃(3)++历(加)S作为函数值返回。在C语言中可调用log(n)函数求ln(n)。log函数的引用说明是:doublelog(doublex)o例如,若m的值为20,则fun函数值为6.506583。请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。#include#include#include

1155doublefun(intm))main()(inti;FILE*out;printf(0%f

1156M,fun(20));out=fopen("out.dat"Jw");for(i=0;i<10;i++)fprintf(out,n%f

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

1158答案:~*、1、二、1、2、3、str[i+l]或str[i+l]!='\O'或str[i+l]!=O2、stri[ij=chlongs=0,t=l;应改为longs=0,t=0;for(j=0;j<=n;j++)应改为for(j=0;j#defineN10voidfun(intaa[])inti,t;intmax=0,min=0;for(i=0;i

1159********ori"inallist***********\fj")・for(i=0;i

1160********newlist***********

1161")*for(i=0;i

1162例如,程序运行后,输入0.0001,则程序输出3.1414。请改正程序中的错误,使它能输出正确的结果。注意:不要改动main函数,不得增行或删行,不得更改程序的结构!#include#includefloatfun(floatnum)(ints;floatn,t,pi;t=1;pi=0;n=1;s=1;/********found********/while(t>=num)(pi=pi+t;n=n+2;s=-s;/********f0und********/t=s%n;)pi=pi*4;returnpi;)main()(floatnl,n2;prinltV'Enterafloatnumber:");scanf("%f;&nl);n2=fun(nl);printf(”%6.4ftn",n2);}三、编程题请编写函数fun,它的功能是计算系列级数和,和值由函数返回。23nS=l+x+—+—++—2!3!n!例如,当n=10,x=0.3时,函数值为1.349859。请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。#include#include#includedoublefun(doublex,intn)main()(inti;FILE*out;printf(u%f

1163",fun(0.3,10));out=fopen("out.dat","w");for(i=0;i<10;i++)fprintf(out,n%f

1164",fun((i+4)/10.0,10));fclose(out);)答案:~•、1、aa[max]aa[max]2、aa[inin]>aa[i]Wcaa[i]=num)应改为while(fabs(t)>=num)2、t=s%n;应改为t=s/n;三、doublefun(doublex,intn)(doubles=1.0,p=1.0;inti,j,t;for(i=l;i<=n;i++)(

1165t=l;for(j=l;j<=i;j++)t=t*j;p=p*x;s=s+p/t;}returns;)第94套题一、填空题请补充fun函数,该函数的功能是:删除字符数组中比指定字符小的字符,指定字符从键盘输入,结果仍保存在原数组中。例如,输入“abcdefghij",指定字符为d则结果输出“defghij”。请勿改动主函数main和其他函数中的任何内容,仅在fun函数的横线上填入所编写的若干表达式或语句。#include#defineN80voidfun(chars[],charch)(inti=0,j=0;while(s[i])(if(s[i]

1166Inputastring:

1167n);gets(str);printf(n

1168********originalstring********

1169M);puts(str);printf("

1170InputacharacterAn");scanf("%c”,&ch);fun(str,ch);printf(*'

1171********newstring********

1172M);puts(str);二、改错题在主函数中从键盘输入若干个数放数组中,用0结束输入并放在最后一个元素中。下列给定程序中,函数fun的功能是:计算数组元素中值为正数的平均值(不包括0)。例如:数组中元素的值依次为39,-47,21,2,-8,15,0.则程序的运行结果为19.250000。请改正程序中的错误,使它能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!#include#includedoublefun(intx[J)(/********found********/intsum=0.0;intc=0,i=0;while(x[i]!=0)(if(x[i]>0)(

1173sum+=x[i];C++;)i++;)/*******nd********/sum\=c;returnsum;)main()(intx[1000];inti=0;printf(H

1174Pleaseentersomedata(endwith0):");do{scanf(H%dM,&x[i]);}while(x[i++]!=0);printf(,'%lf

1175M,fun(x));)三、编程题规定输入的字符串中只含字母和*号。请编写函数fun,它的功能是:将字符串中的前导*号全部删除,中间和结尾的*号不删除。例如,若字符串中的内容为*******A*BC*DEF*G****,删除后,字符串中的内容则应当是A*BC*DEF*G****。在编写函数时,不得使用C语言提供的字符串函数。请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。#include#include#includevoidfun(char*a)main()(chars[81];FILE*out;printf(HEnterastring:

1176M);gets(s);fun(s);printf(*'Thestringafterdeleted:

1177");puts(s);out=fopen("out.dat'V'wn);strcpy(s,',*******a*BC*DEF*G****m);fun(s);fprintf(out,H%sn,s);fclose(out);)答案:—,1,i++或++i或i+=l或i=i+l2、s[j++]=s[i]3、s[j]='\O,或s[j]=O'二、1、intsum=0.0;应改为doublesum=0.0;2、returns;应改为returnt;三、voidfun(char*a)(inti=0;char*p=a;while(*p&&*p==,*,)p++;while(*p){a[i]=*p;i++;P++;)a[i]=,\0,;

1178)第95套试题第题:给定程序功能是计算5=改11)+小叶1)=・・・+40)+b)+人2)+・・・+⑪)的值。例如,当n为5时,函数值应为:10.407143.[(x+l)/(x-2)x>0f(x)=(Ox=0或x=2[(x-l)/(x-2)x<0请勿改动主函数main和其他函数任何内容,仅在横线上填入所编写的若干表达式或语句。#include#includedoublef(doublex){if(fabs(x-0.0)

1179",fun(5));)第二题:下列给定程序中,函数fun的功能是:计算并输出下列数的前N项之和Sn,直到Sn+1大于q为止,q的值通过形参传入。234N+1c=—IF—F4枭123N例如,若q的值为50.0,则函数值为49.394948.请改正程序中的错误,使它能得出正确的结果。注意,不要改动main函数,不得增行或删行,也不得更改程序的结构!#include#includedoublefun(doubleq)intn;doubles,t;n=2;s=2.0;while(s<=q)t=s;/********found********/s=s+(n+l)/n;n++;}printf(,'n=%d

1180,

1181);/********found********/

1182returns;main()printf(H%f

1183u,fun(50));第三题:假定输入的字符串中只包含字母和*号。请编写函数fun,它的功能是:使字符串的前导*号不得多于n个;若多于n个,则删除多余的*号;若少于或等于n个,则什么也不做,字符串中间和尾部的*号不删除。例如,若字符串中的内容为*******A*BC*DEF*G****,假设n的值为4,删除后,字符串中的内容则应当是****A*BC*DEF*G****;若n的值为8,则字符串中的内容仍为*******A*BC*DEF*G****。N的值在主函数中输入。在编写函数时,不得使用C语言提供的字符串函数。请改正程序中的错误,使它能得出正确的结果。注意,不要改动main函数,不得增行或删行,也不得更改程序的结构!#include#includevoidfun(char*a,intn)main()(chars[81];intn;FILE*out;printf("Enterastring:

1184n);gets(s);printf(HEntern:");scanf(M%dM,&n);fun(s,n);printf("Thestringafterdeleted:、。");puts(s);out=fopen("out.dat“Jw");strcpy(s,n*******A*BC*DEF*G****");fun(s,4);fprintf(out,n%sn,s);fclose(out);答案第一题:第一处0.0或0或(double)O第二处n第三处s第二题第一处s=s+(n+l)/n;应改为s=s+(double)(n+1)/n;第二处returns;应改为returnt;第三题voidfun(char*a,intn)(inti=0,k=0;char*t=a;while(九=='*')(k++;t++;)t=a;if(k>n)t=a+k-n;

1185while(*t)(a[i]=*t;i++;t++;)a[i]='\O';)第96套题一、填空题给定程序的功能是将未在字符串s中出现,而在字符串t中出现的字符,形成一个新的字符串放在U中,U中字符按原来字符串中字符顺序排序,但去掉重复的字符。例如:当s="12345”,t="24677”时,u中的字符为:"67''。请勿改动主函数main和其他函数中任何内容,仅在fun函数的横线上填入所编写的若干表达式或语句。#include#includevoidfun(char*s,char*t,char*u)(inti,j,si,tl,k,ul=0;si=strlen(s);tl=strlen(t);for(i=0;i=si)(for(k=0;k=ul)u[ul++]=2;—3—=\0*;)main(){chars[100],t[I00],u[100];printf("

1186Pleaseenterstrings:H);scanf(,,%sn,s);printf(u

1187Pleaseenterstringt:H);scanf(H%sM,t);fun(s,t,u);printf("Theresultis:%s

1188H,u);二、改错题下列给定程序中,fun的功能是:计算S=f(-n)+f(-n+l)+…+f(0)+f(l)+f(2)+…+f(n)的值。列如,当n为5是,函数值应为10.407143。f(x)函数定义如下:[(x+l)/(x-2)x>0f(x)=<0x=ObJcx=2[(x-l)/(x—2)x<0请改正程序中的错误,使程序能输出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!

1189#include#include#include/********foun(j********/f(doublex)(if(x==0.0IIx=2.0)return0.0;elseif(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++)(y=f(1.0*i);s+=y;)/********砧und********/returns}main()(printf("%lf

1190",fun(5));)三、编程题请编写函数fun,其功能是:计算并输出下列多项式值:111S=1H11•…H1+21+2+31+2+3+・・・+50例如,若主函数从键盘给n输入50后,则输出为S=1.960784。注意:n的值要求大于1但不大于100»请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。#includedoublefun(intn)main()(intn;doubles;FILE*out;printf("

1191lnputn:");scanf("%d”,&n);s=fun(n);printf(''

1192

1193s=%f

1194

1195',,s);out=fopen("out.dat","w");for(n=0;n<10;n++)fprintf(out,n%f

1196'\fun(n+50));fclose(out);)答案一、1、break2、t[i]3、u[ul]二、1、f(doublex)应改为doublef(doublex)2、rerums应改为returns;三、doublefun(intn)(inti,j,k;doublesum=0.0,t;for(i=1;i<=n;i++)

1197(t=0.0;for(j=l;j<=i;j++)t+=j;sum+=1.0/t;)returnsum;)第97套题1、第1题填空题:数组sir全由大小写字母字符组成。请补充fun函数,该函数的功能是:请把sir中的字母转换成紧接着的下一个字母,如果原来的字母为?或NL则相应地转换成H或,A,,结果仍保存在原数组中。例如,输入“AboutZz”,则输出"BcpvuAa”。请勿改动主函数main和其他函数中的任何内容,仅在fun函数的横线上填入所编写的若干表达式或语句。#include#defineN80voidfun(chars[])(inti;for(i=0;1;i++)if(s[i]=='z”ls[i]=='Z')s[i]-=—2—;elses[i]+=-3—;)main()(charstr[N];printf(,'

1198Inputastring:

1199u);gets(str);printf("

1200********originalstring********

1201H);puts(str);fun(str);printf(”

1202********newstring********

1203").puts(str);2、第2题改错题:卜一列给定程序中,函数fun的功能是:计算函数F(x,y,z)=(x+y)/(x-y)+(z+y)/(z-y)的值。其中x和y的值不等,z和y的值不等。例如,当x的值为9、y的值为1、z的值为15时,函数值为3.50o请改正程序中的错误,使它能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!#include#include/********fbund********/#defineFU(m,n)(m/n)floatfun(floata,floatb,floatc)(floatvalue;value=FU((a+b),(a-b))+FU((c+b),(c-b));/********f^)und********/Return(value);)main()(floatx,y,z,sum;printf(HInputxyz:");scanf(n%f%f%f,&x,&y,&z);

1204printf(,,x=%f,y=%f,z=%f

1205M,x,y,z);if(x==yIIy==z)(printf(uDataerror!

1206H);exit(O);}sum=fun(x,y,z);printf(nTheresultis:%5.2f

1207”,sum);)3、第3题编程题:请编写函数fun,它的功能是:计算并输出n(包括n)以内能被5或9整除的所有自然数的倒数之和。例如,若主函数从键盘给n输入20后,则输出为土0.853333。注意:n的值要求不大于100o请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。#includedoublefun(intn))main(){intn;doubles;FILE*out;printfC'

1208Inputn:");scanf("%d”,&n);s=fun(n);printf(''

1209

1210s=%f

1211,\s);oul=fopen("out.dat","w");for(n=0;n<10;n++)fprintf(out,n%f

1212M,fun(n+20));fclose(out);)答案:第一题第1空答案:s[i]!='\O'或s[i]!=O第2空答案:25第3空答案:1第二题第一处:#defineFU(m,n)(m/n)应改为#defineFU(m,n)(m)/(n)第二处:Retum(Value):应改为return(value);第三题doublefun(intn)(inti;doublesum=0.0;for(i=l;i<=n;i++)if(i%5=0lli%9==0)sum+=1.0/I;returnsum;1第98套第一题请补充fun函数,该函数的功能是:求1〜100(不包括100)以内所有素数的平均值。仅在横线上填入所编写的若干表达式或语句,勿改动函数中的其他任何内容。

1213#includemain()(inti,j,n=0,flag;floataver=0;for(j=2;j<100;j++){flag=1;for(i=2;i

1214

1215average=%4.2f\3);)第二题数列中,第一项值为3,后一项的值增5;下列给定程序中,函数fun的功能是:计算前n(4#defineN20intfun(intn,int*a)/********found********/inti,j,k,sum;sum=0;for(k=3,i=0;i

1216Entern(4

1217

1218Theresult:

1219H);for(i=0;i

1220

1221");}第三题请编写函数fun,其功能是:计算并输出3到n之间所有素数的平方根之和。例如,若主函数从键盘给n输入100后,则输出为sum=l48.874270o请勿改动主函数main和其他函数中的任何内容,仅在fun函数的花括号中填入所编写的若干语句。#include

1222#includedoublefun(intn)main()(intn;doublesum;FILE*out;printf(n

1223

1224lnputn:");scanf(n%d';&n);sum=fun(n);printf(''

1225

1226sum=%f

1227

1228',,sum);out=fopen("out.dat“Jw");for(n=0;n<10;n++)fprintf(out,fun(n+80));fclose(out);)答案第一题第1处填空:j%i==0或!(j%i)或0==j%i第2处填空:flag==l或flag或l=flag第3处填空:aver/n第二题第1处:inti,j,k,sum;应改为inti,j=0,k,sum;第2处:if(sum%4=2)应改为if(sum%4==2)第三题doublefun(intn)(intm,k,i;doubles=0.0;for(m=3;m<=n;m++){k=sqrt(m);for(i=2;i<=k;i++)if(m%i==0)break;if(i>=k+l)s+=sqrt(m);)returns;)第99套第一题请补充fun函数的功能是:把字符下标能被2或3整除的字符串str中删除,把剩余的字符重新保存在字符串str中。字符串str从键盘输入,其长度作为参数传入fun函数。例如,输入“abcdefghijk",输出“bfh”。请勿改动主函数main和其他函数中的任何内容,仅在fun函数的横线上填入所编写的若干表达式或语句。#include#defineN80voidfun(chars[],intn)(inti,k;—1—;for(i=0;i

1229k・・;}―3—;)main(){inti=0,strlen=0;charstr[N];printf(u

1230lnputastring:

1231M);gets(str);while(str[i]!=AO'){strlen++;i++;}fun(str,strlen);printf(*********displaystring*********^j|")・puts(str);)第二题下列给定程序中,函数fun的功能是:统计一个无符号整数中各位数字值为零的个数,通过形参传回主函数;并把该整数中各位上最大的数字值作为函数值返回。例如,若输入无符号整数30800,则数字值为零的个数为3,各位上数字值最大的是8。请改正函数fun中的错误,使它能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!#includeintfun(unsignedn,int*zero)(intcount=0,max=0,t;do{t=n%10;/********found********/if(t=O)count++;if(max

1232lnputn(unsigned):");scanf(H%dM,&n);max=fun(n,&zero);printf(n

1233Theresult:max=%dzero=%d

1234H,max,zero);)第三题请编写函数fun,其功能是:计算并输出)+(1+>/^++…+(1+*\/24-^3+,•,+>J-n)例如,若主函数从键盘给n输入20后,则输出为s=534.188884。注意:n的值要求大于1但不大于100。

1235请勿改动主函数main和其他函数中的任何内容,仅在fun函数的花括号中填入所编写的若干语句。#include#includedoublefun(intn))main()(intn;doubles;FILE*out;printf(',

1236

1237lnputn:");scanf(n%dM,&n);s=fun(n);printf(u

1238

1239s=%f

1240

1241M,s);out=fopen(',out.dat,,,nw,*);for(n=0;n<10;n++)fprintf(out,"%f

1242n,fun(n+20));fclose(out);)答案第一题第1处填空:k=0;第2处填空:II第3处填空:s[k]='\0'或s[k]=0第二题第1处:if(t=O)应改为if(t=O)第2处:zero=count;应改为*zero=count;第三题doublefun(intn)inti;doubles=1.0;p=1.0;for(i=2;i<=n;i++)p+pow(i,0.5);s+=p;)returns;)

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

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

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