212if(m>=a[mid])low=mid+1;elsereturn(mid);}return(-1);}main(){inti,a[N]={-3,4,フ,9,13,45,67,89,100,180},k,m;printf(naEyxeODpAEy^YEQlA:n);for(i=0;i=0)printf(Mm=%d,index=%d
213n,m,k);elseprintf("Notbefound!
214");)第1处:voidfun(inta[],intm)应改为intfun(inta[J,intm)第2处:if(m>=a[mid])应改为if(m>a[mid])编程题编写函数intfun(intlim,intaa[MAX]),该函数的功能的求出小于或等于lim的所有素数,并放在aa数组中,该函数返回所求出的素数的个数注意:部分源程序给出如下。请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。试题程序:#include♦include♦defineMAX100intfun(intlim,intaa[MAX])}main()(intlimit,i,sum;intaa[MAX];FILE*out;printf("EaEeO»tdOuEy");scanf("%d",&limit);sum=fun(limit,aa);for(i=0;i215");printf("%5d",aa[i]);)sum=fun(28,aa);out=fopen("out.dat","w");for(i=0;i216",aa[i]);fclose(out);答案是:intfun(intlimjntaa[MAX])(intk=O,I,j;for(i=lim;i>l;i-){for(j=2;j=i){aa[k]=i;k++;))returnk++;)
217第21套填空题给定程序中,函数FUN的功能是:将S所指字符串中的所有数字字符移到所有非数字字符之后,并保持数字字符串和非数字字符原有的先后次序。例如,形参S所指的字符串为:def35adh3kjsdf7.执行结果为:defadhkjsdf3537.注意:部分源程序给出如下请勿改动主函数main和其他函数中的任何内容,仅在横线上填入所编写的若干表达式或语句。试题程序:#includevoidfun(char*s)(inti,j=0,k=0;char11[80]rt2[80];for(i=0;s[i]!=,\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;i218Theoriginalstringis:%s
219”,s);fun(s);printf(n
220Theresultis:%s
221Mzs);)第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;/★★★★★★★★found★★★★★★★★ZP=h;while(p){if(p->data>max)max=p->data;/**★*****found********/p=h->next;}returnmax;)outresult(ints,FILE*pf){fprintf(pf,n
222Themaxinlink:%d
223M,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;
224}outlink(NODE*h,FILE*pf)(NODE*p;p=h->next;fprintf(pf,n
225THELIST:
226
227HEAD");while(p)(fprintf(pfzH->%d”,p->data);p=p->next;}fprintf(pf,"
228");}main()NODE*head;intm;head=creatlink(12,100);outlink(head,stdout);m=fun(head);printf(n
229THERESULT:
230n);outresult(m,stdout);}第1处:p=h;应改为p=h->next;第2处:p=h->nexl;应改为p=p->next;编程题请编写fun函数对长度为7个字符的字符串,除首,尾字符外,其他5个字符按ASCII码降序排列例如原来的字符串为,CEAecda,则排序后输出为CedcEAa注意:部分源程序给出如下。请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。试题程序:#include♦include♦include♦includevoidfun(char*s,intnum)main(){chars[10];FILE*out;printf(nEaEe74ox6•upAxO•ほ’®:");gets(s);fun(s,7);printf("
231%s",s);out=fopen("out.dat","w");strcpy(s,"ceaEDCA");fprintf(out,"%s",s);fclose(out);)答案是:voidfun(char*s,intnum)(chart;intI,j;for(i=l;ivoidfun(char*s)(inti,j,n;for(i=0;s[i]!=1\01;i++)if(s[i]>=»0»1s[i]<=,9,)
232(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]="ba3a54cd23a”;printf("
233Theoriginalstringis:%s
234",s);fun(s);printf("
235Theresultis:%s
236",s);)第1处填空:&&第2处填空:0第3处填空:s[j]或・(s+j)改错题下列给定程序中,函数FUN的功能是:根据整型形参M,计算如下公式的值,y=l+—ー+—+丄+....+」ー2*23*34*4in^m例如,若M中的值为5,则应输出:1.463611。请改正程序中的错误,使它能得出正确结果。注意:不要改动MAIN函数,不得增行或删行,也不要更改程序的结构!试题程序:#include♦includedoublefun(intm)(doubley=1.0;inti;/****★★★★found********/for(i=2;i237Theresultis%lf
238",fun(n));)第1处:for(i=2;i239试题程序:#include♦include♦defineN8structslist{doubles;structslist*next;};typedefstructslistSTREC;doublefun(STREC*h)STREC*creat(double*s)(STREC*h,*pr*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{printf("->%2.Of",p->s);p=p->next;)while(p!=0);printf("
240
241");}max;main(){doubles[N]={85,76,69,85,91,72,64,87STREC*h;FILE*out;h=creat(s);outlist(h);max=fun(h);printf("max=%6.If
242",max);out=fopen("out.dat","w");fprintf(out,"max=%6.If",max);fclose(out);}答案是:doublefun(STREC*h)(doublemax;STREC*q=h;max=h->s;do(if(q->s>max)max=q->s;q=q->next;11while(q!=0);returnmax;
243}第23套填空题在主函数中从键盘输入若干个数放入数组X中,用〇结束输入但不计入数组。下列给定程序中,函数FUN的功能是:输出数组元素中小于平均值的元素。例如:数组中元素的值依次为1,2,2,12,5,15,则程序的运行结果为1,2,2,5。注意:部分源程序给出如下请勿改动主函数main和其他函数中的任何内容,仅在横线上填入所编写的若干表达式或语句。试题程序:#include♦includevoidfun(1,intn){doublesum=0.0;doubleaverage=0.0;inti=0;for(i=0;i244n);printfじ%d,“,x[i]);main()(intx[1000];inti=0;printf(n
245Pleaseentersomedata(endwith〇):");do(scanf("%d"z&x[i]);}while(x[i++]!=0);fun(x,i-1);}第1处填空:intxロ或ini*x第2处填空:sum+=x[i]或sum=sum+x[i]第3处填空:sum/n改错题下列给定程序中,函数FUN的功能是:按以下递归公式求函数值。广10(n=l)FUN(n)=
246Fun(n-l)+2(n>l)例如,当给n输入5时,函数值为18,当给n输入3时,函数值为14.请改正程序中的错误,使它能得出正确结果。注意:不要改动MAIN函数,不得增行或刪行,也不要更改程序的结构!试题程序:#include/★★★★★★★★fcund********/intfun(n){intc;/★★★★★★★★found**★★★★★//if(n=1)c=10;elsec=fun(n-1)+2;return(c);}main(){intn;printf(nEntern:n);scanf(n%dn,&n);printf("Theresult:%d
247
248u,fun(n));)第1处:intfun(n)应改为intfun(intn)第2处:if(n=l)应改为if(n==l)编程题编写函数fun,它的功能是:判断字符串是否为回文,若是,则函数返回1,主函数输出YES,否则返回〇,主函数中输出NOo回文是指顺读和倒读都一样的字符串,例如,字符串LEVEL是回文,而字符串123312就不是回文。注意:部分源程序给出如下。请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。试题程序:#include#defineN80intfun(char*str)main()(chars[N];FILE*out;char*test[]={01234321","123421","123321","abcdCBA");inti;printf("Enterastring:");gets(s);printf("
249
250");puts(s);if(fun(s))printf("YES
251");elseprintf("NO
252");out=fopen("out.dat","w");for(i=0;i<4;i++)if(fun(test[i]))fprintf(out,"YES
253");elsefprintf(out,"NO
254");fclose(out);答案是:intfun(char*str){inti,n=O,fg=l;char*p=str;while(*p)(n++;P++;}for(i=0;iintfun(inta,intb,intc){intt;t=(a>b)?(b>c?b:(a>c?c:1)):((a>c)?2:((b>c)?c:3));returnt;
255}main(){intal=31a2=5,a3=4rr;r=fun(al,a2,a3);printf(n
256Themiddlenumberis:%d
257n,r);)第1处填空:a第2处填空:a第3处填空:b改错题下列给定程序中,函数fun的功能是:从s所指字符串中,找出t所指子串的个数作为函数值返回,例如,当s所指字符串中的内容为abcdabfab,t所指字符串的内容为ab,则函数返回整数3。清改正程序中的错误,使它能得也正确的结果,注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!试题程序:#include♦include#includeintfun(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++;s++;}returnn;}main(){chars[100]rt[100];intm;printf(n
258Pleaseenterstrings:n);scanf(n%snfs);printf(n
259Pleaseentersubstringt:H);scanf("吿s”,t);m=fun(s,t);printf(n
260Theresultis:m=%d
261”,m);)第!处:if(r==p)应改为if(*r==*p)第2处:if(r=='、〇’)应改为if(*r=='\O')编程题编写函数fun,它的功能是:将一个数字字符串转换为ー个整数(不得调用C语言中提供的将字符串转换成整数的函数。)例如若输入字符串”一如34则函数把它转换为整数值ー1234。注意:部分源程序给出如下。请勿改动主函数main和其他函数屮的任何内容,仅在函数fun的花括号中填入所编写的若干语句。试题程序:#include♦includelongfun(char*p)}main(){chars[6];longn;FILE*out;char*test[]={3-1234“,“5689“,“フ102“,”-4356”};printf(nEnterastring:
262n);gets(s);n=fun(s);
263printf(”%エd
264”,n);out=fopen(”〇ut.dat”,”w”);for(n=0;n<4;n++)fprintf(out,"%ld
265",fun(test[n]));fclose(out);)答案是:longfun(char*p)(longs=O,t;inti=O,j,n=strlen(p),k,sl;if(p[O]=='-')i++;for(j=I;j<=n-1;j++){仁Plj卜’〇';sl=10;for(k=j;kvoidfun(inta[]zintn)(inti,t;for(i=0;i<1;i++){t=a[i];a[i]=a[n-l--2—];3=t;))main(){intb[9]={1,2,3,4,5,6,7,8,9},i;printf(n
266Theoriginaldata:
267n);for(i=0;i<9;i++)printf(M%4d”,b[i]);printf(n
268M);fun(b,9);printf(n
269Thedataafterinvert:
270n);for(i=0;i<9;i++)printf(M%4d”,b[i]);printf(n
271H);)第1处填空:n/2第2处填空:i第3处填空:a[n-i-l]改错题
272下列给定程序中,函数fun的功能是:y计算n!.例如给n输入5,则输出120.00000〇.请改正程序中的错误,使程序能输出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!试题程序:♦include♦includedoublefun(intn){doubleresult=1.0;/★★★★★★★★found★★★★★★★★Zifn==0return1.0;while(n>l&&n<170)/★★★★★★★★found★★★★★★丈夫Zresult=n—;returnresult;}main()(intn;printf("InputN:");scanf(M%dn,&n);printf(M
273
274%d!=%lf
275
276nrn,fun(n));}第1处:ifn==O应改为if(n==O)第2处:resylt=n-;应改为result*=n—;编程题编写函数fun,它的功能是:比较两个字符串的长度,(不得调用C语言中提供的求字符串长度的函数),函数返回较长的字符串,若两个字符串长度相同,则返回第一个字符串例如,输入beijingshanghai(くCR>为回车键),函数将返回shanghai注意:部分源程序给出如下。请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。试题程序:♦includechar*fun(char*s,char*t)main(){chara[20],b[10],*pz*q;inti;FILE*out;printf(nInput1thstring:");gets(a);printf(nInput2thstring:n);gets(b);printf("%s
277”,fun(a,b));out=fopen("〇ut.dat",Hwn);fprintf(outz"吿s”,fun("hunan","changsha"));fclose(out);)答案是:char*fun(char*s,char*t)char*p,*tl=t,*sl=s;intn=0,m=0;while(*sl)(n++;sl++;)while(*tl)(m++;tl++;)if(n>=m)P=s;else
278P=t;returnp;}第26套填空题请补充FUN函数,该函数的功能求能整除X,且是偶数的数,把这些数保存在数组BB,并按从大到小输出。例如,当x=20时,依次输出:201042。注意:部分源程序给出如下请勿改动主函数main和其他函数中的任何内容,仅在fun函数的横线上填入所编写的若干表达式或语句。试题程序:#include#includevoidfun(intk,intbb[]){inti;intj=0;for(1;i<=k;i++)if(k%i==02i%2==0)bb[j++]=i;printf(n
279
280H;for(i=3;i>=0;i―)printf(M%d”,bb[i]);}main()(intk=1;intbb[100];printf(n
281PleaseinputX
282n);scanf(n%dn,&k);fun(k,bb);)第1处填空:i=l第2处填空:&&第3处填空:—j或j-1改错题下列给定程序中,函数fun的功能是,先从键盘上输入・个3行2列矩阵的各个元素的值,然后输出主对角线元素之和。请改正函数fun中的错误或在横线处填上适当的内容并把横线删除,使它能得出正确的结果。#includevoidfun()inta[3][3],sum;
283inti,j;/*★******found********/一iicO一;for(i=0;i<3;i++)for(j=0;j<3;j++)scanf(”%d,“,a[i][j]);for(i=0;i<3;i++)sum=sum+a[i][i];printf(nsum=%d
284nzsum);}main(){fun();)第1处:应填sum=0第2处:scanf("%d,”,a[i][j]);应改为scanf(“%d,”,&aロ皿);编程题编写函数fun,它的功能是:根据下列公式求万的值,(要求满足精度0.0005,即某项小于0.0005时停止迭代):ェ=1+丄+普33*51*2*31*2*3*4H1F3*5*73*5*7*9ド2*3*...*〃H3*5*7*...*(2n+l)程序远行后,如果输出精度为0.0005,则输出为3.14…注意:部分源程序给出如下。请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。试题程序:♦include♦includedoublefun(doubleeps)main()(doublex;FILE*out;printf("Inputeps:");scanf("%lf"z&x);printf("
285eps=%lf,PI=%lf
286",x,fun(x));out=fopen("out.dat","w");fprintf(outz"eps=%lfzPI=%lf
287",0.00003,fun(0.00003));fclose(out);)答案是:doublefun(doubleeps)(doubles;floatn,t,pi;t=l;pi=O;n=l.O;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,jfcount=0;printf(n
288Theprimenumberbetween2to%d
289H,n);for(i=2;i<=n;i++){for(1;j
290break;if<3>=i){count++;printf(count%15?"%5d":n
291%5dHzi);})returncount;}main()(intn=20,r;r=fun(n);printf(n
292Thenumberofprimeis:%d
293H,r);)第1处填空:j=2第2处填空:i第3处填空:j改错题下列给定程序中,函数fun的功能是:根据以下公式求だ值,并作为函数值返回,n,11*21*2*31*2*3*423353573579例如,给指定精度的变量eps输入0.005时应当输出pi=3.140578o请改正程序中的错误,使其能得出正确结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!试题程序:#include♦include♦includedoublefun(doubleeps){doubles,t;intn=1;s=0.0;/★★★★★★★★found********/t=0;/★★★★★★★★found'*'*******/while(t<=eps)(s+=t;t=(t*n)/(2*n+l);n++;)return(s*2);}main()(doublex;printf(n
294Pleaseenteraprecision:");scanf(n%lfHf&x);printf(n
295eps=%lf,Pi=%lf
296
297H,x,fun(x));}第1处:仁〇;应改为t=LO;第2处:while(tv=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);for(k=0;k298M,aa[k]);elseprintf(H%4dn,aa[k]);printf("
299");out=fopen("out.dat","w");fun(100,aa,&n);for(k=0;k300",aa[k]);else
301fprintf(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=£k!。&=0注意:部分源程序给出如下请勿改动主函数main和其他函数中的任何内容,仅在横线上填入所编写的若干表达式或语句。试题程序:#includelongfun(intn)(inti;longs;s=1;for(i=l;i<=n;i++)s=2;returns;}main()(longs;intk,n;scanf("吿d",&n);s=3;for(k=0;k<=n;k++)s=4;printf(n%ld
302nzs);)第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;/★*******found********/s=p;for(i=0;i303a[i]=*p;i++;/★★★★★★★★found★★★★★★★★Z一IicO一}while(*p);/★★★★★★★★fcund*/a[i]=.〇,strcpy(s,a);main()(intn;chars[80];printf(n
304Enterastring:M);gets(s);printf(n
305Thestring%s
306”,s);printf(n
307Entern(numberofmax=a[i];):n);scanf(n%du,&n);fun(s,n);printf(n
308Thestringafterinster:%s
309”,s);)第1处:s=p;应改为p=s;第2处:应填P++;或++P;或p+=l或p=p+l第3处:a[i]=O;应改为a[i]=ヽ(T;或a[i]=0;编程题编写函数fun,它的功能是:找出ー维整数型数组元素中最大的值和它所在的下标,最大值和它的下标通过形参传回。数组元素中的值已在主函数中赋予,主函数中x是数组名,n是x中的数据个数,max存放最大值,index中存放最大值所在元素的下标。注意:部分源程序给出如下。请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。试题程序:#include#include♦includevoidfun(inta[]zintn,int*maxzint*d)}main()(inti,x[20],max,index,n=10;FILE*out;for(i=0;i310");fun(x,n,&max,Sindex);printf(nMax=%5d,Index=%4d
311n,max,index);out=fopen("out.dat","w");memcpy(x,"3.141592653589793238462643383279",32);fun(x,8,&max,Sindex);fprintf(out,"Max=%5d,Index=%4d",max,index);fclose(out);)答案是:
312voidfun(inta[],intn,int*max,int*d)(inti;*max=a[〇];*d=0;for(i=0;i*max)*d=I;))第29套填空题请补充fun函数,该函数的功能是求不超过给定自然数的各偶数之和。请勿改动主函数main和其他函数中的任何内容,仅在fun函数的横线上填入所编写的若干表达式或语句。试题程序:#includeintfun(intx)(inti,s;s=1;for(i=2;2;i+=2)s+=i;returns;}main(){intn;doprintf(M
313Pleaseenternaturalnumbersn:n);scanf(n%dn,&n);}while(n<=0);printf(n
3142»3-,1y>05,,x6E»Ey%dpA,4-A^Eyd®°fIa%d
315nzn,fun(n));)第1处填空:0第2处填空:iv=x或x>=i改错题下列给定程序中,函数fun的功能是:求出两个非〇正整数的最大公约数并作为函数值,例如numl和um2分别输入49和21,则输出的最大公约数为7,若给numl和um2分别输入27和81,则最大公约数为2?〇请改正程序中的错误,使其能得出正确结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!试题程序:#includeintfun(inta,intb){intr,t;/★★★★★★★★found★★★★★★★*Zif(a316printf(nInputnumlnum2:n);scanf(n%d%dHr&numl,&num2);printf(nnuml=%dnum2=%d
317
318H,numlfnum2);a=fun(numlrnum2);printf(nThemaximuncommondivisoris%d
319
320M,a);)第1处:b=a;应改为a=b;第2处:return(a);应改为retum(b);编程题请编写・个函数FUN,它的功能是:将SS所指字符串中所有下标为奇数位置上的字母转换为大写(若该位置上不是字母,则不转换)。例如,若输入abc4EFg,则应输出aBc4EFg注意:部分源程序给出如下。请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。试题程序:#include#include#includevoidfun(char*ss))main(){chartt[81];FILE*out;printf(n
321Pleaseenteranstringwithin80characters:
322n);gets(tt);printf(n
323
324Afterchanging,thestring
325吿s
326",tt);fun(tt);printf(H
327becomes
328%s
329",tt);out=fopen("out.dat",MwM);strcpy(ttz"Pleaseenteranstringwithin80characters:");fun(tt);fprintf(out,"%s",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”,结果输出:654321.注意:部分源程序给出如下请勿改动主函数main和其他函数中的任何内容,仅在fun函数的横线上填入所编写的若干表达式或语句。试题程序:#include♦include#includeunsignedlongfun(char*s)(unsignedlongt=0;
330intk;inti=0;i=strlen(s);for(1;i>=0;i--)331");gets(str);printf("Thestringis:%s
332",str);if(strlen(str)>8)printf("Thestringistoolong!");elseprintf("Theresult:%lu
333"zfun(str));)第1处填空:一i或iー或i==l或i=i-l第2处填空:s[i]ー0第3处填空:t*10+k或k+t*10或10*t+k或k+10*t改错题下列给定程序中,函数fun的功能是:计算正整数num的各位上的数字之积,例如若输入252,则输出应该是20,若输入202,则输出应该是0。清改正程序中的错误,使其能得出正确结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!试题程序:♦include♦includelongfun(longnum){/********found********/longk;do(k*=num%10;/********found********/num\=10;}while(num);return(k);)main(){longn;printf("\pleaseenteranumber:");scanf("%ld"z&n);printf("
334%ld
335"zfun(n));}第1处:longk;应改为!ongk=l;第2处:num\=10;应改为num/=10;编程题请编写ー个函数FUN,它的功能是:求出♦个2*M整型二维数组中最大元素的值,并将最大值返回调用函数。注意:部分源程序给出如下。请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。试题程序:#defineM4♦includefun(inta[][M])}main(){intarr[2][M]={5,8,3,45,76,-4,12,82};FILE*out;printf(nmax=%d
336n,fun(arr));out=fopen("out.dat","w");
337fprintf(out,"max=%d",fun(arr));fclose(out);}答案是:intfun(inta[][M])(intI,j,max;max=a[〇][〇];for(i=0;i<2;i++)for(j=0;jmax)max=a[i][j];returnmax;)第31套填空题请补充fun函数,该函数的功能是:把主函数中输入的字符串str2接在字符串str!后面。例如:strl="Howare",str二'‘you?”,结果输出:Howareyou?注意:部分源程序给出如下请勿改动主函数main和其他函数中的任何内容,仅在fun函数的横线上填入所编写的若干表达式或语句。试题程序:#include#include#defineN40voidfun(char*strl,char*str2){inti=0;char*pl=str1;char*p2=str2;while(1)i++;for(;2;i++)*(pl+i)=3;*(pl+i)='、0';)main()(charstrl[N],str2[N];intm,n,k;printf("★*★*★★★Inputthestringstrl&str2*******
338");printf("
339str1:");gets(strl);printf("
340str2:");gets(str2);printf(M*******Thestringstrl&str2*******
341");puts(strl);puts(str2);fun(strlrstr2);printf(n*******Thenewstring*******
342n);puts(strl);)第1处填空:*(pl+i)或pl[i]或・(pl+i)!=O或pl[i]!=O第2处填空:*p2或p2[〇]或・p2!=0或p2[0]!=0第3处填空:*p2++改错题下列给定程序中,函数fun的功能是:将字符串tt中的小写字母都改成对应的大写字母,其他字符不变,例如输入Ab,cD,则输出AB,CD。请改正程序中的错误,使其能得出正确结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!试题程序:♦include♦include♦includechar*fun(chartt[])(inti;/★★★★★★★★found********/for(i=0;tt[i];i++)if((tt[i]>=fa*)II(tt[i]<=,z,))/ouud★★★★★★★★Itt[i]+=32;return(tt);}main()(chartt[81];printf(n
343Pleaseenterastring:n);gets(tt);printf(n
344Theresultstringis:
345%snzfun(tt));}第!处:if((tt[i]>='a')ll(tt[i]v='z'))应改为if((tt[i]>='a')&&(tt[i]v='z'))第2处:tt[i]+=32;应改为tt[i]-=32;
346编程题请编写函数FUN,其功能是:将S所指字符串中除了下标为偶数、同时ASCII值也为偶数的字符外,其余的全都删除:串中剩余字符所形式的一个新串放在T所指的数组中。例如,若S所指字符串中的内容为ABCDEFG123456,其中字符A的ASCII码值为奇数,因此应当删除:其中字符B的ASCII码值为偶数,但在数组中的下标为奇数:因此也应当删除:而字符2的ASCH码值为偶数,所在数组中的下标也为偶数,因此不应当删除,其他依此类推。最后T所指的数组中的内容应是246。注意:部分源程序给出如下。请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。试题程序:♦include♦include♦includevoidfun(char*s,chart[])}main(){chars[100],t[100];FILE*out;printf(n
347PleaseenterstringS:M;scanf(n%sn,s);fun(s,t);printf(n
348Theresultis:%s'n",t);out=fopen(Hout.datMrMwn);strcpy(s,"PleaseenterstringS:");fun(s,t);fprintf(out,"%s",t);fclose(out);)答案是:voidfun(char*s,chart|])(intI,j=O,n;n=strlen(s);for(i=0;i♦includedoublefun(doublex[10]){inti;longt;doubleavg=0.0;doublesum=0.0;for(i=0;i<10;i++)1;avg=sum/10;
349avg=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("
350Theoriginaldatais:
351");for(i=0;i<10;i++)printf("%6.1f",x[i]);printf("
352
353");avg=fun(x);printf("average=%f
354
355",avg);)宀第1处填空:sum+=x[i]或sum=sum+x[i]第2处填空:avg*1000或1000*avg第3处填空:(avg+5)/10或(5+avg)"〇改错题下列给定程序中,函数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;i356M);for(i=0;i357n);printf(M%4.0fMza[i]);}printf(n
358
359Theresult:
360H);for(i=0;i361
362n);)第!处:if(i+1%5=0)应改为if((i+l)%5==0)编程题请编写函数FUN,其功能是:将S所指字符串中除了下标为奇数、同时ASCII值也为奇数的字符外,其余的全都删除:串中剩余字符所形式的一个新串放在T所指的数组中。例如,若S所指字符串中的内容为ABCDEFGI2345,其中字符A的ASCH码值为奇数,但所在元素的下标为偶数,因此必需删除:而字符1的ASCII码值为奇数,所在数组中的下标也为奇数,因此不应当删除。其他依此类推。最后T所指的数组中的内容应是!35〇注意:部分源程序给出如下。请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。试题程序:♦include♦include#includevoidfun(char*s,chart[])}main()(chars[100]ft[100];FILE*out;printf(n
363PleaseenterstringS:n);
364scanf("%s",s);fun(s,t);printf(n
365Theresultis:%s
366Mzt);out=fopen("〇ut・dat",nwn);strcpy(s,"PleaseenterstringS:");fun(s,t);fprintf(out,"%s”,t);fclose(out);)答案是:voidfun(char*s,chart[])(intI,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;i367Theoriginaldata:
368");for(i=0;i369");fun(b,N);printf(n
370Thedataaftermoving:
371H);for(i=0;i372");)第1处填空:1第2处填空:i第3处填空:a[p+i]或・(a+p+i)改错题下列给定程序中,函数fun的功能是:将s所指字符串中的字母转换为按字母序列的后续字(但Z转换为A,z转换为a),其他字符不变。清改正程序中的错误,使其能得出正确结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!试题程序:#include♦include♦includevoidfun(char*s){/★★★★★★★★found★★★★文火**/while(*s!=(if(*s>=*A*&&*s<=,Z1II*s>=,a,&&*s<=,z,)(if(*s==1Z1)*s=1A1;elseif(*s==1z1)*s=1a1;else*s+=1;}/********found********/(*s)++;))main(){chars[80];
373printf("
374Enterastringwithlength<80.:
375
376");gets(s);printf("
377Thestring:
378
379");puts(s);fun(s);printf("
380
381TheCords:
382
383");puts(s);)第1处:while(*s!='@')应改为while(*s)或while(*s!='、〇')或while(&s!=0)第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:
384M);gets(s);printf("Entern:");scanf("%d",&n);fun(srn);printf("Thestringafterdeleted:
385");puts(s);out=fopen("out.dat","w");strcpy(s,"****A*BC*D**EF*G*********");fun(s,5);fprintf(outz"吿s",s);fclose(out);)答案是:voidfun(char*a,intn)(inti=0,k=0;char*p,*t;p=t=a;while(*t)t++;t一・while(*t==,**)(k++;J;t++;if(k>n)(while(*p&&p;
386第34套填空题请补充fun函数,该函数的功能是:分类统计ー个字符串中元音字母和其它字符的个数(不区分大小写)。例如,输入aeiouAUpqr,记过为A:2E:11:10:1U:2other:3注意:部分源程序给出如下请勿改动主函数main和其他函数中的任何内容,仅在fun函数的横线上填入所编写的若干表达式或语句。试题程序:#include♦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;case1E1:case'e’:bb[l]++;break;case'エ':case'i':bb[2]++;break;case'O':case'〇':bb[3]++;break;case'U':case'u':bb[4]++;break;default:2;}3}}main(){charstr[N],ss[5]="AEIOU";inti;intbb[6];printf("Inputastring:
387");gets(str);printf("thestringis:
388");puts(str);fun(str,bb);for(i=0;i<5;i++)printf("
389%c:%d",ss[i],bb[i]);printf("
390other:%d",bb[i]);)第!处填空: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;改错题下列给定程序中,函数fun的功能是:将长整型数中每一位上为奇数的数依次取出,构成一个新数放在t中,高位仍在高位,低位仍在低位,当s中的数为87653142时,t中的数为7531。请改正程序中的错误,使其能得出正确结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!试题程序:#include♦includevoidfun(longs,long*t){intd;longsi=1;/★★★★★★★★found★★★★★★★*/t=0;while(s>0){d=s%10;/★★★★★★★★found★★★★★★★よ/if(d%2==0)(*t=d*sl+*t;si*=10;}s/=10;)}main()(longs,t;printf(n
391Pleaseenters:");scanf("吿Id",&s);fun(s,&t);printf("Theresultis:%ld
392",t);)第1处:t=0;应改为・t=0;第2处:if(d%2==0)应改为if(d%2!=0)编程题学生的记录由学号和成绩组成,N名学生的数据已在主函数中放入结构体数组S中,请编写函数FUN,它的功能是:把分数最高的学生数据放在H所指的数组中,注意:分数最高的学生可能不只一个,函数返回分数最高的学生的人数。注意:部分源程序给出如下。请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。试题程序:♦include♦defineN16typedefstruct{charnum[10];ints;}STREC;
393intfun(STREC*a,STREC*b)}main()(STRECs[N]={{"GA05",85},{"GA03",76},{"GA02",69}z("GA04",85},{"GA01",91},{"GA07",72},{"GA08",64},{"GAO6",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(MThe%dhighestscore:
394",n);for(i=0;i395M,h[i].num,h[i].s);printf("
396");out=fopen("out.dat",nwn);fprintf(out,n%d
397M,n);for(i=0;i398”,h[i].s);fclose(out);}答案是:intfun(STREC*a,STREC*b)(intI,j=0,n=0,max;max=a[0].s;for(i=0;imax)max=a[i].s;for(i=0;i#defineN80voidfun(char*s,int*num)(inti,n=0;for(i=0;1;i++)if(s[i]>=*a»&&s[i]<=,z,&&s[i+l]==f1||s[i+1]==,\01)3;}main()(charstr[N];intnum=0;printf(nEnterastring:
399n);gets(str);while(str[num])num++;fun(str,&num);printf(nThenumberofwordis:%d
400
401M,num);)第!处填空: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++)/********found********/if(k)(
402if(p=='')(k=0;/〇unベ★★★★★★★★/*p=toupper(*(p-1));))else(k=1;main()(charchrstr[64];intd;printf(n
403Pleaseenteranenglishsentencewithin63letters:M;gets(chrstr);d=strlen(chrstr);chrstr[d+1]=**;chrstr[d+l]=0;printf(n
404
405Beforchanging:吿s",chrstr);fun(chrstr);printf(n
406Afterchanging:
407%s"zchrstr);)第!处:if(p=='')应改为if(*p=='')第2处:*p=toupper(*(p-l));应改为・(p-l)=toupper(*(p-l));编程题请编写ー个函数,用来删除字符串中的所有空格。イ列如,输入asdafaaz67»则输;H为asdafaaz67o注意:部分源程序给出如下。请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。试题程序:♦include♦include♦includevoidfun(char*str)main(){charstr[81];charMsg[]=nInputastring:H;intn;FILE*out;printf(Msg);gets(str);puts(str);fun(str);printf(M***str:%s
408”,str);out=fopen("out.dat",nwn);fun(Msg);fprintf(out,"%s”,Msg);fclose(out);)答案是:voidfun(char*str)(inti=0;char*p=str;while(*p)|if(*p!=,')(str[i]=*p;i++;}p++;
409)str[I]=,\O,;}第36套填空题Str是全部由数字和字母字符组成的字符串,由num传入字符串的长度,请补充fun函数,该函数的功能是把字符串str中的数字字符转换成数字并存放到整型数组bb中,函数返回数组bb的长度。例如:str="Abcl23e456hui7890”,结果为:1234567890注意:部分源程序给出如下请勿改动主函数main和其他函数中的任何内容,仅在fun函数的横线上填入所编写的若干表达式或语句。试题程序:#include#defineN80intbb[N];intfun(chars口,intbb[],intnum){inti,n=0;for(i=0;i=*011s[i]<=,9,)(bb[n]=2;n++;)return3;)main()(charstr[N];intnum=0,n,i;printf(nEnterastring:
410H;gets(str);while(str[num])num++;n=fun(str,bbznum);printf(n
411bb='*);for(i=0;iintfun(intx,inty,intz){intj,t,n,m;/★★★★★★★★found★★★★★丈・*/j=1;t=m=n=l;/********found********/while(t!=0&&m!=0&&n!=0)(j=j+1;t=j%x;m=j%y;n=j%z;)returnj;}main()(intxl,x2rx3,j;printf("Inputxlx2x3:H;scanf(n%d%d%dM,&xl,&x2,&x3);printf(nxl=%dzx2=%d,x3=%d
412n,xl,x2,x3);j=fun(xl,x2,x3);printf("Theminimalcommonmultipleis:%d
413",j);)第1处:j=l;应改为j=0;第2处:while(t!=0&&m!=0&&n!=0)应改为while(t!=0lln!=0)
414编程题假定输入的字符串中只包含字母和・号。请编写函数FUN,它的功能是:使字符串中前导*号全部移到字符串的尾部。例如,若字符串中的内容为*******A*BC*DEF*G****,移动后,字符串中的内容应当是a*BC*DEF*G***********。在编写函数时,不得使用C语言提供的字符串函数。注意:部分源程序给出如下。请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。试题程序:♦include#includevoidfun(char*a)
415}main(){chars[81]z*p;FILE*out;chartest[4][80]={n*******A*BC*DEF*G****nzMA******B*CD**EF*G*",n****A****G*f\M*d**b**a**e*n};inti;printf(nEnterastring:
416n);gets(s);fun(s);printf(nThestringaftermoveing:
417H);puts(s);out=fopen("〇ut・dat",Hwn);for(i=0;i<4;i++){fun(test[i]);fprintf(out,"%s
418",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]='\0,;}第37套填空题从键盘输入ー组无符号整数并保存在数组xx[N]中,以整数〇结束输入,要求这些数的最大位数不超过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,n0;intg,s;for(i=0;i5)}return3;)main(){intxx[N];intyy[N];intnum=0,n=0,i=0;printf(nInputnumber:
419n);do{scanf(M%unrSixx[num]);}while(xx[num++]!=0);n=fun(xx,yy,num);printf(n
420yy='*);for(i=0;i421注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!试题程序:#include♦include♦include♦defineN80intfun(char*s,char*t)(intn;char*p,*r;n=0;/★★★★★★★★£〇und★★★★★★★★/P=&s[0];*r=t;while(*p){if(*r==*p){r++;if(*r==*\0*)(n++;/********found********/iiiO})P++;)returnn;)main()chara[N]zb[N];intm;printf(n
422Pleaseenterstringa:n);gets(a);printf(n
423Pleaseentersubstringb:H);gets(b);m=fun(a,b);m=printf(H
424Theresultis:m=%d
425H,m);}第1处:*r=l;应改为r=l;或r=&l[〇];第2处:应填r=t;或r=&t[O];编程题某学生的记录由学号、8门课程成绩和平均分组成,学号和8门课程的成绩已在主函数中给出。请编写函数FUN,它的功能是:求出该学生的平均分并放在记录的AVE成员中。请自己定义正确的形参。例如,若学生的成绩是85.5,76,69.5,85,91,72,64.5,875则他的平均分应当是78.875〇注意:部分源程序给出如下。请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。试题程序:#include#defineN8typedefstruct{charnum[10];doubles[N];doubleave;}STREC;voidfun(STREC*p)}main()(STRECs={"GA005”,85.5,フ6,69.5,85,91,フ2,64.5,87.5};inti;FILE*out;fun(&s);printf("The%s1sstudentdata:
426n,s.num);for(i=0;i427n,s.s[i]);printf(n
428ave=%7.3f
429",s.ave);out=fopen("out.dat",nw");fprintf(out,"The%s'sstudentdata:
430n,s.num);for(i=0;i431M,s.s[i]);fprintf(out,”
432ave=%7.3f
433M,s.ave);fclose(out);)答案是:voidfun(STREC*p)(
434doubleav=0.0;inti;for(i=0;is[i];av/=N;p->ave=av;)第38套填空题请补充fun函数,该函数的功能是判断一个数的个位数字和百位数字之和是否等于其十位上的数字,是则返回''yes!“,是否返回”no!”.注意:部分源程序给出如下请勿改动主函数main和其他函数中的任何内容,仅在fun函数的横线上填入所编写的若干表达式或语句。试题程序:♦include♦includechar*fun(intn){intg,s,b;g=n%10;s=n/10%10;b=1;if((g+b)==s)return2;elsereturn3;}main()(intnum=0;printf(n******Inputdata*******
435M);scanf(n%dn,&num);printf("
436
437
438");printf(n******Theresult*******
439H);printf("
440
441
442%s”,fun(num));)第1处填空:n/100%10第2处填空:"yes!”第3处填空:”no!”改错题下列给定程序中,函数fun的功能是:通过某种方式实现两个变量值的交换,规定下允许增加语句和表达式。例如变量a中的值原为8,b中的值原为3,程序运行后a中的值为3,b的值为8。请改正程序中的错误,使其能得出正确结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!试题程序:♦include♦includeintfun(int*xzinty){intt;/★★★★★★★★found★★★★★★★*/t=x;x=y;/★★★★文***/return(y);}main(){inta=3,b=8;printf(n%d%d
443H,a,b);b=fun(&a,b);printf(n%d%d
444”,a,b);}第1处:t=x;x=y;应改为仁・x;*x二y;第2处:retum(y);应改为return⑴;或returnt;编程题请编写函数FUN,它的功能是:求出SS所指字符串中指定字符的个数,并返回此值。例如,若输入字符串123412132,输入字符1,则输出3。注意:部分源程序给出如下。请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干・语句。试题程序:#include#include
445#include#defineM81intfun(char*sszcharc)}main(){chara[M],ch;FILE*out;printf(n
446Pleaseenterastring:n);gets(a);printf(n
447Pleaseenterachar:M);ch=getchar();printf(n
448Thenumberofthecharis:%d
449",fun(a,ch));out=fopen("〇ut.dat",nwn);strcpy(a,"Thenumberofthecharis:");fprintf(out,"%d",fun(a,'1));fclose(out);)答案是:intfun(char*ss,charc)(intn=0;while(*ss)(if(*ss=c)n++;ss++;}returnn;)第39套填空题请补充main函数,该函数的功能是:从•个字符串中截取前面若干个给定字符数的子字符串。其冲,strl指向原字符串,截取后的字符串存放在str2所指的字符数组中,n中存放预截取的字符个数。例如,当strl="abcdefg”,然后输入3,则str2ゴabc”.注意:部分源程序给出如下仅在横线上填入所编写的若干表达式或语句,请勿改动函数中的任何内容。试题程序:#include#include#defineLEN80main()(charstrl[LEN],str2[LEN];intn,i;printf("Enterthestring:
450");gets(strl);printf(nEnterthepositionofthestringdeleted:n);scanf(1);for(i=0;i451",3);}第1处填空:“%d”,&n第2处填空:str2[i]=strl[i]第3处填空:str2
452改错题下列给定程序中,函数fun的功能是,将s所指字符串的正序和反序进行连接,形成一个新串放在t所指的数组中,例如,当s所指这字符串为ABCD时,则t所指字符串中的内容应为ABCDDCBA。请改正程序中的错误,使其能得出正确结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!试题程序:#include♦include♦include/********found********/voidfun(chars,chart)(inti,d;d=strlen(s);for(i=0;i453PleaseenterstringS:n);scanf(n%snzs);fun(s,t);printf(n
454Theresultis:%s
455",t);}第1处:voidfun(chars,chart)应改为voidfun(char*s;char*t)第2处:t[2*d-l]='、〇';应改为t[2*d]='ゝ〇';或t[d+i]='ゝ〇';或t[2*d]=0;或t[d+i]=O;编程题请编写函数FUN,该函数的功能是:移动ー维数组中的内容:若数组中有N个整数,要求把下标从。到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的花括号中填入所编写的若干语句。试题程序:#include♦defineN80voidfun(int*w,intp,intn)(}main()inta[N]={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15};int1,p,n=15;FILE*out;inttest[N]={1,1,2,3,5,8,13,21,34,55,89,144};printf(MTheoriginaldata:
456H);for(i=0;i457
458Enterp:n);scanf(n%dn,&p);fun(a,p,n);printf(n
459Thedataaftermoving:
460H;for(i=0;i461
462M);out=fopen("out.dat","w");fun(test,6,12);for(i=0;i<12;i++)fprintf(out,"%d
463",test[i]);fclose(out);)答案是:voidfun(int*w,intp,intn)(intb[N],I,j=O;for(i=0;i<=p;i++)b[i]=w[i];for(i=p+l;i464w[j]=w[i];j++;)for(i=0;i<=p;i++)(w[j]=b[i];j++;))第40套填空题请补充main函数,该函数的功能是:从键盘出入一个字符串并保存在字符strl中,把字符串str!中下标为偶数的字符保存在字符串str2中并输出。例如,当strl=''abcdefg”时,则str2=''aceg”。注意:部分源程序给出如下仅在横线上填入所编写的若干表达式或语句,请勿改动函数中的任何内容。试题程序:♦include♦include♦defineLEN80main(){charstrl[LEN],str2[LEN];char*pl=strl,*p2=str2;inti=0,j=0;printf("Enterthestring:
465");scanf(1);printf("******theorigialstring********
466");while(*(pl+j))(printf("2",*(pl+j));j++;)for(i=0;i467Thenewstringis:%s
468",3);)第1处填空:“%s”,strl第2处填空:%c第3处填空:str2改错题下列给定程序中,函数fun的功能是:将n个无序整数从小到大排序。请改正程序中的错误,使其能得出正确结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!试题程序:#include♦include♦includefun(intn,int*a){inti,j,p,t;for(j=0;ja[i])/★★★★★★★★found*★文**★★★It=i;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%4dn,*z);if(!(i%10))printf(H
469n);}printf(n
470n);)main(){intaa[20]={9,3,〇,4,1,2,5,6,8,10,7},n=11;printf(n
471
472Beforesorting%dnumbers:
473n,n);putarr(n,aa);fun(n,aa);printf(n
474Aftersorting%dnumbers:
475M,n);putarr(n,aa);)第1处:foi•(冃+1田〈!!・13++)应改为for(i=j+1;i476例如,字符串原有的内容为ABCDEFGHIJK,M的值为3,移动后,字符串中的内容应该是DEFGHIJKABC。注意:部分源程序给出如下。请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。试题程序:♦include♦include♦defineN80voidfun(char*wzintm)}main(){chara[N]=nABCDEFGHIJKn;intm;FILE*out;printf(nTheoriginalstring:
477n);puts(a);printf(n
478
479Enterm:n);scanfド%d”,&m);fun(a,m);printf(11
480Thestringaftermoving:
481H);puts(a);printf("ヽn
482");out=fopen("out.dat",nwn);fun(a,strlen(a)-m);fun(a,3);fprintf(out,"%s",a);fclose(out);)答案是:voidfun(char*w,intm){charb[N];intI,j=0;for(i=0;i#includemain(){
483longintn;printf("Enterthedata:
484H);scanf(1);printf(M******theorigialdata********
485");if(n<0)2printf(''
486
487H);printf(—3一);)第二题:改错题下列给定程序是建立一个带头结点的单向链表,并用随机函数为各结点赋值。函数fun的功能是将单向链表结点(不包括头结点)数据域为偶数的值累加起来,并且作为函数值返回。请改正函数fun中的错误,使它能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!#include#include#includetypedefstructaa{intdata;structaa*next;}NODE;intfun(NODE*h)(intsum=0;NODE*p;p=h->next;/********found********/while(p->next){if(p->data%2==0)sum+=p->data;/********found********/p=h->next;}returnsum;)NODE*creatlink(intn){NODE*h,*p,*s;inti;h=p=(NODE*)malloc(sizeof(NODE));for(i=l;idata=rand()%16;s->next=p->next;p->next=s;p=p->next;}p->next=NULL;returnh;}outlink(NODE*h)NODE*p;p=h->next;printf(M
488
489THELIST:
490
491HEAD");while(p)printf(H->%d**,p->data);p=p->next;)printf(H
492n);)main()(NODE*head;intsum;head=creatlink(l0);outlink(head);sum=fun(head);printf("
493SUM二%d",sum);)第三题:编程题请编写函数fun,该函数的功能是;将M行N列的二维数组中的字符数据,按列的顺序依次放到ー个字符串中。例如,若二
494维数组中的数据为:WWWWSSSSHHHH则字符串中的内容应是WSHWSHWSHo请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。#include#defineM3#defineN4voidfun(char(*s)[N],char*b)}main(){charal100],w[M][N]={{'w';w;V/w1),{S,S,S,S},{};inti,j;FILE*out;printf(HThematrix:
495M);for(i=0;i496H);)fun(w,a);printf(uTheAstring:
497n);puts(a);printf(n
498
499n);out=fopen(',out.datn,nwn);fprintf(out,n%s';a);fclose(out);}答案:第一题:第!处填空:“%Id”,&n第2处填空:n=-n;或n*=-l第3处填空:“%ld”,n第二题:第!处: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二"de123456789abc0908”;char*p=str;printf(M******theorigialdata********
500");puts(str);for(i=0;i501b[i]=0;while(*p)(switch(*p)(case'O':b[0]++;break;caseT:b[l]++;break;case'2':b[2]++;break;case3:b[3]++;break;case'4':b[4]++;break;case'5':b[5]++;break;case'6':b[6]++;break;case'7*:b[7]++;break;case'8':b[8]++;break;case'9':b[9]++;break;default:b[10]++;break;}P++;}printf("******theresult********
502");for(i=0;i<10;i++)printf("
503%d:%d",i,b[i]);printf("
504othercharacter:%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];t[j]=ヘ0’;)main()(chars[N],t[N];printf("
505Pleaseentherstrings:");
506gets(s);fun(s,t);printf("
507Theresultis:%s
508",t);)程序题下列程序定义了N*N的二维数组,并在主函数中自动赋值.请编写函数fun(inta[][N],intn),该函数的功能是:使数组右上半三角元素中的值乘以m.例如:若m的值为2,a数组中的值为197a=238则返回主程序后a数组中的值为2181426164512请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句,#include#include#include#include#defineN5voidfun(inta[][N],intm){inti,j;for(j=0;j509M);for(i=0;i510");)m=rand()%4;printf(',m=%4d
511,\m);fun(a,m);printf(MTHERESULT");for(i=0;i512");}out=fopenC'out.dat'1,"w'1);for(i=0;i513");}fclose(out);
514)第43套第43题的填空题请补充fun函数,该函数的功能是:按0到9统计ー个字符串中的奇数数字字符各自出现的次数,结果保存在数组num中。注意:不能使用字符串库函数。例如:输入:"x=1123.456+0.909*bc”,结果为:1=2,3=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>='0'&&*p<='9')bb[*p-t0,]++;P++;)for(i=1,j=0;i<10;i=i+2,j++)num[j]=bb[i];main()charstr[N];intnum[10],k;printf(n
515Pleaseenteracharstring:'*);gets(str);printf(**
516*******Theoriginalstring******
517**);puts(str);fun(str,num);printf(**
518*******Thenumberofletter******
519**);for(k=0;k<5;k++)(printf('*
520'*);printf('*%d=%d**,2*k+l,num[k]);printf("
521");)第43题的改错题下列给定程序中,函数fun的功能是:找出100至n(不大于1000)之间三个位上的数字都相等的所有整数,把这些整数放在s所指数组中,个数作为函数值返回。请改正函数fun中的错误,使它能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!#include#defineN100intfun(int*s,intn)(inti,j,k,a,b,c;j=0;for(i=100;i522}main()(inta[N],n,num=0,i;do(printf(u
523Entern(<=1000):n);scanf(*'%d*',&n);}while(n>1000);num=fun(a,n);printf(',
524
525Theresult:
526**);for(i=0;i527
528**);第43题的编程题编写ー个函数,从传入的num个字符串中找出最长的ー个字符串,传回该串地址(用・***作为结朿输入的标请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中秘编写的若干语句。#include#include#includechar*fun(char(*a)[81],intnum){inti;char*max;max=a[O];for(i=0;i<=num;i++)if(strlen(max)529max=%s
530,',max);out=fopen(nout.datn,"w");strcpy(ss[O],"Oh,");strcpy(ss[l],"you'1);strcpy(ss[2],MwantM);strcpy(ss[3],"some1');strcpy(ss[4],"too?!?");fprintf(out,"%s",fun(ss,5));fclose(out);1答案第一题*p或・p!=0或0!=*pbbドp-5++或bb[*p-40,]+=lnum|j]=bb[i]第二题k=n;改为k=I;b=k/10;改为b=k%10;第三题
531char*fun(char(*a)[81],intnum){inti;char*max;max=a[0];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()(chara[10]=MaBCDeFgHH,b[10]=MABcdM,c[80]={'、〇'};fun(a,b,c);printf("Thestringa:");puts(a);printf("Thestringb:");puts(b);printf("Theresult:");puts(c);)2改错题下列给出程序中,函数fun的功能是:根据形参m的值(2〈=m〈=9),在m行m列的二维数组中存放如下所示的数据,由main()函数输出。例如,若输入21若输入4则输出:121则输出:112342412468|3|4请改正程序的错误,使它能得出正确的结果。注意:不要改动main函数,不得增行或删行,691281216也不得更改持续的结构#include#include#defineM10inta[M][M]={0};/********found********/fun(int()*a[M],intm)(intj,k;for(j=0;j532M);
533)}3编程题编写一个函数,该函数可以统计ー个长度为2的字符串在ー个字符串的次数。例如,假定输入的字符串为:asdasasdfgasdaszx67asdmklo,子字符串为as,则应输出6〇请勿改动主函数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=='、〇')}n++;str++;)returnn;)main()(charstr[81],substr[3];intn;FILE*out;printf("输入主字符串:");gets(str);printf("输入子字符串:");gets(substr);puts(str);puts(substr);n=fun(str,substr);printf(',n=%d
534M,n);out=fopen(”〇ut.dat“,”w”);strcpy(str,"asdasasdfgasdaszx67asdmkloH);strcpy(substr,"as”);fprintf(out,H%d",fun(str,substr));fclose(out);)第一题:填空题请补充fun函数,该函数的功能是:先将在字符串s中的字符按逆序存放到t串中,然后把s中的字符按正序连接到t串的后面。例如:s中的字符串为ABCDE时,则t中的字符串应为EDCBAABCDE。请勿改动主函数main和其他函数中的任何内容,仅在fun函数的横线上填入所编写的若干表达式或语句。#include#include#includevoidfun(char*s,char*t)(intsi,i;si=strlen(s);for(i=0;i535Pleaseenterstrings:");scanf("%s",s);fun(s,t);printf("Theresultis:%s
536",t);}
537参考答案:i:sl-i-1或sl-l-i2:2*s!或sl*2第二题:改错题下列给定程序中,函数fun的功能是:将s所指字符串中最后一次出现的tl所指子串替换成t2所指子串,所形成的新串放在w所指的数据中。在此处,要求tl和t2所指字符串的长度相同。例如,当s所指字符串中的内容为abcdabfabc,tl所指子串的内容为ab,t2所指子串中的内容为99时,结果,在w所指的数组中的内容为abcdabf99co请改正程序中的错误,使它能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!#include#include#include/********found********/voidfun(char*s,tl,t2,w){char*p,*r,*a;strcpy(w,s);/********found********/while(w)(P=w;r=tl;while(*r)if(*r==*p){r++;p++;}else(break;)if(*r==AO1)a=w;w++;)r=t2;while(*r){*a=*r;a++;r++;})main(){chars[100],tl[100],t2[100],w[100J;printf(,'
538PleaseenterstringS:n);scanf("%sn,s);printf("
539Pleaseentersubstringtl:H);scanf(H%sM,tl);printf("ヽnPleaseentersubstringt2:H);scanf("%s”,t2);if(strlen(tl)==strlen(t2)){fun(s,tl,t2,w);printf(H
540Theresultis:%s
541u,w);}else{printf("
542Error:strlen(t1)!=strlen(⑵
543");})参考答案:1: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。
544请勿改动主函数main和其他函数中的任何内容,仅在函数的花括号中填入所编写的若干语句。参考答案:voidfun(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;i545",k,a[k]);)第二题:已知一个数列从第0项开始的前三项分别为0、〇、1,以后的各项都是其相邻的前三项之和。下列给定程序中,函数fun的功能是:计算并输出该数列前n项的平方根之和sum。n的值通过形参传入。例如,当n=10时,程序输出结果应为23.197745。请改正程序中的错误,使程序能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!#include#include#include/********found********/fun(intn){doublesum,sO,si,s2,s;intk;sum=1.0;if(n<=2)sum=0.0;sO=0.0;si=0.0;s2=1.0;for(k=4;k<=n;k++)(s=s0+sl+s2;sum+=sqrt(s);sO=si;51=s2;52—s;1
546/********found********/returnsum)main(){intn;printf(HInputNゴ);scanf("%d",&n);printf(,'%lf
547M,fun(n));)第三题:学生的记录由学号和成绩组成,N名学生的数据已在主函数中放入结构体数组s中,请编写函数fun,它的功能是:按分数的高低排列学生的记录,高分在前。请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。#include#defineN16typedefstruct{charnum[10];ints;}STREC;voidfun(STRECa[])main()(STRECs[N]={ドGAOO5,85},{“GAOO3,76},ドGAOO2,69},{“GA004,85},{“GA0(H,91},{“GA007,72},{“GA008,64},{“GA006,87},ドGA015,85},{“GA013,91},{“GA012,64},ドGA014,91},{“GA0U,66},{“GA017,64},{“GA018,64},ドGA016,72}};inti;FILE*out;fun(s);printf("Thedataaftersorted:
548");for(i=O;i5490);printf(M%s%4d,s[i].num,s[i].s);)printf("
550");out=fopen("out.dat","w");for(i=0;i551");fclose(out);)参考答案:第一题:(l)*k(2)s[i]>max(3)i第二题:第,处fun(intn)应改为doublefun(intn)第二处returnsum应改为returnsum;第三题:voidfun(STRECa[]){inti,j;STRECt;for(i=0;i552第一题:数组xx[N]保存着ー组3位数的无符号正整数,其元素的个数通过变量num传入funn函数。请补充fun函数,该函数的功能是:从数组xx中找出个位和百位的数字相等的所有无符号整数,结果保存在数组yy中,其个数由fun函数返回。例如:当xx[8]={123,231,232,222,424,333,141,544}时,bb[5]={232,222,424,333,141}〇请勿改动主函数main和其他函数中的任何内容,仅在fun函数的横线上填入所编写的若干表达式或语句。#include#include#defineN1000intfun(intxx[],intbb[],intnum)(inti,n=0;intg,b;for(i=0;i553");for(i=0;i554
555
556M);n=fun(xx,yy,num);printf(*'
557yy=");for(i=0;i#include#defineN20/********found********/voidfun(int*a,intn);(inti,m,t,k;for(i=0;i<2;i++){/********found********/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;i558printf(ヽ”);)第三题:请编写ー个函数voidfun(char*ss),其功能是:将字符串ss中所有下标为奇数位置上的字母转换为大写(若该位置上不是字母,则不转换)。例如,若输入abc4EFg,则应输入aBc4EFg.〇请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。#include#include#includevoidfun(char*ss)voidmain(void){chartt[5l];FILE*out;print^'AnPleaseenterancharacterstringwithin50characters:
559n);gets(tt);printf("
560
561Afterchanging,thestring
562%sH,tt);fun(tt);printf("ヽnbecomes'n%s'\tt);out=fopen("〇ut.daビ,“w");strcpy(tt,"Afterchanging,thestring");fun(tt);fprintf(out,"%s",tt);fclose(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='a'&&ss[i]<='z')&&i%2!=〇)ss[i]=ss[i]-32;ss[i]=ヘ〇’;)第48套填空题:请补充fun函数,该函数的功能是:把ー个证书转换成字符串,并到序保存在字符数组str中。例如:当n=12345678时,st匸“87654321二请勿改动主函数main和其他函数中的任何内容,仅在fun函数的横线上填入所编写的若干表达式或语句。改错题:下列给定程序中,函数fun的功能是:从N个字符串中找出最长的那个串,并将其地址作为函数值返回。各字符串在主函数中输入,并放入ー个字符串数组中。请改正程序中的错误,使它能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!编程题:请编写函数fun,其功能是:将两个两位数的正证书a、b合并形成一个证书放在c中。合并的方式是:将a数的十位和个位数依
563次放在c数的千位和十位上,b数的十位和个位数依次放在c数的百位和个位上。例如,当a=45,b=12,调用该项函数后,¢=4152。请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。答案:填空题:#include#include#defineN80charstr[NJ;voidfun(longintn){inti=0;while(1){str[i]=—2一;n/=10;i++;)―3—;}main(){longintn=1234567;printf("******theorigialdata********
564H);printf(,'n=%ldM,n);fun(n);printf(H
565%sn,str);}第一处填空:n>0或Ovn第二处填空:n%10+U或U+n%10第三处填空:str[i]='\O'或str[i]=O改错题:#include#include#defineN5#defineM81/********found********/fun(char(*sq)[N])(inti;char*sp;sp=sq[O];for(i=0;i566'\N);for(i=0;i567TheNstringへn”,N);for(i=0;i568Thelongeststring:
569M);puts(longest);)第一处:fun(char(*sq)[N])应改为char*fun(char(*sq)[M])第二处:returnsq;应改为returnsp;编程题:#include#includevoidfun(inta,intbJong*c)()main(){inta,b;
570longc;FILE*out;printf('Inputa,b:");scanf(H%d%d';&a,&b);fun(a,b,&c);printf("Theresultis:%d
571K,c);out=fopen("out.dat',,Hwn);for(a=10;a<20;a++){fun(a,109-a,&c);fprintf(out,"%d
572n,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从键盘输入,—ク+2—bA-ac2a如果判别式(disc=b*b-4*a*c)小于〇,则要求从新输入a、b、c的值。一无二次方程的求根公式为:ヽ例如,当a=l,b=2,c=l时,方程的两个根分别是:xl=-1.00,x2=-1.00.注意:部分源程序给出如下。仅在横线上填入所编写的若干表达式式语句,勿改动函数中的其他任何内容。#include#includemain()doublea,b,c,disc,xl,x2;doprintf(uInputa,b,c:");scanf("%lf,%lf,%l口&a,&b,&c);disc=b*b-4*a*c;if(disc<0)printf(udisc=%lf
573Inputagain!
574u,disc);}while(_1一);printf("*******theresult*******
575n);xl=(-b+2_(disc))/(2*a);x2=(-b-_3_(disc))/(2*a);printf("
576xl=%6.21f
577x2=%6.21f
578M,xl,x2);)第二题、下列给定程序中,函数fun的功能是:对N名学生的学习成绩,按从高到低顺序找出前m(m<=10)名觉得来,并将这些学生数据存放在ー个动态分配的连续存储区中,此存储区的首地址作为函数值返回。请改正函数fun中的错误,使它能得出正确的结果。注意:不要改动main函数,不得增得或删行,也不得更改程序的结构!#include#include#include#defineN10typedefstructsscharnum[10];ints;}STU;STU*fun(STUa[],intm)(STUb[N],*t;inti,j,k;/********found********/
579*t=malloc(sizeof(STU));for(i=0;ib[j].s)j=i;t[k].num=b[j].num;t[k].s=b|j].s;b[j].s=O;}returnt;}outresult(STUa[],FILE*pf){inti;for(i=0;i580M,a[i].num,a[i].s);fprintf(pf,”
581
582");)main(){STUa[N]={{”A0ド,81},{、A02”,89},ドA03”,66},{MA04M,87},{“A05”,77},{“A06“,90},{“A07”,79},ドA08”,61},{HA09n,80},{“A10”,71});STU*pOrder;inti,m;printfC******TheOriginaldata*****
583");outresult(a,stdout);printf(H
584Givethenumberofthestudentswhohavebetterscore:H);scanf(H%dn,&m);while(m>10)(printf(H
585Givethenumberofthestudentswhohavebetterscore:n);scanf("%d”,&m);}pOrder=fun(a,m);printf(”*****THERESULT*****
586");printf("Thetop:
587");for(i=0;ivm;i++)printf("%s%d
588",pOrder[i].num,pOrder[i].s);free(pOrder);)第三题、请编写函数fun,其功能是:次s所指字符串下标为偶数同时ASCII值为奇数的字符删除,s中剩余的字符形成的新串放在t所指的数组中。例如,若s所指字符串中的内容为ABCDEFG12345,其中字符C的ACSH码值为奇数,在数组的下标为偶数,因些必须删;而字符1的ASCII码值为奇数,在数组中的下标也为奇数,因此不应当删除,其他依此类推。最后t所指的数组中的内容就是BDF12345。请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。#include#include#includevoidfun(char*s,chart[]){)
589main()(chars[lOO],t[IOO];FILE*out;prinlf("ヽnPleaseenterstringS:n);scanf(M%sM,s);fun(s,t);printf("
590Theresultis:%s
591",t);out=fopen("out.dat1*,"wn);strcpy(s,"PleaseenterstringSプ);fun(s,t);fprintf(out,M%sH,t);fclose(out);第50套第一题:请补充fun函数的功能是在字符串的最前端加入n个・号,形成新串,并且覆盖。注意:字符串长度最长允许为フ9。请勿改动主函数main和其他函数中的任何内容,仅在fun函数的横线上填入所写的若干表达式或语句。#include#include#includevoidfun(chars[],intn)(chara[80],*p;inti;P=1;for(i=0;i592Enterastring:*');gets(s);printf(M
593Thestring\"%sV'
594",s);printf(M
595Entern(numberof*):");scanf("%d",&n);fun(s,n);printf("
596Thestringafterinsert:\"%s\"
597",s);}第二题:下列给定程序中函数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;i598Pleaseenterstrings:");scanf("%s",s);
599fun(s,t);printf("Theresultis:%s
600H,t);}第三题:已知学生的记录由学号的学习成绩构成,N名学生的数据已存入a结构体数组中。评估编写函数fun,该函数的功能是:找出成绩最高的学生记录,通过形参返回主函数(规定只有一个最高分)。已给出函数的首部,评估完成该函数。请勿改动主函数main的其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。#include#include#include#defineN10typedefstructsscharnum[10];ints;}STU;voidfun(STUa[],STU*s)main()STUa[N]={{"A01",81},{"A02",89},{"A03",66},{"A04",87},{"A05",77),{"A06",90},{"A07M,79},{"A08",61},{"A09",80},{"A10",71}},m;inti;FILE*out;printf(M*****Theoriginaldata*****
601H);for(i=0;i602”,a[i].num,a[i].s);fun(a,&m);printf(H*****THERESULT****、");printf("Thetop:%s,%d
603”,m.num,m.s);out=fopen("out.dat","w");fprintf(out,H%s
604%dH,m.num,m.s);fclose(out);
605答案:填空题:第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-i];编程题:voidfun(intm,int*k,intxx[])(intI,max;max=a[0],s;for(i=0;imax){max=a[i],s;*s=a[i];第51套第一ー题:请补充fun函数,该函数的功能是把从键盘输入的3个整数按从小到大输出。例如:输入场233214.结果输出142332,注意:部分源程序给出如下。仅在横线上填入所编写的若干表达式或语句,勿改动函数中的其他任何内容。#include#includemain()intx,y,z,t;printf("Inputx,y,z
606n);scanf(,,%d%d%d';&x,&y,&z);if(一1—)t=X;x=y;*/东/y=t;}/*交换x,y的值if(—2—)t=z;z=x;X=t;}/・交换x,z的值if(一3_)y=z;z=t;}/・交换z,y的值printf(n******theresult*******
607u);printf("fromsmalltobig:%d%d%d
608",x,y,z);}第二题:下列给定程序中,函数fun的功能是:将m(l<=m<=10)个字符串连接起来,组成一个新串,放在pt所指字符串中。例如:把3个串abc,CD,EF串连起来,结果是abcCDEF。请改正程序中的错误,使它能计算出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序结构!#include#include#include/********found********/voidfun(charstr[][l,intm,char*pt){intk,q,i;
609for(k=0;k610Pleaseenterm:");scanf("%d”,&m);gets(s[0]);printf("
611Pleaseenter%dstring:
612M,m);for(h=0;h613Theresultis:%s
614",p);)第三题:请编写函数fun,其功能是:将所有大于1小于整数m的非素数存入xx所指数组中,非素数的个数通过k传回。例如,若输入17,则应输出:9和46891012141516。请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。#include#include