全国计算机二级C语言考试

全国计算机二级C语言考试

ID:83018155

大小:317.95 KB

页数:79页

时间:2023-09-19

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

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

1、给定程序中,函数fun的功能是:在带有头结点的单向链表中,查找数据域中值为ch的结点。找到后通过函数值返回该结点在链表中所处的顺序号;若不存在值为ch的结点,函数返回0值。请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。#defineN8typedefstruct1st{intdata;structlist*next;}SLIST;SLIST*creatlist(char*);voidoutlist(SLIST*);intfun(SLIST*h,charch){SLIST*p;intn=0;p=h->next;/*******************/while(p!=1){n++;/**********found**********/if(p->data=ch)return2;elsep=p->next;}return0;}main(){SLIST*head;intk;charch;chara[N]={'m7p\,gVal;wVxVrVd,);head=creatlist(a);outlist(head);printf(HEnteraletter:M);scanf("%c",&ch);/*******************/k=fun(_3-);if(k==0)printf("

1Notfound!

2");elseprintf("Thesequencenumberis:%d

3",k);}第1处:内容为[while(p!=0)]第2处:内容为[if(p->data==ch)returnn;]第3处:内容为[k=fun(head,ch);]2、给定程序modi.c中,函数fun的功能是:给定n个实数,输出平均值,并统计在平均值以上(含平均值)的实际个数。例如,n=8时输入:193.199、195.673、195.757,196.051、196.092、196.596、196.579,196,763所得平均值为:195.838745,在平均值以上的实数个数应为:5请改正程序中的错误,使它能得出正确结果。#include#include#include〈windows.h>intfun(floatx[],intn)/************found************/intj,c=0;floatxa=0.0;for(j=0;j

4,',xa);for(j=0;jxa)C++;returnc;}main(){floatx[100]=(193.199f,l95.673f,195.757f,l96.051f,196.092f,l96.596f,196.579f,196.763f};system(nclsn);printf(,'%d

5,',fun(x,8));第1处:内容为[{intj,c=0;floatxa=0.0;]第2处:内容为[if(x[j]>=xa)]3、假定输入的字符串中只包含字母和*号。请编写函数fun,它的功能是:除了字符串前导和尾部的*号之外,将串中其它*号全部删除。形参h一指向字符串中第一个字母,形参p已指向字符串中最后一个字母。在编写函数时,不得使用C语言提供的字符串函数。例如,字符串中的内容为:****A*BC*DEF*G********,删除后,字符串中的内容应当是:****abcdefg********。在编写函数时,不得使用C语言提供的字符串函数。voidfun(char*a,char*h,char*p){charb[81],*x;inti=0,j=0;while(x

6}SLIST;SLIST*creatlist(int*a);voidoutlist(SLIST*);voidfun(SLIST*h,int*n){SLIST*p;/**********found**********/—1—=0;p=h->next;while(p){(*n)++;/*******************/P=p->2;main(){SLIST*head;inta[N]={12,87,45,32,91,16,20,48),num;head=creatlist(a);outlist(head);/*********nd字*********/fun(3,&num);printf("

7number=%d

8H,num);}第1处:内容为K*n)=0;]第2处:内容为[p=p->next;]第3处:内容为[fun(head,&num);]2、给定程序modi.c中,fun函数的功能是:将n个无序整数从小到大排序。请改正程序中的错误,使它能得出正确结果。fun(intn,int*a){inti,j,p,t;for(j=O;ja[i])/************found************/t=i;if(p!=j){t=a[jj;a[j]=alpj;a[p]=t;}})第1处:内容为[for(i=j+l;i=eps){pi+=one;n++;up=up*n;down=down*(2*n+1);one=(double)up/(double)down;}returnpi*2;)第3题1、给定程序中,函数fun的功能是:计算出带有头结点的单向链表中各结点数据域之和作为函数值返回。请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。#defineN8typedefstruct1st{intdata;structlist*next;}SLIST;SLIST*creatlist(int*);voidoutlist(SLIST*);intfun(SLIST*h){SLIST*p;ints=0;p=h->next;while(p)(/**********found**********/s+=p->1;/**********found**********/p=p->2;)returns;)main(){SLIST*head;inta[N]={12,87,45,32,91,16,20,48);head=creatlist(a);outlist(head);

9printf(',

10sum=%d

11n,fun(3));elsereturnt;第1处:内容为[s+=p->data;]第2处:内容为[p=p->next;]笫3处:内容为[printf("

12sum=%d

13",fun(head));]2、给定程序modi.c中,函数fun的功能是:按顺序给s所指数组中的元素赋予从2开始的偶数,然后再按顺序时每五个元素求一个平均值,并将这些值依次存放在W所指的数组中,若s所指数组中元素的个数不是5的倍数,多余部分忽略不计。例如,s所指数组有14个元素,则只对前10个元素进行处理,不对最后的4个元素求平均值。#defineSIZE20fun(double*s,double*w){intkjdoubleaim;for(k=2,i=0;ishanghai(vCR>为回车键)函数将返回shanghaiochar*fun(char*s,char*t){intfirst=0,second=0;char*p,*q;p=s;q=t;while(*p++!='0')first++;while(*q++!=^1)second++;if(first==second)return$elseif(first>second)return$)第4题1、人员的记录由编号和出生年、月、日组成,N名人员的数据已在主函数中存入结构体数组std中,且编号唯一。函数fun的功能是:找出指定编号人员的数据,作为函数值返回,由主函数输出,若指定编号不存在,返回数据中的编号为空串。请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。#include#include#defineN8typedefstruct{charnum[10];intyear,month,day;}STU;/**********found**********/1fin(STU*std,(har*num){inti;STUa={*'*',9999,99,99);for(i=0;i

14Notfound!

15n);else{printf(M

16Succeed!

17");printf(u%s%d-%d-%d

18",p.num,p.year,p.month,p.day);))第1处:内容为[STU£in(STU*std,char*num)]第2处:内容为[if(strcmp(std「].num,num)==O)]第3处:内容为[return(std[i])J2^给定程序modi.c中,函数fun的功能是:从s所指字符串中,找出t所指子串的个数作为函数值返回。例如,当s所指字符串中的内容为:"abcdabfab",t所指字符串的内容为:“ab”,则函数返回整数3。#include#include#include

19#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++}elsebreak;/************************/if(r=>\O')n++;s++;}returnn;}main()chars[100],t[100];intm;system(HclsM);printf("

20PleaseenterstringS:");scanf(,,%s,',s);printf(u

21Pleaseentersubstringm=fun(s,t);printf(n

22Theresultis:m=%d

23,',m);)第1处:内容为[if(*==*p){r++;p++;}]第2处:内容为[if(*r==W)]3、规定输入的字符串中只包含字母和*号。请编写函数fun,它的功能是:使字符串最前面连续的*号不得多于n个:若多于n个,则删除多余的*号;若少于或等于n个,则什么也不做,字符串中间和尾部的*号不删除。例如,字符串中的内容为:*******A*BC*DEF*G****,若n的值为4,删除后,字符串中的内容应当是:****A*BC*DEF*G****:若n的值为8,则字符串中的内容仍为:*******A*bc*DEF*G****。n的值在主函数中输入。在编写函数时,不得使用C语言提供的字符串函数。voidfun(char*a,intn){charb[81];inti=O,j=O,s=O,k;while(a[i]==**){s++;i++;}if(s>n){for(c=0;k#defineN8typedefstruct{intnum;intyear,month,day;}STU;int£in(STU*std,STU*k,htyear){inti,n=O;for(i=0;i

24Nopersonwasbomin%d

25",year);else{printf("

26Thesepersonswerebomin%d

27H,year);for(i=0;i

28",k[i].num,k[i].year,k[i].month,k[i].day);})第1处:内容为[if(std[i].year==year)]第2处:内容为[k[n++]=std[i];]第3处:内容为[return(n);]2,给定程序modi.c中,函数fun的功能是:将十进制正整数m转换成k(2Wk<9)进制数,并按位输出。例如,若输入8和2,则应输出1000(即十进制数8转换成二进制表示是1000)«#include#inciude#includevoidfun(intm,intk){intaa[20],i;for(i=0;m;i++)(/************found************/aa[i]=m/k;

29m/=k;)/************found************/for(;i;i-)printf(H%dH,aa[i]);)main(){intb,n;system(nclsn);printf("

30Pleaseenteranumberandabase:

31H);scanf(w%d%dH,&n,&b);fun(n,b);printf(,)

32M);)第1处:内容为[aa[i]=m%k;]第2处:内容为[for(i=i-l;i>=0;i—)]3、请编写一个函数fun,它的功能是:计算n门课程的平均分,计算结果作为函数值返回。例如:若有5门课程的成绩是:90.5,72,80,61.5,55,则函数的值为:71.80,floatfun(foat*a,intn){inti;floataverage;doublesum=0;for(i=0;itypedefstruct{intnum;charname[9J;floatscore[3];}STU;void«how(STUtt){inti;printf("%d%s:'\tt.num,tt.name);for(i=0;i<3;i++)printf(,,%5.1f,,tt.score[i]);printf(H

33H);)/*********字found**********/voidmodify(1*ss,floata){inti;for(i=0;i<3;i++)/*********字found**********/ss->2*=a;)main(){STUstd={1,"ZhanghuaM,76.5,78.0,82.0Jfloata;printf("

34Theoriginalnumberandnameandscores:

35");show(std);printf("

36lnputanunber:");scanf(M%f\&a);/*******************/modify(-3—,a);printf("

37Aresultofmodifying:

38H);show(std);}第1处:内容为[voidmxlify(STU*ss,floata)]第2处作:内容为[ss->score[i]*=a;J第3处:内容为[modify(&std,a);]2^给定程序modi.c中,函数fun的功能是:读入一个字符串(长度<20),将该字符串中的所有字符按ASCH码升序排序后输出。例如:若输入:edcba,则应输出:abcde0#defineM20voidfun(chart[])chare;inti,j;/************found************/for(i=strlen(t);i;i-)for(j=0;j

39if(tU]typedefstruct{intnum;charname[10];}PERSON;/*******************/voidfun(PERSON_1—)/**********found**********/_2_temp;if(std[O].num>std[1].num){temp=std[0];std[O]=std[lJ;if(std[0].num>std[2].num){temp=std[0];std[0]=std[2J;if(std[1].num>std[2].num){temp=std[l];std[l]=std[2J;std[1J=temp;}std[2]=temp;}std[2J=temp;}}main()PERSONstd[]={5,,,Zhanghu",2,,'WangLi',,6,,,LinMin,,);inti;/*******************/fun(一3-);printf(H

40Theresultis:

41M);for(i=0;i<3;i++)printf(M%d,%s

42,',std[i].num,std[i].name);)第1处:内容为[void£in(PERSONstd[3])]第2处:内容为[PERSONtemp;]第3处:内容为[fun(std);]2、给定程序modi.c中,函数fun的功能是:通过某种方式实现两个变量值的交换,规定不允许增加语句和表达式。例如变量a中的值为3,b中的值原为8,程序运行后a中的值为8,b中的值为3。intfun(int*x,inty)intt;/************found************/t=x;x=y;/************found************/return(y);)main()inta=3,b=8;system(HclsM);printf(H%d%d

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

44M,a,b);}第1处:内容为[t=*x;*x=y;]第2处:内容为[returnt;]3、学生的记录由学号和成绩组成,N名学生的数据已在主函数中放入结构体数组s中,请编写函数fun,它的功能是:把高于等于平均分的学生数据放在h所指的数组中,高于等于平均分的学生人数通过形参传回,平均分通过函数值返回。doublefun(STREC*a,STREC*b,int*n){inti,j;doubleaver=0;*n=0;for(i=0;i=aver){b[*n].s=a[i].s;for(j=0;j<10;j++)b[*n].num[j]=a[i].num[j];*n=*n+l;return^ver);

45}第8题1、给定程序中,函数fun的功能是:将形参std所指结构体数组中年龄最大者的数据作为函数值返回,并在main函数中输出。请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。#includetypedefstruct{charname[10];intage;}STD;{STDmax;intSTD£in(STDstd[],htn)/**********found,*********/max=1;for(i=l;i

46Theresult:

47");/**********f^)und**********/printf(n

48Name:%s,Age:%d

49”,3,max.age);)第1处:内容为[max=*std;]第2处:内容为[if(max.agevstd[i].age)max=std[i];]第3处:内容为[printf("

50Name:%s,Age:%d

51';max.name,max.age);]2、给定程序modi.c中,函数fun的功能是:计算正整数num的各位上的数字之积,例如,若输入:252,则输出应该是:20o若输入:202,则输出应该是:0o#include#inciude#includelongfun(longnum){/************found************/longk;do{k*=num%10;/************************/num\=10;}while(num);return(k);)main(){longn;systemC^cls");printf(HPleaseenteranumber:n);scanf(H%ldn,&n);printf(,,

52%ld

53,,,fun(n));}第1处:内容为[longk=l;]第2处:内容为[num/=10;]3、学生的记录由学号和成绩组成,N名学生的数据已在主函数中放入结构体数组s中,请编写函数fun,它的功能是:按分数的高低排列学生的记录,高分在前。voidfun(STRECa[]){inti,j,p,t,k;charh;for(i=0;in[j])_2_;if(k!=i){strcpy(t,ss[i]);strcpy(ss[i],ss[k]);/*********nd**********/strcpy(ss[k],3);n[k]=n[i];

54}}}第1处:内容为[for(j=i+l;jn[j])k=j;J第3处:内容为[strcpy(ss[k],t);]2、给定程序modi.c中,函数fun的功能是:将字符串中的内容按逆序输出,但不改变字符串中的内容。例如,若字符串为abed,则应输出:deba。请改正程序中的错误,使它能得出正确结果.#include/************[ound************/fun(chara){if(*a){fun(a+l);/************[ound************/printf(H%cM*a);}}main(){charj[10]=,'abcdn;primf("处理前字符串=%s

55处理后字符串=",s);fun(s);printf(H

56");}第1处:内容为[fun(char*a)]第2处:内容为[printf(”%c”,*a);]3、函数fun的功能是:将两个两位数的正整数a、b合并形成一个整数放在c中。合并的方式是:将a数的上位和个位数依次放在c数的百位和个位上,b数的十位和个位数依次放在c数的十位和千位上。例如,当a=45,b=12。调用该函数后,c=2415。voidfun(inta,intb,long*c)inta_up,a_low,b_up,b_low;a_up=a/10;ajow=a%10;b_up=b/10;b」ow二b%10;*c=bjow*1000+a_up*100+b_up*10+a_low;)第10题1、给定程序中,函数fun的功能是:求出形参SS所指字符串数组中最长字符串的长度,其余字符串左边用字符*补齐,使其与最长的字符串等长。字符用数组中共有M个字符串,且串长n){/**********found**********/n=len;))for(i=0;i=0;j--)ss[i][m-]=ss[i]|j];for(j=0;j#include#defineFU(m,n)(m/n)floatfun(floata,floatb,floatc){floatxalue;/x***********found************/value=FU(a+b,a-b)+FU(c+b,c-b);/***********ound************/Return(Value);)main(){floatx,yz,sum;printf("Inputxyz:");scanf("%f%f%f',&x,&y,&z);printf("x=%f,y=%f,z=%f

57H,x,y,z);if(x==ylly==z){printf(nDataerror!

58n);}sum=fun(x,y,z);printf("Theresultis:%5.2f

59n,sum);)第1处:内容为[value=FU((a+b),(a・b))+FU((c+b),(c・b));]第2处:内容为[retum(value);]3、学生的记录由学号和成绩组成,N名学生的数据上在主函数中放入结构体数组s中,请编写函数fun,它的功能是:函数返回指定学号的学生数据,指定的学号在主函数中输入。若没找到指定学号,在结构体变量中给学号置空串,给成绩置-1,作为函数值返回。(用于字符串比较的函数是strcmp)o

60STRECfun(STREC*a,char*b){inti,f=O;STRECp;p=a[O];for(i=0;idata=1;q=h;p=h->next;while(p!=NULL&&x>p->data){/**********found**********/q=一2一;p=p->next;}s->next=p;/**********found**********/q->next=3;}第1处:内容为[s->data=x;]第2处:内容为[q=p;]第3处:内容为[q->next=s;]2、N个有序整数数列已放在•维数组中,给定程序modi.c中,函数fun的功能是:利用折半查找算法查找整数m在数组中的位置。若找到,返回其下标值;反之,返回-1。折半查找的基本算法是:每次查找前先确定数组中待查的范围:low和high(lowvhigh),施把m与中间位置(mid)中元素的值进行比较。如果m的值大于中间位置元素中的值,则下一次的查找范围放在中间位置之后的元素中:反之,下一次的查找范围落在中间位置之前的元素中。直到low>high,查找结束。请改正程序中的错误,使它能得出正确结果。#defineN10/************found************/voidfun(inta[],intm){intbw=0,high=N-1,mid;while(low<=high){mid=(low+high)/2;if(m=a[mid])low=mid+l;elsereturn(mid);)retum(-l);)第1处:内容为[fun(inta[],intm)]第2处:内容为[elseif(m>a[mid])]3、学生的记录由学号和成绩组成,N名学生的数据已在主函数中放入结构体数组s中,请编写函数fun,它的功能是:把指定分数范围内的学生数据放在h所指的数组中,分数范围内的学生人数由函数值返回。例如,输入的分数是6069,则应当把分数在60到69的学生数据进行输出,包含60分和69分的学生数据。主函数中将把60放在low中,把69放在heigh中。intfun(STREC*a,STREC*b,intl.inth){inti,j=O,k,f=O;for(i=0;i=l)&&(a[i].s<=h)){for(k=0;k<10;k++)b[j].num[k]=a[i].num[k];b[j].s=a[i].s;j++;f++;)return(f);第12题1、给定程序的功能是:调用函数fun将指定源文件中的内容复制到指定的目标文件中,复制成功时函数返回

61值为1,失败时返回值为Oo在复制的过程中,把复制的内容输出到终端屏幕。主函数中源文件名放在变量sfname中,目标文件名放在变量tfname中。请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。intfun(char*source,char*target)charch;/**********,ound**********/if((fs=fopen(source,1))==NULL)return0;if((ft=fopen(target,,,w,,))==NULL)return0;printf("

62Thedatainfile:

63");ch=fgetc(fs);/**********found字*********/while(!feof(2)){putchar(ch);/*******************/fputc(ch,3);ch=fgetc(fs);fclose(fs);fclose(ft);printf(n

64

65M);return1;第1第2第32、处:处:处:内容为[if((fs=fopen(source,"r"))==NULL)]内容为[while(!feof(fs))]内容为[fputc(ch,ft);]给定程序modi.c中函数fun的功能是:用递归算法计算斐波拉契数列中第n项的值,从第1项起,斐波拉契级数序列为:1、1、2、3、5,8、13、21、……例如,若给n输入7,该项的斐波拉契级数值为:13o#includelongfun(intg)/************found************/switch(g);{case0:retum0;/***********************/case1;case2:retum1;}return(fun(g-1)+fun(g-2));}main(){longfb;intn;printf(nInputn:,,);scanf("%d,',&n);printf(',n=%d

66',,n);fib=fun(n);printf(,'fib=%d

67

68,,,fib);第1处:内容为[switch(g)]第2处:内容为[casel:case2:retum1;]3、N名学生的成绩已在主函数中放入一个带头节点的链表结构中,h指向链表的头节点。请编写函数fun,它的功能是:求出平均分,由函数值返回。例如,若学生的成绩是:85,76,69,85,91,72,64,87;则平均分应当是:78.625odoublefun(STREC*h){STREC*p;doubleaver=0;p=h->next;while(p!=0){aver=aver+p->s;p=p->next;)aver=aver/N;returnaver;)第13题1、给定程序中,函数fun的功能是:将自然数1〜10以及它们的平方根写到名为myfile3.txt的文本文件中,然后再顺序读出显示在屏幕上。请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。intfun(char*fname){FILE*fp;inti,n;floatx;if((fp=fopen(fname,W"))==NULL)return0;for(i=l;i<=10;i++)/**********tound**********/fprintf(1,”%d%f

69",i,sqrt((double)i));printf(n

70Succeed!

71n);/**********found**********/2:printf("

72Thedatainfile:

73M);/**********j'iound**********/if((fp=fopen(—3—Jr"))==NULL)return0;fscanf(fp,"%d%f;&n,&x);while(!feof(fp)){printf(H%d%f

74H,n,x);fscanf(fp;,%d%f;&n,&x);}fclose(fp);return1;)main(){charfname[]="myfile3.txtM;fun(fname);)第1处:内容为[fprintf(fp,"%d%f

75”,i,sqrt((double)i));]第2处:内容为[fclose(fp);]第3处:内容为[if((fp二fopen(fname,T))==NULL)]2、给定程序modi.c中,函数fun的功能是:统计子字符串substr在字符串str中出现的次数。例如,若字符串为aaasIkaaas,子字符串为as,则应输出2。fun(char*str,char*substr){inti,j,k,num=0;/************[ound************/

76for(i=0,str[i],i++)for(j=i,k=0;substr[k]==str[j];k++j++)/************found************/If(substr[k+1]==AO'){num++;break;}returnnum;)第1处:内容为[for(i=0;str[i];i++)]第2处:内容为[if(substr[k+l]==V))]3、请编写一个函数unsignedfun(unsignedw),w是一个大于10的无符号整数,若w是n(n22)位的整数,函数求出w的低n-1位的数作为函数值返回。例如:w值为5923,则函数返回923;w值为923,则函数返回23o解法一:unsignedfun(unsignedw){inti,j,sqr=1;unsignedresult;char*str,ch[5];str=ch;for(i=1;(i<6)&&(w>=1);i++){str[i-1]=,0,+w%10;w/=10;}str[i-1]=0;result=str[O]-'O';for(j=l;j=10000)returnw%10000;if(w>=1000)returnw%1000;if(w>=100)returnw%100;returnw%10;)第14题1、给定程序的功能是:从键盘输入若干行文本(每行不超过80个字符),写到文件myfile4.txt中,用-1(独立一行)作为字符串输入结束的标志。然后将文件的内容读出显示在屏幕上。文件的读写分别由自定义函数ReadText和WriteText实现。请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。#includevoidWriteText(FILE*);voidReadText(FILE*);main(){HLE*fp;if((fp=fopen(Hmyfile4.txt,V,wM))=NULL){printf(nopenfail!!

77M);ecit(O);}WriteText(fp);fclose(fp);if((fp=fopen("myfile4.txt,,;'r',))==NULL){printf(Hopenfail!!

78H);ait(0);}ReadText(fp);fclose(fp);}/**********fQund**********/voidWriteText(FILE—1_){charstr[81];printf("

79Enterstringwith-1toend:

80H);gets(str);while(strcmp(str,"-r,)!=0){/**********found**********/fputs(2,fw);fputs(H

81H,fw);gets(str);))voidReadText(FILE*fr){charstr[81];printf(,,

82Readfileandoutputtoscreen:

83");fgets(str,81,fr);while(!feof(fr)){/**********fQund**********/printf("%s",—3_);fgets(str,81,fr);))第1处:内容为[voidWriteText(FILE*fw)]第2处:内容为[fputs(str,fw);fputs("

84",fw);]第3处:内容为[printf("%s",str);]1、给定程序modi.c中,函数fun的功能是:从字符串s中删除所有小写字母c.#includevoidfun(char*s){intij;for(i=j=0;s[i]!='\0';i++)if(s[i]!='c,)/************found************/s|j]=s[i];/************[ound************/s[i]=\0';}

85main(){char$80];printf(nEnterairing:M);gets(s);printf(uTheoiginaliring:M);puts(s);fun(s);printf(HThestringafterdeleted:,,);puts(s);printf(H

86

87H);}第1处:内容为[sU++]=s[i];]第2处:内容为[sUkxr;]3、请编写一个函数intfun(int*s,intt,int*k),用来求出数组的最大元素在数组中的下标,用k返回。例如,输入如下整数:876675896101301401980431451777则输出结果为:6,980intfun(int*s,intt,int*k){intmax_integer=0;inti=0;max_integer=s[0];for(i=0;i

88Oulpuldatatofile!

89H);for(i=0;ivoidfun(float*p,float*q,float*s)/************tound************/float*k;if(*p<*q){k=*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(){floatab,c;printf(nInputabe:");£anf(”%f%f%『,&a,&b,&c);printf(Ha=%4.1f,b=%4.1f,c=%4.1f

90

91n,a,b,c);fun(&a,&b,&c);printf(Ha=%4.1f,b=%4.1f,c=%4.1An

92'\a,b,c);第1处:内容为[floatk;]第2处:内容为[if(*s>*p)]3、请编写一个函数fun,它的功能是:将一个数字字符串转换为一个整数(不得调用C语言提供的将字符串转换为整数的函数)。例如,若输入字符串"-1234”,则函数把它转换为整数值-1234。longfun(char*p)longn=0;intflag=O;while(*p!=W){if(*p=='J)flag=l;elseif(*p=,+,)flag=O;elsen=n*10+(*p-'0');p++;)if(flag=l)n=-n;returnn;}第16题1、给定程序中已建立一个带有头结点的单向链表,在main

93函数中将多次调用fun函数,每调用一次fun函数,输出链表尾部结点中的数据,并释放该结点,使链表缩短。请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。#defineN8typedefstruct1st{intdata;structlist*next;}SLIST;voidfun(SLIST*p){SLIST*t,*s;t=p->next;s=p;while(t->next!=NULL)t=t->1printf(H%d",—2_);s->next=NULL;/**********found**********/free(_3一);}第1处:内容为[t=t->next;]第2处:内容为[printf("%d”,t->data);]第3处:内容为[free(。;]2、给定程序MODI1.C中函数fun的功能是:将tt所指字符串中的小写字母都改为对应的大写字母,其它字符不变。例如,若输入"Ab,cD",则输出"AB,CD"。char*fun(chartt[])inti;for(i=0;tt[i];i++)/*********nd***********/if(('a'<=tt[i])11(tt[i]<='z*))/**********found***********/tt[i]+=32;retum(tt);)main()Ichartt[81];printf("

94Pleaseenterastring:");gets(tt);printf("

95Theresultstringis:

96%s",fun(tt));)第1处:内容为[if(('a,<=tt[i])&&(tt[i]<=Z))]第2处:内容为3、请编写一个函数fun,它的功能是:求出1到m之内(含m)能被7或11整除的所有整数放在数组a中,通过n返回这些数的个数。例如,若传送给m的值为50,则程序输出:711142122283335424449voidfun(intm,int*a,int*n)|inti,count=0;for(i=l;i<=m;i++){if(i%7==0IIi%ll==0){a[count+4-]=i;)*n=count;}第17题1、给定程序中一建立一个带有头结点的单向链表,链表中的各结点按数据域递增有序链接。函数fun的功能是,删除链表中数据域值相同的结点,使之只保留一个。请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。#defineN8typedefstructlist{intdata;structlist*next;}SLIST;voidfun(SJST*h){SLIST*p,*q;p=h->next;if(p!=NULL){q=p->next;

97while(q!=NULL){if(5->data==q->data){p->next=q->next;/**********found**********/free(-1_);/**********nd**********/q=p->2;else{p=q;/**********found**********/q=q->3;)}}}第1处:内容为[free(q);]第2处:内容为[q=p->next;]第3处:内容为[q=q->next;]2、给定程序modi.c中fun函数的功能是:分别统计字符串中大写字母和小写字母的个数。例如:给字符串ss输入:"AAaaBBbl23CCccccd”,则输出结果应为:upper=6,lower=8请改正fun函数中的错误,使它能计算出正确的结里XfS.O#include/**********found**********/voidfun(char*s,inta,intb)while(*s){if(*s>='A1&&*s<='Z')/:,,*********found字*********/a++;if(*s>='a'&&*s<=N)/**********found**********/b++;s++;}}main(){charsllOOJ;intupper=0,lower=0;system(ncls");printf(M

98Pleaseastring:");gets(s);fun(s,&upper,&lower);printf("

99upper=%dlower=%d

100",upper,lower);)第1处:内容为[voidfun(char*s,int*a,int*b)]第2处:内容为[*a=l+*a;]第3处:内容为[++(*b);]1、请编写一个函数ftm,它的功能是:找出一维整型数组元素中最大的值和它所在的卜标,最大的值和它所在的下标通过形参传回。数组元素中的值已在主函数中赋予。主函数中x是数组名,n是x中的数据个数,max存放最大值,index存放最大值所在元素的下标。voidfin(inta[],intn,rit*max,ht*d)(inti,base,subscript;base=a[0];subscript=O;for(i=l;ibase){subscript=i;base=a[i];}}*max=base;*d=subscript;}第18题1、函数fun的功能是:统计长整数n的各个位上出现数字1、2、3的次数,并通过外部(全局)变量cl、c2、c3返回主函数。例如,当n=123H4350时,结果应该为:cl=3c2=lc3=2o请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。#includeintcl,c2,c3;void£in(longn){cl=c2=c3=0;while(n){switch(1)/**********found**********/case1:cl++;2.case2:c2++;3;case3:c3++;)n/=10;))main(){longn=123114350L;fun(n);printf(n

101Theresult:

102n);printf(Hn=%ldcl=%dc2=%dc3=%d

103",n,cI,c2,c3);第1处:内容为[switch(n%10)]第2处:内容为[case1:cl++;break;]第3处:内容为[case2:c2++;break;J2、给定程序modi.c中函数fun的功能是:判断字符ch是否与字符串str中的某个字符相同,若相同,什么也不做;若不同,则插在串的最后。#include#include#include#include/**********found**********/

104voidfun(charstr,charch){while(*str&&*str!=ch)str++;/**********found**********/if(*str=(h){str[0]=ch;/**********found字*********/str[l]=O;)}main(){chars[81J,c;system,cis");printf(M

105Pleaseenterastring:

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

107Pleaseenterthecharactertosearch:");c=getchar();fun(s,c);printf(M

108Theresultis%s

109H,s);)第1处:内容为[voidfun(char*str,charch)]第2处:内容为[if(*str!=ch)]第3处:内容为[str[l]=为3、函数fun的功能是:将s所指字符串中下标为偶数的字符删除,串中剩余字符形成的新串放在t所指数组中。例如,当S所指字符串中的内容为:"ABCDEFGHIJK",在t所指数组中的内容应是:"BDFHJ"。voidfun(char*s,chart[]){inti,slenth,n=O;slenth=strlen(s);for(i=l;i#includecharfun(charch)(/**********fbund**********/if((ch>='a,)1(ch<='z,))returnch-'a'+'A';if(isupper(ch))/**********nd**********/returnch痴二2;/*********不found**********/return3;)main(){charcl,(2;printf(H

110Theesult:

111");cl='w*;c2=£in(cl);printf(Mcl=%cc2=%c

112M,cl,c2);cl='W';c2=£m(cl);printf(Hcl=%cc2=%c

113M,c1,c2);cl=8;c2=£in(cl);printf(Hcl=%cc2=%c

114M,c1,c2);}第1处:内容为[if((ch>=,a)&&(ch<='z))]第2处:内容为[returnchfa'-'A';]第3处:内容为[returnch;]2、已知一个数列的前三项分别为0,0,1,以后的各项都是其相邻的前三项之和。给定程序modi.c中函数fun的功能是:计算并输出该数列前n项的平方根之和sum。n的值通过形参传入。例如,当n=10时,程序的输出结果应为:23.197745«请改正函数fun中的错误,使程序能输出正确的结果。#include#include#include#include/************found************/fun(intn){doublesum,sO,4,s2,$htk;sum=1.0;if(n<=2)sum=0.0;sO=0.0;s1=0.0;s2=1.0;for(k=4;k<=n;k++){s=sO+si+s2;sum+=sqrt(s);sO=si;si=s2;s2=s;}/************tound************/returnsum}main(){intn;system(uclsu);printf("InputN=H);scanf("%d”,&n);prinlf("%An”,fun(n));}第1处:内容为[doublefun(n)]第2处:内容为[returnsum;]3、请编写函数fun,其功能是:计算并输出给定数组(长度为9)中每相邻两个元素之平均值的平方根之和。例如,给定数组中的9个元素依次为12.0、34.0、4.0、23.0、34.0、45.0、18.0、3.0、11.0,输出应为:s=35.951014»doublefun(doublex[9]){inti;

115doubleavg=0.0,sum=0.0;for(i=0;i<8;i++){avg=(x[i]+x[i+l])/2;sum+=sqrt(avg);returnsum;)第20题1、给定程序中,函数fun的功能是:有NXN矩阵,根据给定的m(m<=N)值,将每行元素中的值均右移m个位置,左边置为0。例如,N=3,m=2,有下列矩阵123456789程序执行结果为001004007请在程序的下划线处填入正确的内容并把F划线删除,使程序得出正确结果。#include#defineN4voidfin(int(*t)[NJ,ntm){inti,j/*******************/for(i=0;i=0;j-)/**********found字*********/t[i]|j+一2一]=t[i][j];for(j=0;j<_3—;j++)t[i]|j]=O;))main(){intt[][N]={21,12,13,24,25,16,47,38,29,H,32,54,42,21,33,10),i,j,m;printf(,'

116Theoriginalarray:

117u);for(i=0;i

118");)printf("Inputm(m<=%d):",N);scanf("%d",&m);fun(t,m);printf(H

119Theresultis:

120n);for(i=0;i

121");))第1处:内容为[for(i=0;i#include#includedoublefun(intx[])(/************found************/intsum=0.0;intc=0,i=0;while(x[i]!=0){if(x[i]>0){sum+=x[i];C++;}i++;}/************found************/sum\=c;returnsum;)main(){intx11000];inti=0;system("cls");printf("

122Pleaseentersomedata(endwith0):“);do{scanf("%d'\&x[i]);}while(x[i++]!=0);printf(,,%f

123M,fun(x));)第1处:内容为[floatsum=0.0;]第2处:内容为[sum=sum/c;]3、请编写函数fun,其功能是:计算并输出下列多项式的值:11111S=(l——)+()+…+()2342n-l2n例如,在主函数中从键盘给n输入8后,输出为:s=0.662872o注意:要求n的值大于1但不大于100。部分源程序在文件prog.c中。doublefun(intn){inti;doublesum=0.0;if(n>l&&n<=100)

124{for(i=l;i<=n;i++)sum+=1.0/(2*i-1)-1.0/(2*i);)returnsum;)第21题1、给定程序中,函数fun的功能是:求出形参ss所指字符串数组中最长字符串的长度,将其余字符串右边用字符*补齐,使其与最长的字符串等长。ss所指字符串数组中共有M个字符串,且串长#include#defineM5#defineN20void£in(char(*ss)[NJ){inti,jn,dn=0;for(i=0;ilen)len=n;for(i=0;i

125u);for(i=0;i

126M,ss[i]);printfCXn'1);fun(ss);printf(nTheresultis:

127H);for(i=0;i

128,,,ss[i]);}第1处:内容为[n=strlen(ss[i]);]第2处:内容为[ss[i][n+j]=w;]第3处:内容为[ss[川n+j+1]=、(),;]2、给定程序modi.c中函数fun的功能是:把m(lWmW10)个字符串连接起来,组成一个新串,放入pt中。例如:把3个串:"abc","CD","EF"串连起来,结果是"abcCDEF”。#include#include#include#includeintfun(charstrl][10],htm,(har*pt){/************found************/Intk,q,i;for(k=0;k

129Pleaseentern:n);scanf(n%dM,&n);printf("

130Pleaseenter%dstring:

131M,n);for(h=0;h

132Theesultis:%s

133u,p);)第1处:内容为[intk,q,i;]第2处:内容为[pt[i]=str[k][i];]2、请编写函数fun,它的功能是:计算并输出n(包括n)以内能被5或9整除的所有自然数的倒数之和。例如,在主函数中从键盘给n输入20后,输出为:s=0.583333odoublefun(intn){inti;doublesum=0.0;/*将sum定义为双精度型变量,并给其赋初值为0.0*/if(n>0&&n<=100){for(i=l;i<=n;i++)if(i%5=0lli%9=0)sum+=1.0/i;|returnsum;}第22题1、给定程序中,函数fun的功能是:求ss所指字符串数组中长度最长的字符串所在的行下标,作为函数值返回,并把其串长放在形参n所指变量中。ss所指字符串数组中共有M个字符串,且串长#include#defineM5#defineN20/**********found**********/intfun(char(*ss)1,int*n){inti,k4),bn=0;for(i=0;i*n){/**********found**********/_3—;k=i;}return(k);)main()

134{charss[M][N]={Shanghai1',,'guangzhou,,,,,beijing',,,,tianjing,,;,cChongqing'1);intn,k,i;printf(n

135Theoriginalstringsare:

136u);for(i=0;i

137Thelengthoflongeststringis:%d

138n,n);printf("

139Thelongeststringis:%s

140",ss[k]);}第1处:内容为[int£in(char(*ss)[NJ,ht*n)J第2处:内容为[if(i==0)*n=len;]第3处:内容为[*n=len;]2、给定程序modi.c中函数fun的功能是:从m个学生的成绩中统计出低于平均分的学生人数,此人数由函数值返回,aver返回平均分。例如,若输入8名学生的成绩:80.5607290.59851.58864则低于平均分的学生人数为:4(平均分为:75.5625)»#include#include#include#defineN20intfun(float*s,intn,float*aver){floatave,t=0.0;intcount=0,k,i;for(k=0;k

141Pleaseenterm:");scanf(”%d”,&m);printf(n

142Pleaseenter%dmark:

143",m);for(i=0;i

144Thenumberofstudents:%d

145n,fun(s,m,&aver));printf("Ave=%f

146H,aver);)第1处:内容为[t+=s[k];]第2处:内容为广aver=ave;]3、请编写函数fun,其功能是:计算并输出当x<0.97时下列多项式的值,直至lJIS(n)-S(n-l)lv0.000001为止。0.5(0.5-1)0.5(0.5-1)(0.5-2)0.5(0.5-1)S=l+0.5x+x*2+x*3-+2!3!例如,在主函数中从键盘给x输入0.21后,输出为:s=l.100000。doublefun(doublex)(intn=l;/*循环计数*/doublesn=l;/*累计数*/doublexn=l,xnl=0;/*x的n值,以及x的n・l值;*/while(fabs(xn-xn1)>=0.000001)/*绝对值是否合格*/(xn=xn*x*(0.5-n+l)/n;n+=l;sn+=xn;/*sn累力□上xn*/return(sn);第23题1、给定程序中,函数fun的功能是:求ss所指字符串数组中长度最短的字符串所在的行下标,作为函数值返回,并把其串长放在形参n所指变量中。ss所指字符串数组中共有M个字符串,且串长#include#defineM5#defineN20int£in(char(*ss)[N],ht*n){inti,k=0,bn=N;/**********found**********/for(i=0;i<1;i++){len=strlen(ss[i]);if(i==0)*n=len;if(len2*n){*n=len;k=i;retum(3);)main(){charss[M][N]={',shanghaiM;,guangzhou,,;'beijing,V,tianjing,V'chongqing"};intn,k,i;95-州H嗝originalstringsare:

147H);for(i=()»i

148Thelengthofshorteststringis:%d

149",n);printf(n

150Theshorteststringis:%s

151u,ss[kl);}

152第1处:内容为[for(i=0;i#include#include/***********nd************/voidfun(longs,longt){longsl=10;*t=s%10;while(s>0){s=s/100;*t=s%10*si+*t;/************found************/si=sl*100;})main(){longs,t;systemC^cls");printf(H

153Pleaseenters:H);scanf(H%ldH,&s);fun(s,&t);printf("Theresultis:%ld

154n,t);}第1处:内容为[voidfun(longs,long*。]第2处:内容为⑻=3、请编写函数fun,其功能是:计算并输出给定10个数的方差:r110-10.5S=|—L(Xk-X')A2|L10k=l」110其中X,=—EXk10k=l例如,给定的10个数为95.0、89.0、76.0、65.0、88.0、72.0、85.0、81.0、90.0、56.0,输出为s=l1.730729。doublefun(doublex[10]){ntidoubleavg=0.0;doublesum=0.0;doubleabs=0.0;doublefc;for(i=0;i<10;i++)sum+=x[i];avg=sum/10;for(i=0;i<10;i++)abs+=(x[i]-avg)*(x[i]-avg);fc=sqrt(abs/10);returnft;}第24题1、给定程序中,函数fun的功能是:将s所指字符串中的所有数字字符移到所有非数字字符之后,并保持数字字符串和非数字字符串原有的先后次序。例如,形参s所指的字符串为:def35adh3kjsdf7o执行结果为:defadhkjsdf3537o请在程序的下划线处填入正确的内容并把F划线删除,使程序得出正确的结果。#includevoidfin(char*s){inti,j=0,k=0;chartl[80],2[80];for(i=0;sBlHAO';i++)if(s[i]>='0'&&s[i]<=,9,){/*******************/t2|j]=s[i];一1一;|elsetl[k++]=s[i];t2[j]=0;tl[k]=O;/**********found**********/for(i=0;i

155Theoriginalstringis:%s

156u,s);fun(s);printf(n

157Theresultis:%s

158n,s);)第1处:内容为[t2|j]=s[i];j++;]第2处:内容为[for(i=0;i#include#include/***********nd************/voidfun(longs,longt){longsl=10;s/=10;*t=s%10;/************tound************/while(s<0){s=s/100;

159*t=s%10*sl+*t;si=si*10;))main(){longs,t;system("cls");prinlf("

160Pleaseenters:");scanf("%ld",&s);fun(s,&t);printf("Theresultis:%ld

161",t);)第1处:内容为[voidfun(longs,long*。]第2处:内容为[while(s>0)]3、请编写函数fun,其功能是:计算并输出3到nN间所有素数的平方根之和。例如,在主函数中从键盘给n输入100后,输出为:sum=148.874270o注意:要求n的值大于2但不大于100。部分源程序在文件prog.c中。doublefun(intn)(inti,j=0;/*定义两个整型变量*/doubles=0;/*定义变量s为双精度型*/for(i=3;i<=n;i++){for(j=2;j)s=s+sqrt(i);/*sqrt⑴函数是计算i的平方根*/)returns;/*返回结果*/)第25题1、给定程序中,函数fun的功能是:在形参s所指字符串中的每个数字字符之后插入一个*号。例如,形参s所指的字符串为:def35adh3kjsdf7.执行结果为:def3*5*adh3*kjsdf7*。请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。#includevoid£in(char*s){inti,jn;for(i=0;s[i]!=\0';i++)/**********found**********/if(s[i]>='O'_1—s[i]<=,9,){n=0;/**********,ound**********/while(s[i+l+n]!=2)n++;for(j=i+n+l;j>i;j—)/**********found**********/sU+U=一3—;sU+H;i=i+l;}}main(){chars(80]=Mba3a54cd23an;printf("

162Theoriginalstringis:%s

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

164Theresultis:%s

165*',s);)第1处:内容为[if(s[i]>=O&&s[i]v=9)]第2处:内容为[while(s[i+l+n]!=O)n++;]第3处:内容为[s[j+l]=sU];]2、给定程序modi.c中函数fun的功能是:输出M行M列整数方阵,然后求两条对角线上各元素之和,返回此和数。请改正程序中的错误,使它能得出正确的结果。#include#include#include#defineM5/************found************/intfun(intn,htxx[J[]){inti,jum=O;printf(K

166The%dx%dmatrix:

167M,M,M);for(i=0;i

168");for(i=0;i

169Thesumofallelementson2diagnalsis%d.",fun(M,aa));)第1处:内容为[intfun(intn,intxxWM])]第2处:内容为[printf("%4d",xx[i][j]);]3、请编写函数fun,其功能是:计算并输出S=1+(1+2A0.5)+(1+2A0.5+3A0.5)+—・・・+(1+2八0.5+3八0.5++nA0.5)例如,在主函数中从键盘给n输入20后,输出为:s=534.188884o注意:要求n的值大于1但不大于100。部分源程序在文件prog.c中。doublefun(intn){inti;/*定义一个整形变量刃

170doublefac=1.0;户定义变量fac、sum为双精度型*/doublesum=1.0;if(n>l&&n<=100)for(i=2;i<=n;i++){fac+=sqrt(i);/*使用sqrt()函数求出每一个多项式的值蚓sum+=fac;/*通过sum+=fac;计算出所有多项式之和*/}returnsum;/*返回结果*/}第26题1、给定程序中,函数fun的功能是:统计形参s所指字符串中数字字符出现的次数,并存放在形参t所指的变量中,最后在主函数中输出。例如,形参s所指的字符串为:abcdef35adgh3kjsdf7o输出结果为:4。请在程序的下划线处填入正确的内容并把F划线删除,使程序得出正确的结果。#includevoid£in(char*s,ht*t){inti,n;n=0;/**********fQund**********/for(i=0;—1—!=(int)NULL;i++)/**********found**********/if(s[i]>='0,&&s[i]<=—2—)n++;/*********nd**********/―3—;}main(){chars[80]=,,abcdef35adgh3kjsdf70;intt;printf(H

171Theoriginalstringis:%s

172H,s);fun(s,&t);printf("

173Theresultis:%d

174",t);}第1处:内容为[fbr(i=O;s[i]!=(int)NULL;i++)]第2处:内容为[if(s[i]>=O&&s[i]<='9')n++;]第3处:内容为[*t=n;]2、给定程序modi.c中函数fun的功能是:将长整型数中每一位上为奇数的数依次取出,构成一个新数放在t中。高位仍在高位,低位仍在低位。例如,当s中的数为:87653142时,t中的数为:7531.#include#include#includevoidfun(longs,long*t){htd;longsl=l;/************found************/t=0;while(s>0){d=蜕10;/************found************/if(d%2==0){*t=d*si+*t;si*=10;}s/=10;})main(){longs,t;systemC^ls1');printf(u

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

176n,t);}第1处:内容为[%=0;]第2处:内容为[if(d%2!=0)]3、请编一个函数fun(char*s),函数的功能是把字符串中的内容逆置。例如:字符串中原有的内容为:abcdefg,则调用该函数后,串中的内容为:gfedcbaovoidfun(char*s){inti,length;chartmp;length=strlen(s);/*统计字符串s中字符的个数*/for(i=0;ivoid£in(char*s){inti,n,k;charqn=0;for(i=0;s[i]!=*\0';H-+)n++;/*********nd**********/if(n%2=0)k=n-—1—;

177elsek=n-2;/**********found**********/c=_2一;for(i=k-2;i>=l;i=i-2)s[i+2]=s[i];/**********found**********/s[l]=—3—;}main(){chars[80]=Habcdefghu;printf(H

178Theoriginalstringis:%s

179u,s);fun(s);printf(u

180Theresultis:%s

181M,s);}第1处:内容为[if(n%2=0)k=n・l;]第2处:内容为[c=s[k];]第3处:内容为[s[I]=c;]2、给定程序modi.c中函数fun的功能是:将s所指字符串的正序和反序进行连接,形成一个新串放在t所指的数组中。例如,当s所指字符串为:"ABCD"时,则t所指字符串中的内容应:"ABCDDCBA"。#include#include#include#include/************found************/voidtinChars,chart){inti,d;

182inti;char*p,*r,*a;d=strlen(s);for(i=0;i

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

184Theresultis:%s

185M,t);)第1处:内容为[voidfinChar*s,diar*t)]第2处:内容为[t[2*d]=W;]3、编写程序,实现矩阵(3行3歹IJ)的转置(即行列互换)。例如,输入下面的矩阵:100200300400500600700800900程序输出:100400700200500800300600900voidfun(intarray[3][3]){inti,j;intb[3][3];for(i=0;i<3;i++)for(j=0;j<3;j++)b[j][i]=array[i][j];for(i=0;i<3;i++)for(j=0;j<3;j++)arrayli][j]=b[i][jj;}第28题1、给定程序中,函数fun的功能是:对形参s所指字符串中下标为奇数的字符按ASCII码大小递增排序,并将排序后下标为奇数的字符取出,存入形参p所指字符数组中,形成一个新串。例如,形参s所指的字符串为:baawrskjghzlicda,执行后p所指字符数组中的字符串应为:aachjlsw#includevoidfin(char*s,(har*p){inti,j,n,x,t;n=0;for(i=0;s[i]!=*\0';*+)n++;for(i=1;is[j])t=j;if(t!=i){x=s[i];s[i]=s[t];s[t]=x;})for(i=l,j=0;i

186Theoriginalstringis:%s

187",s);fun(s,p);printf(n

188Theresultis:%s

189",p);)第1处:内容为第2处:内容为[for(j=i+2;jvn;j=j+2)]第3处:内容为[p(j]=O;]2、给定程序modi.c中函数fun的功能是:将s所指字符串中出现的、tl所指子串全部替换成t2所指子字符串,所形成的新串放在w所指的数组中。在此处,要求tl和t2所指字符串的长度相同。例如,当s所指字符串中的内容为:"abcdabfab”,tl所指子串中的内容为:”ab“,t2所指子串中的内容为:“99”时,结果,在w所指的数组中的内容应:"99cd99f99”。#include#include#include#includeintfun(char*s,char*11,char*12,char*w)strcpy(w,s);while(*w){p=w;r=tl;/************found************/while(r)if(*r==*p){r++;p++;}elsebreak;if(*r=='\0'){a=wr=C;/************found************/while(*r){*a=*r;a++;r++}w+=strlen(t2);}elsew++;)

190chars[100],tl[100],t2[100],w[100];system("cls");printf("

191PleaseenterstringS:");scanf("%s",s);printf("

192Pleaseentersubstringtl:");scanf("%s",tl);printf("

193Pleaseentersubstring⑵)scanf("%s",t2);if(strlen(t1)==strlen(t2)){fun(s,tl,t2,w);printf("

194Theresultis:%s

195",w);}elseprintf("Error:strlen(tl)!=strlen(⑵

196");)第1处:内容为[while(*r)]第2处:内容为[while(*r){*a=*r;a++;r++;}]3、编写函数intfun(intlimjntaa[MAX]),该函数的功能是求出小于或等于lim的所有素数并放在aa数组中,该函数返回求出素数的个数。intfun(intlim,intaa[MAXJ){inti,j=O,k=O;for4=2;i<=lim;i++)/*判断i是否小于或等于lim,如果i小于等于lim执行循环*/{for(j=2;jvi;j++)/*判断i是否能被比它小的整数整除*/if(i%j==0)break;/*假如i能被整除,则退出该层循环*/if(j==i)aa[k++]=i;/*假如i不能被比它小的整数整除,则将i存入aa数组中*/}returnk;)第29题1、给定程序中,函数fun的功能是:在形参s所指字符串中寻找与参数c相同的字符,并在其后插入一个与之相同的字符,若找不到相同的字符则函数不做任何处理。例如,s所指字符串为:baacda,c中的字符为:a,执行后s所指字符串为:baaaacdaa,请在程序的下划线处填入正确的内容并把F划线删除,使程序得出正确的结果。#includevoidfin(char*s,charc){inti,jn;/**********found**********/for(i=0;s[i]!=—1—;i++)if(s[i]==c){/**********found不*********/n=2;while(s[i+14-n]!='\0")n++;for(j=i+n+l;j>i;j-)s[j+l]=s[j];s[j+l]=一3一;i=i+l;))main(){chars[80]=nbaacdaM,qprintf("

197TheEng:%s

198*',s);printf("

199lnputacharacter:");scanf(H%cn,&c);fun(s,c);printf("

200Theresultis:%s

201”,s);}第1处:内容为[for(i=0;s[i]!=0;i++)]第2处:内容为m=o;]第3处:内容为[s[j+l]=c;]1、给定程序modi.c中函数fun的功能是:将s所指字符串中最后一次出现的、tl所指子串替换成t2所指子串,所形成的新串放在w所指的数组中。在此处,要求tl和12所指字符串的长度相同。例如,当s所指字符串中的内容为:"abcdabfabc”,tl所指子串中的内容为:"ab”,t2所指子串中的内容为:"99”时,结果,在w所指的数组中的内容应为:"abcdabf99c"o请改正程序中的错误,使它能得出正确的结果。#include#include#include#includeintfun(char*s,char*t1,char*t2,char*w)inti;char*p,*r,*a;strcpy(w,s);/***********nd************/while(w){p=wr=d;while(*r)/************found************/IF(*r==*p){r++;p++;}elsebreak;if(*r==AO')a=w;w++;}r=t2;while(*r){*a=*r;a++;r++;}

202}第1第2第3chars[100],tl[100],t2[100],w[100];system(nclsn);printf(n

203PleaseenterstringS:n);scanf(n%sn,s);printf(n

204Pleaseentersubstring11:");scanf("%sH,tl);printf("

205Pleaseentersubstringt2:H);scanf(M%sM,t2);if(strlen(t1)==strlen(t2)){fun(s,tl,t2,w);printf("

206Theresultis:%s

207",w);)elseprintf(u

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

209H);)第1处:内容为[while(*w)]第2处:内容为[if(*r==*p)]1、请编写函数fun,函数的功能是求出二维数组周边元素之和,作为函数值返回。二维数组中的值在主函数中赋予。例如:二维数组中的值为13579299946999813570则函数值为61。intfun(inta[M][N]){inti,j,sum=0;for(i=0;i#defineN4voidfin(int(*t)[N]){inti,j,x;/字*********^^und**********/for(i=0;i<1;i++)/字*********found**********/x=t[i]l-2_];for(j=N-l;j>0;j-)t[i]|j]=t[iJU-l];/**********found**********/t[i]l-3—J=x;)}main(){intt[][N]={21,12,13,24,25,16,47,38,29,11,32,54,42,21,33,10},i,j;printf("Theoriginalarray:

210u);for(i=0;i+)printf(n%2dM,t[i][j]);printf(H

211n);}fun(t);printf("

212Theresultis:

213*');for(i=0;i+)printf(M%2dM,t[i][j]);printf(,'

214M);处:内容为[for(i=0;i#defineN100intfun(int*s,htn){inti,j,k,a,b,c;j=0;for(i=100;i

215returnj;/**********found**********/main(){inta[N],n,11m=0,jdo{printf(n

216Entern(<=1000):");scanf(H%dM,&n);}while(n>1000);num=fun(a,n);printf("

217

218Theresult:

219u);for(i=0;i

220

221n);}第1处:内容为[k=i;]第2处:内容为[c=k;]3、请编写函数fun,对长度为7个字符的字符串,除首、尾字符外,将其余5个字符按降序排列。例如,原来的字符串为CEAedca,排序输出为CedcEAa。注意:部分源程序存在文件prog.c中。intfun(char*s,intnum){inti,j,h,t;for(i=1;i#includevoidfun(char*s,inta,doubtf){/*********nd字*********/_1—fp;charstr[100J,irHIOO],str2[100J;intal;doublefl;fp=fopen(,,filel.txt,

222wM);fprintf(fp,'%s%d%f

223M,s,a,f);/:,,*********found字*********/_2_;fp=fopen(ufilel.txt1','Y*');fscanf(_3_,M%s%s%sH,str,strl,str2);fclose(fp);al=atoi(strl);fl=atof(str2);printf(H

224Theresult:

225

226%s%d%f

227u,str,al,fl);)main(){(hara[10]=nHello!n;intb=12345;doublec=皿76;fun(a,b,c);}第1处:内容为[FILE*fp;]第2处:内容为[fclose(fp);]第3处:内容为[fscanf(fp,"%s%s%s",str,strl,str2);]2、给定程序modi.c中函数fun的功能是:计算n的5次方的值(规定n的值大于2、小于8),通过形参指针传回主函数。并计算该值的个位、十位、百位上数字之和作为函数值返回。例如,7的5次方是16807,其低3位数的和值是15o请改正函数fun中指定部位的错误,使它能得出正确的结果。#include#includeintfun(htn,ht*value){intd,s,i;/**************found**************/d=0;s=1;for(i=l;i<=5;i++)d=d*n;*value=d;for(i=l;i<=3;i++){s=s+d%10;/**************[ound**************/s=s/10;returnmain(){intn,aim,ydo{printf(M

228Entern(&nv8):");scanf("%d”,&n);}while(n<=2lln>=8);sum=fun(n,&v);printf(M

229

230Theresult:

231value=%dsum=%d

232

233",v,sum);第1处:内容为[d=l;s=0;]第2处:内容为[d=d/10;]3、请编一个函数voidfun(inttt[M][N],intpp[N]),tt指向一个M行N列的二维数组,求出二维数组每列中

234最小元素,并依次放入PP所指一维数组中。二维数组中的数已在主函数中赋予。voidfun(intintpp[N])(inti,j,min;for(i=0;i<4;i++)(min=tt[O][i];for(j=0;j<3;j++)if(min>tt[j][i])min=tt[j][i];pp[i]=min;)}第32题1、程序通过定义学生结构体变量,存储了学生的学号、姓名和3门课的成绩。所有学生数据均以二进制方式输出到文件中。函数fun的功能是电写形参filename所指文件中最后一个学生的数据,即用新的学生数据覆盖该学生原来的数据,其它学生的数据不变。请在程序的下划线处填入正确的内容并把F划线删除,使程序得出正确的结果。#defineN5typedefstructstudent{longsno;charname[10];floatscore[3];}STU;voidfin(char"filename,STUn){intp,m;FILE*fp;p=sizeof(STU);m=p*(-lL);/**********found**********/fp=fopen(_l_,"rb+");/**********found**********/fseek(_2_,m,SEEK_END);/**********found**********/fwrite(&n,sizeof(STU),1,_3_);fclose(fp);}第1处:内容为[fp=fopen(filename,"rb+");]第2处:内容为[fseek(fp,m,SEEK_END);]第3处:内容为[fwrite(&n,sizeof(STU),l,fp);]2、数列中,第一项值为3,后一项都比前一项的值增5。给定程序modi.c中函数fun的功能是:计算前n(4

235Entern(l

236

237Theresult:

238H);for(i=0;i

239

240H);)第1处:内容为[sum=0;j=0;]第2处:内容为[if(sum%4==2)]3、编写--个函数,从传入的num个字符串找出最长的一个字符串,并通过形参指针max传回该串地址。(注意:用****作为结束输入的标志。)fun(char(*a)[81],intnum,char**max){inti;*max=a⑼;/*将第一个字符串赋值给max指针*/for(i=l;i<=num;i++)if(strlen(a[i])>strlen(*max))*max=a[i];}第33题1、给定程序blankl.c中,函数fun的功能是:计算2!3!4n-1xL+...+(-严+(7产L4!(«-1)!"!的前n项之和。若x=2.5,n=15时,函数值为:1.917914.请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。#include#includedoublefun(doublex,intn){doublef,tinti;/**********found**********/f=—1—;t=-l;for(i=l;i

241/**********found¥*********/t*=(—2—)*x/i;/**********found**********/f+=—3—;returnf;}main(){doublex,yx=2.5;y=fun(x,15);printf(H

242Theresultis:

243M);printf(nx=%-12.6fy=%-12.6f

244M,x,y);第1处:第2处:第3处:2、给定程序modi.c中函数fun的功能是:统计一个无符号整数中各位数字值为零的个数,通过形参传回主函数:并把该整数中各位上最大的数字值作为函数值返回。例如,若输入无符号整数30800,则数字值为零的个数为3,各位上数字值最大的是8。请改正函数fun中指定部位的错误,使它能得出正确的结果。#includeintfun(unsignedn,ht*zero){intcount=0,max=0,t;do{t=n%10;/**************found**************/if(t=O)count++;if(max

245lnputn(insigned):");scanf(H%dM,&n);max=fun(n,&zero);max=%dprintf(n

246Theresult:zero=%d

247",max,zero);}第1处:内容为[if(t==o)]第2处:内容为产zero二counl;]3、编写一个函数,该函数可以统计一个长度为2的字符串在另一个字符串中出现的次数。例如,假定输入的字符串为:asdasasdfgasdaszx67askmklo,子字符串为:as,则应输出6。intfun(char*str,char*substr){unsignedinti=0;intj,k=O,add;while(idoublefun(doublex,intn){doublef,tf=1.0;inti;/*********nd**********/t=1;/**********found**********/for(i=2;i

248Theresultis:

249M);printf("x=%-12.6fy=%-12.6f

250",x,y);)第1处:内容为[t=1;]第2处作:内容为[for(i=l;ivn;i++)J第3处:内容为[t*=x/i;]2、给定程序modi.c中函数fun的功能是:给一维数组a输入任意4个整数,并按下例的规律输出。例如输入1、2、3、4,程序运行后将输出以下方阵。

2514123341223411234请改正函数fun中指定部位的错误,使它能得出正确的结果。#include#defineM4/**************found**************/voidfin(inta){inti,j,k,m;printf(uEnter4number:”);for(i=0;i

252

253Theesult:

254

255M);for(i=M;i>0;i-){k=a[M-l];for(j=M-l;j>0;j-)/*************fovi**************Ia[j]=a[j+l];a[0]=k;for(m=0;ncM;m++)printf(M%dM,a[m]);printf(M

256n);}}main(){inta[MJ;fun(a);printf(u

257

258");}第1处:内容为[voidfun(int*a)]第2处:内容为3、请编写函数fun,函数的功能是:将所有大于1小于整数m的非素数存入xx所指数组中,非素数的个数通过k传回。例如,若输入:17,则应输出:9和46891012141516ovoidfun(intm,int*k,intxx[J){inti,j;*k=0;for(i=2;ivm;i++){for仁2;jvi;j++)/*判断i是否能被比它小的整数整除*/if(i%j==0)break;if(jdoublefun(doublex){doublef,thtn;/*********nd**********/f=1.0+—1—;n=1;do{n++;/*********不found**********/t*=x/2;/**********found**********/f+=—3—;}while(fabs(t)>=le-6);returnf;)main(){doublex,xx=2.5;y=fun(x);printf(H

259Theresultis:

260M);printf(nx=%-12.6fy=%-12.6f

261u,x,y);)第1处:内容为[f=1.0+x;]第2处:内容为[t*=x/n;]第3处作:内容为[f+=t;]2、给定程序modi.c中函数fun的功能是:从3个红球,5个白球,6个黑球中任意取出8个作为一组,进行输出。在每组中,可以没有黑球,但必须要有红球和白球。组合数作为函数值返回。正确的组合数应该是15。程序中i的值代表红球数,j的值代表白球数,k的值代表黑球数。请改正函数fun中指定部位的错误,使它能得出正确的结果。#includeintfun(){inti,j,k,sum=0;printf("

262Theesult:

263

264M);/**************f^)und豕*************/for(i=0;i<=3;i++){for(j=l;j<=5;j++){k=8-i-j;/**************f^)und字*************/if(k>=l&&k<=6){sum=sum+l;

265printf("red:%4dwhite:%4dblack:%4d

266”,i,j,k);returnsum;|main(){intsum;sum=fun();printf("sum=%4d

267

268",sum);)第1处:内容为[for(i=l;i<=3;i++)]第2处:内容为[if(k>=O&&k<=6)]3、程序定义了NXN的二维数组,并在主函数中赋值。请编写函数fun,函数的功能是:求出数组周边元素的平均值并作为函数值返回给主函数中的So例如:a数组中的值为10127911197451a=£38311145682115914II则返回主程序后s的输出结果为:3.375000。doublefun(intw[][N])inti,j,count=0;doubleaverage,sum=0.0;for(i=0;i=0;—2—)for(j=N-l;j>=0;j—)/**********^k)und**********/t[j][N-l]=r[—3—];)main(){intt[][N]={l,2,3,4,5,6,7,8,9),iJ;printf(,,

269Theoriginalarray:

270u);for(i=0;i+)printf(n%2dM,t[i]|j]);printf("W);}fun(t);printf(,'

271Theresultis:

272H);for(i=0;i+)printf(n%2dprintf(“W);})第1处:内容为[t⑼皿0];]2、第2处:内容为[for(j=N-l;j>=0;j--)]第3处:内容为容.给定程序modi.c中函数fun的功能是:求整数的y次方的低3位值。例如,整数5的6次方为15625,此值的低3位值为625。请改正函数fun中指定部位的错误,使它能得出正确的结果。longfun(intx,inty,long*p){inti;longt=l;/**************found**************/

273for(i=l;i

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

275

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

277

278",x,y,u);)第1处:内容为[for(i=l;iv=y;i++)]第2处:内容为[t=t%1000;]3、编写一个函数fun,它的功能是:实现两个字符串的连接(不使用库函数strcat)。例如,分别输入下面两个字符串:FirstString-SecondString程序输出:FirstString—SecondStringvoidfun(charpl[],charp2[]){char5if>ointl,*point2;pointl=pl;point2=p2;while(*pointl!='\0')point1++;while(*point2!='\0'){*pointl=*point2;point1++;point2++;}*pointl=W}第37题1、给定程序中,函数fun的功能是:有NXN矩阵,以主对角线为对称线,对称元素相加并将结果存放在左下三角元素中,右上三角元素置为0。例如,若N=3,有下列矩阵:123456789计算结果为10065010149请在程序的下划线处填入正确的内容并把卜划线删除,使程序得出正确的结果#include#defineN3/字*********found**********/voidfun(int(*t)1){inti,jfor(i=l;i

279Theoriginalarray:

280u);for(i=0;i+)printf(H%2dprintf(,'

281H);}fun(t);printf("

282Theresultis:

283u);for(i=0;i+)printf(,'%2dM,t[i][j]);printf(,'

284n);})第1处:内容为[void£in(int(*t)[N])]第2处:内容为第3处:内容为2、给定程序modi.c中函数fun的功能是:为一个偶数寻找两个素数,这两个素数之和等于该偶数,并将这两个素数通过形参指针传回主函数。请改正函数fun中指定部位的错误,使它能得出正确的结果。#include#includevoidfun(inta,ini*b,int*c){inti,j,d,y;for(i=3;i<=a/2;i=i+2){/**************found**************/y=0;for(j=2;j<=sqrt((double)i);j++)if(i%j==O)y=0;if(y==l){

285#defineN3d=i-a;for(j=2;j<=sqrt((double)d);j++)if(d%j==O)y=0;if(y==l){*b=i;*c=d;}}}}main(){inta,b,c;do{printf("

286lnputa");scanf(,,%d,,,&a);}while(a%2);fun(a,&b,&c);printf("

287

288%d=%d+%d

289H,a,b,c);}第1处:内容为[y=l;]第2处:内容为[d=a-i;]3、请编写函数fun,函数的功能是:实现B=A+A1即把矩阵A加上A的转置,存放在矩阵B中。计算结果在main函数中输出。例如,输入下面的矩阵:其转置矩阵为II2311147114561125811789113691程序输出:126101161014111014181voidfun(inta[3][3],intb[3][3]){inti,j;for(i=0;i<3;i++)for(j=0;j<3;j++)b[i]U]=a[i][j]+a[j][i];}第38题1、给定程序中,函数fun的功能是:计算NXN矩阵的主对角线元素和反向对角线元素之和,并作为函数值返回。注意:要求先累加主对角线元素中的值,然后累加反向对角线元素中的值。例如,若N=3,有下列矩阵:123456789fun函数首先累加1、5、9,然后累加3、5、7,函数的返回值为30。请在程序的下划线处填入正确的内容并把F划线删除,使程序得出正确的结果。#includefun(intt[][N],htn){inti,aim;1for(i=0;i

290Theoriginaldata:

291H);for(i=0;i+)printf(',%4d,,,t[i][j]);printf("

292");)printf(''Theresultis:%d",fun(t,N));)第1处:内容为[sum=0;]第2处:内容为[sum+=t[i][i]J第3处:内容为[sum+=t[川n-i-1];]2、给定程序modi.c中函数fun的功能是:根据输入的三个边长(整型值),判断能否构成三角形:构成的是等边三角形,还是等腰三角形。若能构成等边三角形函数返回3,若能构成等腰三角形函数返回2,若能构成一般三角形函数返回1,若不能构成三角形函数返回0«请改正函数fun中指定部位的错误,使它能得出正确的结果。#includeintfun(inta,intb,intc){if(a+b>c&&b+c>a&&a+c>b){if(a==b&&b==c)/**************found**************/return1;elseif(a==bllb==clla==c)return2;/**************found**************/elsereturn3;)elsereturn0;}main(){inta,b,c,shape;printf(n

293lnputa,b,c:");scanf(u%d%d%dH,&a,&b,&c);printf(H

294a=%d,b=%d,c=%d

295M,a,b,c);

296a[j]=a[i];—2一:shape=fun(a,b,c);printf("

297

298TheSape:%d

299n,shape);/字*********found**********/}第1处:内容为[return3;]第2处:内容为[elsereturn1;]3、m个人的成绩存放在score数组中,请编写函数fun,它的功能是:将低于平均分的人数作为函数值返回。例如,当score数组中的数据为:10、20、30、40、50、60、70、80、90时,函数返回的人数应该是4,below中的数据应为:10203040ointfun(intscore[],intm,intbelow[])(inttotal=0;/*用于计算m个学生的成绩之和*/intaverage=0;int*p_below=below;inti=0;intj=0;/*用于计算成绩低于平均分的学生的人数*/for(i=0;i#defineN9int£in(inta[],htn){intij;j=0;for(i=0;i

300Theoriginaldata:

301");for(i=0;i

302n);n=fun(b,N);printfCAnThenumberofodd:%d

303H,n);printf("

304Theoddnumber:

305H);for(i=0;i

306H);第1处:内容为[if(a[i]%2==l)]第2处:内容为[a[j]=a[i];j++;]第3处:内容为[returnj;]2、给定程序modi.c中函数fun的功能是:首先将大写字母转换为对应小写字母;若小写字母为a〜u,则将其转换为其后的第5个字母:若小写字母为v〜z,使其值减21。转换后的小写字母作为函数值返回。例如若形参是字母A,则转换为小写字母f;若形参是字母W,则转换为小写字母b。请改正函数fun中指定部位的错误,使它能得出正确的结果。#include#includecharfun(charc){if(c>='A'&&c<='Z,)/**************found**************/c=c-32;if(c>=*a'&&c<=,u,)/**************found**************/c=c-5;elseif(c>='v,&&c<='z,)c=c-21;returnc;}main(){charcl,c2;printf(M

307Enteraletter(A-Z):");d=getchar();if(isupper(cl)){c2=fun(cl);printf(n

308

309TheletterV%cVchangetoV%cV

310”,cl,c2);)elseprintf(H

311Enter(A-Z)!

312u);第1处:内容为[c=tolower(c);]第2处:内容为[c=c+5;]3、请编写一个函数voidfun(charpp[]),统计在tt字符串中支到N26个字母各自出现的次数,并依次放在PP所指数组中。例如,当输入字符串:abcdefgabcdeabc后,程序的输出结果应该是:33322110000000000000000000void

313fun(charpp[]){inti;for(i=0;i<26;i++)pp[i]=O;/*for()循环用于给数组pp[]赋初值0*/for(;*tt;tt++)if(*iy='z'&&*tt>='a')pp[*tt-97]++;1第40题1、函数fun的功能是:把形参a所指数组中的偶数按原顺序依次存放到a[0]、a。]、a[2],……中,把奇数从数组中删除,偶数个数通过函数值返回。例如:若a所指数组中的数据最初排列为:9、1、4、2、3、6、5、8、7,删除奇数后a所指数组中的数据为:4、2、6、8,返回值为4o请在程序的下划线处填入正确的内容并把F划线删除,使程序得出正确的结果。#include#defineN9int£in(inta[],htn){intij;j=0;for(i=0;i

314Theoriginaldata:

315H);for(i=0;i

316M);n=fun(b,N);printf(H

317Thenumberofeven:%d

318'

319);printf("

320Thee/en:

321M);for(i=0;i

322");)第1处:内容为[if(a[i]%2==0){]第2处:内容为[a|j]=a[i];j++;]第3处:内容为[returnj;]2、给定程序modi.c中,fun函数的功能是:先从键盘上输入一个3行3列矩阵的各个元素的值,然后输出主对角线元素之和。请改正程序中的错误,或在横线处填上适当的内容并把横线删除,使它能得出正确的结果。#includeintfun()|inta[3][3],sum;inti,j;for(i=0;i<3;i++){forj=0;j<3;j++)/字***********found************/scanf(n%dna[i][j]);)for(i=0;i<3;i++)sum=sum+a[ij[ij;printf(nSum=%d

323n,sum);1main(){fun();}第1处:内容为[sum=0;]第2处:内容为[scanf("%d,”,&a[i]|j]);]3、函数fun的功能是:将两个两位数的正整数a、b合并形成一个整数放在c中,合并的方式是:将a数的十位和个位数依次放在c数的千位和十位上,b数的十位和个位数依次放在c数的个位和百位上。例如,当a=45,b=12。调用该函数后,c=4251=voidfun(inta,intb,long*c)(inta_up,a_low,b_up,b_low;a_up=a/10;a_low=a%10;b_up=b/10;b_low=b%10;*c=a_up*1000+b_low*100+a_low*10+b_up;)第41题1、函数fun的功能是:把形参a所指数组中的最小值放在元素a[0]中,接着把形参a所指数组中的最大值放在a[l]元素中;再把a所指数组元素中的次小值放在a[2]中,把a所指数组元素中的次大值放在a[3];其余以此类推。例如:若a所指数组中的数据最初排列为:9、1、4、2、3、6、5,8、7;则按规则移动后,数据排列为:

3241、9、2、8,3、7、4、6、5。形参n中存放a所指数组中数据的个数。注意:规定fun函数中的max存放当前所找的最大值,px存放当前所找最大值的下标。#defineN9void£in(inta[],htn){intij,max,min,px,pn,t;for(i=0;i3){min=a[j];pn=j;})if(pn!=i){t=a[ij;a[i]=min;a[pn]=t;if(px==i)px=pn;)if(px!=i+1){t=a[i+l];a[i+l]=max;a[px]=t;}})main(){intb[N]={9,1,4,2,3,6,5,8,7},iprintf("

325TheoriginaldataAn");for(i=0;i

326M);fun(b,N);printf(u

327Thedataaftermoving:

328n);for(i=0;i

329n);)第1第2第32、处:内容为[max=min=a[i];]处:内容为[if(maxva[j])]处:内容为给定程序modi.c的功能是:读入一个整数k(2Wk〈10000),打印它的所有质因子(即所有为素数的因子)。例如,若输入整数:2310,则应输出:2、3、5、7、11。请改正程序中的语法错误,使程序能得出正确的结更yT«.o#include"windows.hn/************found************/Isprime(intn);{intim;m=l;for(i=2;i

330Pleaseenteranintegernumberbetween2and10000:”);scanf("%d”,&k);printf("

331

332Theprimefactor(s)of%dis(are):n,k);for(j=2;j<=k;j++)if((!(k%j))&&(Isprime(j)))printf(H

333%4dn,j);printf(M

334M);)第1处:内容为[Isprime(n)]第2处:内容为[if(!(n%i))]3、请编写一个函数voidfun(intm,intk,intxx[]),该函数的功能是:将大于整数m且紧靠m的k个素数存入xx所指的数组中。例如,若输入17,5,则应输出:19,23,29,31,37ovoidfun(intm,intk,intxx[])(inti,j,total=0;int*p_xx=xx;for(i=m+l;;i++){for(j=2;j

335请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。#include#defineN9/**********found不*********/void£in(int1,intn){inti,j,max,min,px,pn,t;/**********,ound**********/for(i=0;ia[jj){min=a(j];pn=j;}}if(px!=i){t=a[ij;a[i]=max;a[px]=t;if(pn==i)pn=px;)if(pn!=i+l){t=a[i+l];a[i+l]=min;a[pn]=t;}}}main(){intb[N]={1,4,2,3,9,65,8,7},jprintf(H

336Theoriginaldata:

337n);for(i=0;i

338M);fun(b,N);printf("

339Thedataaftermoving:

340n);for(i=0;i

341H);}处:内容为[voidfun(int*a,intn)]处:内容为[for(i=0;ivn-l;i+=2)]处:内容沏for(j=i+l;jvn;j++)]2、给定程序modi.c中,函数fun的功能是:用冒泡法对6个字符串按由小到大的顺序进行排序。请改正程序中的错误,使它能得出正确的结果。#include#include#include#defineMAXLINE20fun(char*pstr[6]){intij;char*p;for(i=0;i<5;i++){for(j=i+l;j<6;j++){/萃**********nd************/if(strcmp(*(pstr+i),pstr+j)>0){p=*(pstr+i);/************found************/*(pstr+i)=pstr+j;*(pstr+j)=p;}}})第1处:内容为[if(strcmp(*(pstr+i),*(pstr+j))>0)]第2处:内容为[*(pstr+i)=*(pstr+j);]2、已知学生的记录由学号和学习成绩构成,N名学生的数据已存入a结构体数组中。请编写函数fun,函数的功能是:找出成绩最低的学生记录,通过形参返回主函数(规定只有一个最低分)。已给出函数的首部,请完成该函数。fun(STUa[],STU*s)(inti;STU*m;m=a;for(i=l;i#defineN9void£in(inta[],htn){inti,tp;/不*********found**********/p=(n%2=0)?n/2:n/2+—1—;for(i=0;i

342#include#include#include#include#defineN80voidfun(char*s,char(IJ){inti,j=0;for(i=0;i<(int)strlen(s);i++)/***********found**********/if(i%2&&s[i]%2==0)t|j++]=s[i];/***********f^^und**********/用…;)main(){chars[N],(NJ;systemC^ls");printf(n

343Pleaseenterstrings:”);gets(s);fun(s,t);printf(H

344Theresultis:%s

345'\t);}第1处:内容为[if(i%211s[i]%2==0)]第2处:内容为3、已知学生的记录由学号和学习成绩构成,N名学生的数据已存入a结构体数组中。请编写函数fun,函数的功能是:找出成绩最高的学生记录,通过形参返回主函数(规定只有一个最高分)。已给出函数的首部,请完成该函数。fun(STUa[],STU*s)(inti;STU*m;m=a;for(i=l;im[0].s)m=&a[i];s[0].s=m[0].s;strcpy(s[0].num,m[0].num);)第44题1、函数fun的功能是:逆置数组元素中的值。例如:若a所指数组中的数据依次为:1、2、3、4、5、6、7、8、9,则逆置后依次为:9、8、7、6、5、4、3、2、1。形参n给出数组中数据的个数。请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。#includevoid£in(inta[],htn){inti,t;/*******************/for(i=0;i<1;i++)(t=a[i];/**********found**********/a[i]=a[n-l-_2];/**********found**********/―3—=t;))main(){intb[9]={1,234,5,6,7,8,9},i;printf("

346Theoriginaldata:

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

348n);fun(b,9);printf("

349Thedataafterinvert:

350H);for(i=0;i<9;i++)printf(H%4d”,b[i]);printf('V);)第l处:内容为[for(i=0;i

351/************found************/n=stlen(aa);for(i=l;i=O)&&(ch/**********found**********/1fin(charch){/*********¥found**********/if(ch>='0'&&_2_)/**********found**********/return'9-(ch-3);returnch;)main(){charcl,(2;printf(u

352TheesultAn");cl=2;c2=fin(cl);printf(ncl=%cc2=%c

353M,cl,c2);cl=8;c2=£in(cl);printf(ncl=%cc2=%c

354M,cl,c2);cl='a*;c2=fin(cl);printf(ncl=%cc2=%c

355M,cl,c2);}第1处:内容为[charfin(charch)]第2处:内容为[if(ch>=O&&chv=9)]第3处:内容为[return'9'-(ch--O1);]2、给定程序modi.c中,函数fun的功能是:实现两个整数的交换。例如给a和b分别输入:60和65,输出为:a=65b=60请改正程序中的错误,使它能得出正确结果。#inciude#include#include/************found************/voidfun(inta,b){intt;/************found************/t=b;b=a;a=t;)main(){inta,b;system("cls");printf("Entera,b:");scanf("%d%d",&a,&b);fun(&a,&b);printf("a=%db=%d

356",a,b);)第1处:内容为[voidfun(int*a,int*b)]第2处作:内容为[t=*b;*b=*a;*a=t;]3、函数fun的功能是:将s所指字符串中下标为偶数同时ASCII值为奇数的字符删除,s中剩余的字符形成的新串放在t所指的数组中。例如,若s所指字符串中的内容为"ABCDEFG12345",其中字符C的ASCII码值为奇数,在数组中的下标为偶数,因此必须删除;而字符1的ASCII码值为奇数,在数组中的下标也为奇数,因此不应当删除,其它依次类推。最后t所指的数组中的内容应是"BDF12345"。voidfun(char*s,chart[])(inti,slenth,n=O;slenth=strlen(s);for(i=0;i2)的素

357数的个数,素数的个数作为函数值返回。请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。#includeint£in(intn){inti,j,(ount=0;printf("

358Theprimenumberbetween3to%d

359",n);for(i=3;i<=n;i++){/**********found**********/for(_1—;j=i){count-H-;printf(count%15?“%5d":"

360%5d”,i);})returncount;)main(){intn=20,?r=fun(n);printf(H

361Thenunberofprimek:%d

362n,r);}处:内容为[for(j=2;jvi;j++)]处:内容为[if(i%j==O)]处:内容为[if(j>=i)]2、给定程序modi.c中,函数fun的功能是:计算并输出k以内最大的10个能被13或17整除的自然数之和。k的值由主函数传入,若k的值为500,则函数值为4622。请改正程序中的错误,使它能得出正确的结果。intfun(intk){intm=0,mc=0;while((k>=2)&&(mc<10))/************found************/{if(k%13=0)ll(k%17=0)){m=m+k;mc++;}k-;)returnm;/************found************/main(){system,cis");printf("%d

363”,fun(500));)第1处:内容为[{if((k%13=0)ll(k%17==0))]第2处:内容为[}]3、编写函数fun,它的功能是:根据以下公式求P的值,结果由函数值带回。m与n为两个正整数且要求m>nom!n!(m-n)!例如:m=12,n=8时,运行结果为495.0(X)000。floatfun(intm,intn){inti;floats=l,f=l,h=1;floatx;for(i=m;i>=l;i—)=*i;/*求出m的阶乘*/for(i=n;i>=l;i—)fef*i;/*求出n的阶乘*/for(i=m-n;i>=l;i--)h=h*i;/*求出m-n的阶乘*/x=s/(f*h);return(x);第47题1、用筛选法可得到2〜n(nvlOOOO)之间的所有素数,方法是:首先从素数2开始,将所有2的倍数的数从数表中删去(把数表中相应位置的值置成0);接着从数表中找下一个非0数,并从数表中删去该数的所有倍数;依此类推,直到所找的下一个数等于n为止。这样会得到一个序列:2,3,5,7,11,13,17,19,23,函数fun用筛选法找出所有小于等于n的素数,并统计素数的个数作为函数值返回。#includeintfin(intn){inta[10000],jj,©unt=0;for(i=2;i<=n;i++)a[i]=i;i=2;while(i

364Theprimenumberbetween2to%d

365”,n);for(i=2;i<=n;i++)/**********found**********/if(a[i]!=—3—)count++;printf(count%15?',%5d,,:"

366%5dn,a[i]);}returncount;}main(){intn=20,rr=fun(n);printf(u

367Thenunberofprimes:%d

368”,r);)第1处:内容为[for(j=a[i]*2;j<=n;j+=a[i])]第2处:内容为[while(a[i]==0)]第3处:内容为[if(a[i]!=O)]2、给定程序modi.c中,函数fun的功能是:先将在字符串s中的字符按正序存放到t串中,然后把s中的字

369符按逆序连接到t串的后面。例如,当s中的字符串为:"ABCDE"时,贝Ut中的字符串应为:"ABCDEEDCBA"o请改正程序中的错误,使它能得出正确结果。voidfun(char*s,char*t){int,sl;sl=strlen(s);/************found************/for(i=0;i<=sl;i++)t[i]=s[i];for(i=0;i

370Pleaseenterstrings:");scanf(”%s”,s);fun(s,t);printf(nTheresultis:%s

371u,t);)第1处:内容为[for(i=0;i0.000001)/*假如双精度型(xO-xl)的绝对值大于0.000001,则继续循环,否则退出循环*/{x0=xl;xl=cos(x0);}retum((float)x0);)第48题1、甲乙丙丁四人同时开始放鞭炮,甲每隔tl秒放一次,乙每隔t2秒放一次,丙每隔t3秒放一次,丁每隔t4秒放一次,每人各放n次。函数fun的功能是根据形参提供的值,求出总共听到多少次鞭炮声作为函数值返回。注意,当几个鞭炮同时炸响,只算一次响声,第一次响声是在第0秒。例如,若tl=7,t2=5,t3=6,t4=4,n=10,则总共可听到28次鞭炮声。#include/**********found**********/#defineOK(i,tn)((—1—%t==0)&&(i/t

372",r);}第1处:内容为[#defineOK(i,tn)((i%t==0)&&(i/t#include#includeintfun(intm){intjk;for(i=m+l;;i++){for(k=2;k

373{intn;system(',cls,');printfC^nPleaseentern:M);scanf(”%d”,&n);printf(',%d

374,\fun(n));)第1处:内容为[if(i%k==0)]第2处:内容为[if(k>=i)]3、函数fun的功能是:将s所指字符串中ASCII值为偶数的字符删除,串中剩余字符形成一个新串放在t所指的数组中。例如,若s所指字符串中的内容为:“ABCDEFG12345",其中字符B的ASCII码值为偶数、…、字符2的ASCII码值为偶数、…都应当删除,其它依次类推。最后I所指的数组中的内容是:“ACEG135”。voidfun(char*s,chart[J){inti,slenth,n=O;slenth=strlen(s);for(i=0;iintfun(inta,htb,htc)(intt;/**********found**********/t=(a>b)?(b>c?b:(a>c?c:1)):((a>c)?—2—:((b>c)?c:—3—));returnt;main(){intal=3,<2=5,j8=4,rr=fun(al,a2,a3);printf("

375Themiddlenumberis:%d

376",r);)第」处:内容为[t=(a>b)?(b>c?b:(a>c?c:a)):((a>c)?a:((b>c)?c:b));]2、给定程序modi.c中,函数fun的功能是:用选择法对数组中的n个元素按从小到大的顺序进行排序。请改正程序中的错误,使它能得出正确结果。#defineN20voidfun(inta[],intn){intij,t,p;for(j=0;j

377,');fun(a,m);printf("排序后的数据:");for(i=0;i

378");}第1处:内容为[p=j;J第2处:内容为[p=i;]3、编写函数fun,它的功能是:求n以内(不包括n)同时能被3与7整除的所有自然数之和的平方根s,并作为函数值返回。例如若n为1000时,函数值应为:s=153.909064.doublefun(intn){inti,s=0;for(i=l;ivoid£in(char*s,hta,doubbf){/**********,ound**********/_1—fp;charch;fp=fopen("filel.txt","w");fprintf(fp,n%s%d%f

379*s,a,f);fclose(fp);fp=fopen(,,filel.txt,\HrH);printf(u

380Theresult:

381

382u);ch=fgetc(fp);/**********found**********/while(!feof(—2—)){/**********found**********/putchar(_3_);(h=getc(fp);}

383putchar('n');fclose(fp);)main(){(hara[10]="Hello!H;intb=12345;doublec=9876;fun(a,b,c);}第1处:内容为[FILE*fp;]第2处:内容为[while(!feof(fp)){]第3处:内容为[putchar(ch);ch=fgetc(fp);}]1、给定程序modi.c中,函数fun和funx的功能是:用二分法求方程2xA3-4xA2+3x-6=0的一个根,并要求绝对误差不超过0.001o例如,若给m输入・100,给n输入90,则函数求得的一个根值为2.000。#includenstdio.hH#include"math.h"doublefunx(doublex){retum(2*x*x*x-4*x*x+3*x-6);}doublefun(doublem,doublen){/************found************/intr;r=(m+n)/2;/************found************/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;prinlf("Entermn:

384");scanf("%lf%lr,&m,&n);root=fun(m,n);printf(,,root=%6.3f

385,,,root);)第一处:int改为double第二处:小于〈改为大于〉2、函数fun的功能是:将s所指字符串中ASCII值为奇数的字符删除,串中剩余字符形成一个新串放在t所指的数组中。例如,若s所指字符串中的内容为"ABCDEFG12345",其中字符A的ASCII码值为奇数、…、字符1的ASCII码值也为奇数、…都应当删除,其它依次类推。最后t所指的数组中的内容应是:"BDF24".voidfun(char*s,chart[])(inti,slenth,n=O;slenth=strlen(s);for(i=0;is[j].sno{t=(i];s[i]=tj];s[j]=t}fp=fopen(filename,''wb'');_3_(s,sizeof(STU),N,fp);//freadfclose(fp);)2、给定程序modi.c中,函数fun的功能是:根据整型形参m的值,计算如下公式的值。t=l-l/(2*2)-l/(3*3)-...-l/(m*m)例如:若m中的值为:5,则应输出:0.536389o#include#include#includedoublefun(intm){doubley=1.0;inti;/************[ound************/for(i=2;i

386Theresultis%lf

387",fun(n));}3、编写函数fun,它的功能是:求Fibonacci数列中大于s的最小的一个数,结果由函数返回。其中Fibonacci数列F(n)的定义为:

388F(0)=0,F(l)=lF(n)=F(n-l)+F(n-2)例如:当s=1000时,函数值为:1597。intfun(ints){intxl=0,x2=l,m=0;while(s>m)(m=xl+x2;xl=x2;x2=m;}returnm;)第52题1、给定程序中,函数fun的功能是:找出100至x(XW999)之间各位上的数字之和为15的所有整数,然后输出;符合条件的整数个数作为函数值返回。例如,当x值为500时,各位数字之和为15的整数有:159、168、177、186、195>249、258、267、276、285、294、339、348、357、366、375、384、393、429、438、447、456、465、474、483、492。共有26个。请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。#includefun(intx){intn,si,s2,s3,t;/**********found**********/n=_1_;//n=0t=100;*********found**********/while(t<=_2_)//x{d=t%10;s2=(t/10)%10;s3=t/100;if(sl+s2+s3=15){printf(H%dH,t);n++;_3_;〃t++)returnn;)main(){htx=-l;while(x>999llx<0){printf(MPleaseinput(0

389Theresultis:%d

390",fun(x));)2、给定程序modi.c中,函数fun的功能是:统计字符串中各元音字母(即:A、E、I、0、U)的个数。注意:字母不分大、小写。例如:若输入:THIsisaboot则输出应该是:10220请改正程序中的错误,使它能得出正确结果。#include#include#includefun(char*s,intnum[5]){intk,i=5;for(k=O;k

391caseb':case,O,:{i=3;break;}case'u':caseU:{i=4;break;}}if(i>=0)num[i]++;t=100;/字*********nd**********/while(t<=_l_){//999/字*********found**********/s3=t/100;//t/10sl=t%10;s2=(_2_)%10;main(){charsl[81];intnuml[5],i;system("cls");printf(u

392Pleaseenterastring:n);gets(sl);fun(sl,numl);for(i=0;i<5;i++)printf(',%d',,numl[i]);printf(',

393M);13、函数fun的功能是:将s所指字符串中除了下标为奇数、同时ASCII值也为奇数的字符之外,其余的所有字符都删除,串中剩余字符所形成的一个新串放在t所指的数组中。例如,若s所指字符串中的内容为:"ABCDEFG12345",其中字符A的ASCII码值虽为奇数,但所在元素的卜标为偶数,因此必需删除:而字符1的ASCII码值为奇数,所在数组中的下标也为奇数,因此不应当删除,其它依此类推。最后t所指的数组中的内容应是:"135"。voidfun(char*s,chart[]){inti,slenth,n=O;slenth=strlen(s);for(i=1;ifun(intx){intn,si,s2,s3,t;n=0;if(sl+s2+s3=_3_)//x{printf(n%dM,t);n++;)t++;returnn;)main(){intx="l;while(x<0){printf("Pleaseinput(x>0):");scanf(M%dM,&x);}printf(n

394Theresultis:%d

395”,fun(x));)2、给定程序modi.c中函数fun的功能是:在p所指字符串中找出ASCII码值最大的字符,将其放在第一个位置上;并将该字符前的原字符向后顺序移动。例如,调用fun函数之前给字符串输入:GABCDeFGH调用后字符中的内容为:eGABCDFGH请改正程序中的错误,使它能得出正确结果。#includefun(char*p){charmax,*q;int20;max=p[i];while(p[i]!=0){if(naxp{*q=*(q-l);q・・;}p[0]=max;)main(){charstr[80];printf("Enterastring:n);gets(str);printf(',

396Theoiginaliring:H);puts(str);fun(str);printf("

397Thestringaftermoving:M);puts(str);printf(M

398

399M;13、编写函数fun,它的功能是计算:s=(In(l)+In(2)+In(3)+……+In(m))A0.5,s作为函数值返回。在C语言中可调用k)g(n)函数求In(n)olog函数的引用说明是:doublelog(doublex)。例如,若m的值为:20,fun函数值为:6.506583。doublefun(intm){inti;doubles=0;

400for(i=l;i<=m;i++)s=s+log(i);s=sqrt(s);returns;}第54题1、给定程序中,函数fun的功能是:将形参s所指字符串中的所有字母字符顺序前移,其它字符顺序后移,处理后新字符串的首地址作为函数值返回。例如,s所指字符串为:asd123fgh543df,处理后新字符串为:asdfghdf123543c#include#include#includechar*fun(char*s){hti,jk,n;char*p,七n=strlen(s)+l;t=(char*)malloc(n*sizeof(char));p=(char*)malloc(n*sizeof(char));j=0;k=0;for(i=0;i=,a')&&(s[i]<=,z,))ll((s[iJ>='A,)&&(s[iJ<='Z,))){/**********found**********/t[j]=_l_;j++;}//s[i]else{p[k]=s[i];k++;}}/**********found**********/for(i=0;k_2_;1+)t|j+i]=p[i];//k/**********found**********/tlj+k]=_3_;/AO*returnt;}main(){(hars[80];print^'Tleaseinput:");scanf(n%sn,s);printf(H

401Theresultis:%s

402M,fun(s));)2、给定程序modi.c中,函数fun的功能是:首先把b所指字符串中的字符按逆序存放,然后将a所指字符串中的字符和b所指字符串中的字符,按排列的顺序交叉合并到c所指数组中,过长的剩余字符接在c所指数组的尾部。例如,当a所指字符串中的内容为"abcdefg",b所指字符串中的内容为"1234"时,c所指数组中的内容应该为“a4b3c2dlefg";而当a所指字符串中的内容为"1234",b所指字符串中的内容为"abcdefg”时,c所指数组中的内容应该为"lg2f3erdcba"。请改正程序中的错误,使它能得出正确结果。voidfun(char*a,char*b,char*c)(intij;charch;i=0;j=strlen(b)-l;/************found************/while(>j)〃第一处:改为iav)y[_3_]=x(J;〃第三处:j++yLj]=-i;returnav;2,给定程序modi.c中,函数fun的功能是:将字符串a

403中的所有字符复制到字符串b中,要求每复制三个字符之后插入一个空格。例如,在调用fun函数之前给字符串a输入:ABCDEFGHUK调用函数之后,字符串b中的内容则为:ABCDEFGHIJK请改正程序中的错误,使它能得出正确结果voidfun(char*p,char*b){intik=0;while(*p){i=l;/************found************/while(<3ll*p)〃第一处:改为:i<4&&*p{b[k]=*p;k++;p++;i++;}if(*p)/************[ound************/b[k]=:〃第二处:改为b[k++]=";}blkJ^O';}3、规定输入的字符串中只包含字母和*号。请编写函数fun,它的功能是:将字符串中的前导*号全部删除,中间和尾部的*号不删除。例如,字符串中的内容为:*******A*BC*DEF*G****,删除后,字符串中的内容应当是:A*BC*DEF*G****。在编写函数时,不得使用C语言提供的字符串函数。voidfun(char*a){charb[81J;inti=0,j=0;while((a[j]!=l\O)&&(a|j]=*))j++;while(a(j]!=W)(b[i]=a[j];j++;i++;)b[i]=AO';i=0;j=0;while(b[i]!=,0')(a[j]=b[i];i++;j++;)am=vr;)第56题1、给定程序中,函数fun的功能是将a和b所指的两个字符串转换成面值相同的整数,并进行相加作为函数值返回,规定字符串中只含9以下数字字符。例如,主函数中输入字符串:32486和12345,在主函数中输出的函数值为:44831»请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。longctod((har*s){bngd=0;while(*s)if(isdigit(*s)){/字*********found**********/d=d*10+*s-_l_;〃第一处:填'O'/字*********found**********/_2_;}〃第二处填:s++;returnd;)longfun((har*a,(har*b)(/不*********found**********/return_3_;//第三处填:ctod(a)+ctod(b);)2、给定程序modi.c中,函数fun的功能是:将长整型数中每一位上为偶数的数依次取出,构成一个新数放在t中。高位仍在高位,低位仍在低位。例如,当s中的数为:87653142时,t中的数为:8642,voidfun(longs,long*t){intd;longsl=l;*t=0;while(s>0){d=s%10;/************found************/ifd%2=0)〃第一处:改为d%2==0{*t=d*sl+*t;sl*=10;)/************found************/s\=10;〃第二处:改为/3、请编一个函数fun,函数的功能是使实型数保留2位小数,并对第三位进行四舍五入(规定实型数为正»I>A,数。例如:实型数为1234.567,则函数返回1234.570000:实型数为1234.564,则函数返回1234.560000ofloatfun(floath){

404h=h*100;h=h+0.5;h=(int)h;h=h/100;returnh;第57题1、给定程序中,函数fun的功能是:计算出形参s所指字符串中包含的单词个数,作为函数值返回。为便于统计,规定各单词之间用空格隔开。例如,形参s所指的字符串为:ThisisaClanguageprogram.,函数的返回值为6。intfin(char*s){intn=0,flag=0;while(*s!=A0'){if(*s!=''&&flag==0){/**********found**********/_1_;flag=l;}//n++/*********字found**********/if风=='')flag=_2_;//0/**********found**********/_3_;〃s++)returnn;)2、给定程序modi.c中,函数fun的功能是:求三个数的最小公倍数。例如,给变量xl、x2、x3分别输入15112,则输出结果应当是:330。fun(intx,inty,intz){intj,t,n,m;/************found************/j=0;〃改为j=lt=j%x;/字***********found************/m=t%y;〃改为j%yn=j%z;while(t!=0llm!=0lln!=0){j=j+l;t=j%x;/,***********found************/m=t%y;//改为j%yn=j%z;)returnj;)3、请编写函数fun,它的功能是:求出能整除形参x且不是偶数的各整数,并按从小到大的顺序放在pp所指的数组中,这些除数的个数通过形参n返回。例如,若x中的值为:35,则有4个数符合要求,它们是:1,5,7,35。voidfun(intx,intpp[],int*n)|inti,k,j=O;for(i=l;i<=x;i+=2)(if((x%i)==0)PPlj++]=i;*n=j;)for(i=0;ipp[k])(x=pp[i];pp[i]=ppfj];PP(j]=x;})第58题1、给定程序中,函数fun的功能是:利用指针数组对形参ss所指字符串数组中的字符串按由长到短的顺序排序,并输出排序结果。ss所指字符串数组中共有N个字符串,且串长小于M。请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。

405voidfin(char(*ss)[M]){(har*ps[N],*tp;inti,j,k;for(i=0;i

406Thestringaftersortingbylength:

407

408");for(i=0;i#include#defineN5#defineM8intfin(char(*ss)[M],char*t){inti;*********found**********/for(i=0;i<_1_;i++)〃第一处:N/字*********found**********/if(strcmp(ss[i],t)==O)return_2_;〃第二处:ireturn-1;main(){charch[N][M]={,4f\Hwhile^MswitchVint,',MforM},t[M];intnj;printf("

409Theoriginalstring

410

411n);for(i=0;i

412u);printf("

413Enterastringforsearch:");gets(t);n=fun(ch,t);/*******************/if(n==_3_)printfC'XnDon'tfound!

414");〃第三处:-1elseprintf("

415Thepositionis%d.

416",n);}2、给定程序modi.c中,函数fun的功能是:计算n!例如,给n输入5,则输出120.000000。请改正程序中的错误,使它能得出正确结果。#include#includedoublefun(intn){doubleresult=1.0;/字***********found************/ifn=0〃第一处:力口上(n==0)return1.0;while(n>l&&n<170)/***********************/result*=n-〃第二处:加上;分号returnbase;returnresult;main(){intn;printf("InputN:”);scanf("%d”,&n);printf(',

417

418%d!=%lf

419

420,',n,fun(n));)3、规定输入的字符串中只包含字母和*号。请编写函数fun,它的功能是:除了尾部连续的*号之外,将字符串中其它*号全部删除。形参p已指向字符串中最后一个字母。在编写函数时,不得使用C语言提供的字符串函数。例如,字符串中的内容为:

421****A*BC*DEF*G******,删除后,字符串中的内容应当是:ABCDEFG*******。voidfun(char*a,char*p){charb[81],*k;inti=0,j=0;k=a;while(k<=p)if(*k!='*'){b[i]=*k;i++;k++;}elsek++;while(*(++p)){b[i]=*p;i++;}b[i]=AO';i=0;while(b[i]!=,0'){a[j]=b[i];j++;i++;}a[j]=^';)第60题1、程序通过定义学生结构体变量,存储了学生的学号、姓名和3门课的成绩。函数fun的功能是将形参a所指结构体变量中的数据赋给函数中的结构体变量b,并修改b中的学号和姓名,最后输出修改后的数据。例如:a所指变量中的学号、姓名、和三门课的成绩依次是:1000k"ZhangSan",95、80、88,则修改后输出b中的数据应为:10002,"LiSi\95、80、88。请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。voidfin(structstudenta){Jructstudentb;inti;/**********found**********/b=_1_;b.sno=10002;/*********nd**********/strcpy(_2_,"LiSi");printf(H

422Thedataaftermodified:

423H);printf(H

424No:%ldName:%s

425Scores:",b.sno,b.name);/**********found**********/for(i=0;i<3;i++)printf("%6.0f",b._3_);printf("

426");)第1处:内容为[b=a;]第2处:内容为[strcpy(b.name,"LiSi");]第3处:内容为[for(i=0;i<3;i++)printf(*%6.Of”,b.score[i]);]2、给定程序modi.c中函数fun的功能是:计算S=f(-n)+f(-n+1)+-+f(O)+f(1)+f(2)+・“+f(n)的值。例如,当n为5时,函数值应为:10.407143。f(x)函数定义如下:xX)且x#2f(x)=H0x=0或x=2uGc-l)/(x-2)x<0请改正程序中的错误,使程序能输出正确的结果。#include#include#include/************found************/f(doublex)if(x==0.0llx==2.0)return0.0;elseif(x<0.0)return(x-l)/(x-2);elsereturn(x+l)/(x-2);}doublefun(intn)intidoubles=0.0,y;for(i=-n;i<=n;i++){y=f(1.0*i);s+=y;}/************found************/returns)main()(printf(n%f

427M,fun(5));}第1处:内容为[doublef(doublex)]第2处:内容为[returns;]3、请编写一个函数fun,它的功能是:将ss所指字符串中所有下标为奇数位置上的字母转换成大写(若该位置上不是字母,则不转换)。例如,若输入〃abc4EFG”,则应输出"aBc4EFG”。voidfun(char*ss)(inti,n=0;char*p;P=ss;

428while(*p++!='\0')/*判断是否到了字符串的末尾*/n++;for(i=l;i='a'&&ss[i"='z')/*判断该字符是否为小写字母*/ss[i]=ss[i]-'a'+'A';/*若上述条件成立,则将其转换为大写字母*/)第61题1、程序通过定义学生结构体变量,存储了学生的学号、姓名和3门课的成绩。所有学生数据均以二进制方式输出到student.dat文件中。函数fun的功能是从指定文件中找出指定学号的学生数据,读入此学生数据,对该生的分数进行修改,使每门课的分数加3分,修改后重写文件中该学生的数据,即用该学生的新数据覆盖原数据,其它学生数据不变;若找不到,则什么都不做。请在程序的卜划线处填入正确的内容并把下划线删除,使程序得出正确的结果。voidfun(char*filename,longsno){FILE*fp;STUn;inti;fp=fopen(filename,*rb+*);/**********found**********/while(!—1—){fread(&n,sizeof(STU),1,fp);/**********found**********/if(n.sno_2_)break;}if(!feof(fp)){for(i=0;i<3;i++)n.score[i]+=3;/**********found**********/fseek(fp,-lL*(long)_3_,SEEK_CUR);fwrite(&n,sizeof(STU),1,fp);)fclose(fp);)第1处:内容为[while(!feof(fp))]第2处:内容为[if(n.sno==sno)break;]第3处:内容为[fseek(fp,-1L*(1ong)sizeof(STU),SEEK_CUR);]2、给定程序MOD".C中函数fun的功能是:求k!(k<13),所求阶乘的值作为函数值返回。例如:若k=10,则应输出:3628800,请改正程序中的错误,使它能得出正确的结果ttincludelongfun(intk)if(k<0)return(k*fun(k-1));/************fotind************/elseif(k=0)returnIL;elsereturn0;main(){intk=10;printf(*%d!=%ld

429*,k,fun(k));}第1处:内容为[if(k>0)]第2处:内容为[elseif(k-0)]3、编写函数fun,它的功能是:计算并输事下列级数和:11S=+1X22X3nX(n+1)例如,当n=10时,函数值为:0.909091odoublefun(intn){inti;doubles=0;for(i=l;i〈=n;i++)s=s+1.0/(i*(i+l));return(s);)第62题1、给定程序中,函数fun的功能是:将形参n所指变量中,各位上为偶数的数去除,剩余的数按原来从高位到低位的顺序组成一个新的数,并通过形参指针n传回所指变量。例如,输入一个数:27638496,新的数:为739。请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。#includevoidfun(unsignedlong*n){unsgnedbngx=0,jintt;i=l;while(*n)/**********f^)und**********/{t=*n%_1_;/**********f^)und**********/if(t%2!=_2_){x=x+t*i;i=i*10;}*n=*n/10;)/**********found**********//************found************/main()*n=_3_;{unsignedlongn=-l;while(n>99999999lln<0){printf("Pleaseinput(0

430Theresultis:%ld

431';n);

432|第1处:内容为[{t=*n%10;]第2处:内容为[if(t%2!=0)J第3处:内容为[*n=x;]2,给定程序M0DI1.C中函数fun的功能是:根据形参m的值(2Wm<9),在m行m列的二维数组中存放如下所示规律的数据,由main函数输出。请改正程序函数中的错误,使它能得出正确的结果。#include#defineM10inta[M][M]={0};/**************found**************/fun(intintm){intj,k;for(j=0;j

433");}}第1处:内容为[fun(inta[UM],intm)]第2处:内容为[a|j][k]=(k+D*(j+l);J3、编写函数fun,它的功能是计算下列级数和,和值由函数值返回。x*2x*3x*ns=1+x++++2!3!zi!例如,当n=10,x=0.3时,函数值为1.349859。doublefun(doublex,intn){inti;doublef=l.0,h=x;doubles=l;s=s+h/f;/*求公式中1、2两项的和(即1+x)*/for(i=2;i<=n;i++){f=f*i;/*求公式中每一项分母的阶乘值*/h=h*x;/*求公式中每一项分子的乘方值*/s=s+h/f;}return(s);}第63题1、给定程序中,函数fun的功能是:计算x所指数组中N个数的平均值(规定所有数均为正数),平均值通过形参返回主函数,将小于平均值且最接近平均值的数作为函数值返回,在主函数中输出。例如,有10个正数:4630324061745154826,平均值为:30.500000主函数中输出:m=30.0请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。doublefin(doublex[],double*av){nti,j;doubled,s;s=0;for(i=0;i=2)&&(n<10){yes=1;for(j=2;j<=high/2;j++)if(high%j=0)/************found************/{yes=0;break}if(yes){sum+=high;n++;}high—;}returnsum;}第1处:内容为[while((high>=2)&&(n<10))]第2处:内容为[{yes=O;break;}]3、假定输入的字符串中只包含字母和*号。请编写函数fun,它的功能是:将字符串尾部的*号全部删除,前面和中间的*号不删除。

434例如,字符串中的内容为:****a*bc*def*g*******,删除后,字符串中的内容应当是:****A*BC*DEF*G。在编写函数时,不得使用C语言提供的字符串函数。voidfun(char*a){charb[81];inti=O,j,s=O;j=strlen(a)-l;while&&(a[j]==**,))j-;while(j!=-l){b[i]=a[j];j-;i++;}b[i]=,\O,;j=O;i=O;while(b[i++]!=A0')S++;i=0;while(b[i]!=V)'){a[j+s]=b[i];j++;i++;}a[s]=W;}第64题1、给定程序中,函数fun的功能是:找出NXN矩阵中每列元素中的最大值,并按顺序依次存放于形参b所指的一维数组中。请在程序的下划线处填入正确的内容并把F划线删除,使程序得出正确的结果。#defineN4void£in(int(*a)[N],ht*b){hti,j;for(i=0;i

435Thematrix:

436u);for(i=0;i

437n);fun(_3_);printf("

438Theresultis:n);for(i=0;i

439H);)第1处:内容为[b[i]=a[0][i];]第2处:内容为[if(b[i]=num)(pi=pi+t;n=n+2;s=-s;/************found************/t=s%n;)pi=pi*4;returnpi;)第1处:内容为[while((fabs(t))>=num)]第2处:内容为3、假定输入的字符串中只包含字母和*号。请编写函数fun,它的功能是:除了字符串前导的*号之外,将串中其它*号全部删除。在编写函数时,不得使用C语言提供的字符串函数。函数fun中给出的语句仅供参考。例如,字符串中的内容为:****A*BC*DEF*G******,删除后,字符串中的内容应当是:****ABCDEFG。voidfun(char*a){charb[81];inti=0,j=0;while(a[i]&&(a[i]==,))

440{b[j]=a[i];j++;i++:}while(a[i])if(a[i]!='*'){b[j]=a[i];j++;i++;}elsei++;b[j]=\0>;j=O;i=O;while(b[j]){a[i]=b[j];i++;j++;}a[i]='\0':)第65题1、给定程序中,函数fun的功能是建立一个NXN的矩阵。矩阵元素的构成规律是:最外层元素的值全部为1;从外向内第2层元素的值全部为2;第3层元素的值全部为3,…依次类推。例如,若N=5,生成的矩阵为:1111112221123211222111111请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。#include#defineN5/**********^^und**********/voidfun(int(*a)_l_){nti,j,k,m;if(N%2==0)m=N/2;elsem=N/2+l;for(i=0;i

441Theresultis:

442M);for(i=0;i

443H);))第1第2第3处:内容为[voidfin(int(*a)[N])]处:内容为[for(j=i;jdoublefun(intn)doubleresult=l.O;while(n>l&&n<170)/*********found*********/result*=-n;/*********found*********/return;)main()(intn;printf("Enteraninteger:");scanfC%dH,&n);printf(n

444

445%d!=%lg

446

447,',n,fun(n));}第1处:内容为[result*=(double)n--;]第2处:内容为[returnresult;]3、假定输入的字符串中只包含字母和*号。请编写函数fun,它的功能是:只删除字符串前导和尾部的*号,串中字母之间的*号都不删除。形参n给出了字符串的长度,形参h给出了字符串中前导*号的个数,形参e给出了字符串中最后*号的个数。在编写函数时,不得使用C语言提供的字符串函数。例如,字符串中的内容为:****A*BC*DEF*G******,删除后,字符串中的内容应当是:A*BC*DEF*Go注意:部分源程序存在文件prog.c中。voidfun(char*a,intn,inth,inte){charb[81],*c,*d;inti=0,j=0;c=a;d=a;c=c+h;d=d+n-e-l;while(c<=d){b[i]=*c;i++;c++;}bfiJ^O';i=0;while(b[i]){a[j]=b[i];j++;i-H-;}aUi;)第66题1、给定程序中,函数fun的功能是:将形参n中,各位上为偶数的数取出,并按原来从高位到低位相反的顺序组成一个新的数,并作为函数值返回。例如,输入个整数:27638496,函数返回值为:64862o请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。#includeunsignedlongfun(unsignedlongn){unsgnedbngx=0;intt;while(n){t=n%10;/**********,ound**********/if(t%2=_l_)/**********,ound**********/x=_2_+t;

448/**********found**********/n=_3_;}returnx;}main(){unsignedlongn=-l;while(n>99999999lln<0){printf(MPleaseinput(0

449Theresultis:%ld

450'\fun(n));}第1处:内容为[if(t%2==0)]第2处:内容为[x=x*10+t;]第3处:内容为[n=n/10J2、给定程序modi.c中,函数fun的功能是:从N个字符串中找出最长的那个串,并将其地址作为函数值返回。各字符串在主函数中输入,并放入一个字符串数组中。请改正程序中的错误,使它能得出正确结果#defineN5#defineM81/************found************/fun(char(*sq)[N]){intichar*sp;sp=sq[0];for(i=0;idoublefun(intn){hti;doubles,t/**********found**********/s=_1_;/**********found**********/for(i=l;i<=_2_;i++){t=2.0*i;/**********found**********/s=s+(2.0*i-1)*(2.0*i+1)/_3_;)returns;第1处:内容为[s=0.0;]第2处:内容为[for(i=l;i<=n;i++)]第3处:内容为[s=s+(2.0*i-l)*(2.0*i+l)/(t*t);]2、给定程序modi.c中,函数fun的功能是:求S的值。设_1x33x55x7(2x«-l)x(2x?J+l)224262(2x]例如,当k为10时,函数值应为:1.533852。请改正程序中的错误,使它能得出正确结果。#include#include#include/************found************/fun(intk){intn;doubles,w,p,q;n=l;s=1.0;while(n<=k){w=2.0*n;p=w-1.0;q=w+1.0;s=s*w*w/p/q;n++;}/************found************/

451returns}main(){system(MclsH);printf("%f

452”,fun(10));}第1处:内容为[doublefun(intk)]第2处:内容为[returns;]2、函数fun的功能是:将a、b中的两个两位正整数合并形成一个新的整数放在c中。合并的方式是:将a中的十位和个位数依次放在变量c的十位和千位上,b中的十位和个位数依次放在变量c的个位和百位上。例如,当a=45,b=12。调用该函数后,c=5241voidfun(inta,intb,long*c){inta_up,ajow,b_up,b_low;a_up=a/10;/*求正整数a的十位数*/a_low=a%10;/*求正整数a的个位数*/b_up=b/10;/*求正整数b的十位数*/b_low=b%10;/*求正整数b的个位数*/*c=a_low*1000+b_low*100+a_up*10+b_up;}第68题1、给定程序中,函数fun的功能是计算下式«357,、孰_](2xn+1)234262(2xn)2直到(2xn+l)£10-3(2xn)2,并把计算结果作为函数值返回。例如:若形参e的值为le-3,函数的返回值为0.551690c#includedoublefun(doublee){hti,k;doubles,tx;s=0;k=l;i=2;x=_l_/4;/*********nd**********/while(x_2_e){s=s+k*x;x=_3_/(t*t);i++;)returns;}main(){doublee=le-3;printfC'^nTheresultis:%f

453n,fun(e));}第1处:内容为[x=3.0/4;]第2处:内容为[while(x>e)]第3处作:内容为[x=(2*i+l)/(t*t);]2、给定程序modi,c中,函数fun的功能是:应用递归算法求形参a的平方根,求平方根的迭代公式如下:1axl=—(x0+)2xO例如,2的平方根值为:1.414214。#include#include/************found************/fun(doublea,doublexO){doublexl,yxl=(x0+a/x0)/2.0;/************nd************/if(fabs(xl-x0)<0.00001)y=fun(a,xl);elsey=xl;returny;)main(){doublex;printf(MEnterx:,,);scanf(,,%lf,,&x);printf(nThesquarerootof%lfis%lf

454n,x,fun(x,1.0));)第1处:内容为[doublefun(doublea,doublexO)]第2处:内容为[if(fabs(xl-xO)>0.00001)]3、学生的记录由学号和成绩组成,N名学生的数据已在主函数中放入结构体数组s中,请编写函数fun,它的功能是:把分数最低的学生数据放在h所指的数组中,注意:分数最低的学生可能不止一个,函数返回分数最低的学生的人数.

455intfun(STREC*a,STREC*b){inti,j=0,min,k,f=0:min=(*a).s;for(i=l;i********found**********/voidfun(intx,inty)intt;t=x;x=y;y=t;)main()(inta,b;a=8;b=3;fun(&a,&b);printf("%d,%d

456n,a,b);}第1处:内容为[voidfun(inl*x,inl*y)]第2处:内容为[t=*x;*x=*y;*y=t;]3、函数fun的功能是:将a、b中的两个两位正整数合并形成一个新的整数放在c中。合并的方式是:将a中的十位和个位数依次放在变量c的百位和个位上,b中的十位和个位数依次放在变量c的千位和十位上。例如,当a=45,b=12。调用该函数后,c=1425ovoidfun(inta,intb,long*c)(inta_up,a_low,b_up,b_low;a_up=a/10;/*求正整数a的十位数*/a_low=a%10;/*求正整数a的个位数*/b_up=b/10;/*求正整数b的十位数*/b_low=b%10;/*求正整数b的个位数*/*c=b_up*1000+a_up*100+b_low*10+a_low;}第70题1、给定程序中,函数fun的功能是:调用随机函数产生20个互不相同的整数放在形参a所指数组中(此数组在主函数中已置0)。请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。#defineN20voidfun(ht*a){inti,x,n=0;x=rand()%20;/**********found**********/while(n<―1—){for(i=0;i

457}第1处:内容为[intk=O;]第2处:内容为[while(*pII*q)]3、N名学生的成绩已在主函数中放入一个带头节点的链表结构中,h指向链表的头节点。请编写函数fun,它的功能是:找出学生的最高分,由函数值返回。doublefun(STREC*h){STREC*c;doublemax;c=h->next;max=c->s;/*假定首结点为最大值*/while(c->next!=0){c=c->next;/*c后移一个结点*/if(maxs)max=c->s;/*找出最大值并将其赋给变量max*/}returnmax;/*返回最大值*/}第71题1、给定程序中,函数fun的功能是:判定形参a所指的NXN(规定N为奇数)的矩阵是否是"幻方",若是,函数返回值为1;不是,函数返回值为0」'幻方”的判定条件是:矩阵每行、每列、主对角线及反对角线上元素之和都相等。例如,以下3X3的矩阵就是一个"幻方":492357816请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。int£in(int(*a)[NJ){hti,j,m1,m2,row,colum;ml=m2=0;for(i=0;i#include#include/************(ound************/fun(intn){intab,c,k;doubless=0.0;a=2;b=l;for(k=1;k<=n;k++){/************found************/s=s+(Double)a/b;c=a;a=a+b;b=c;}returns;)main(){intn^;system(,'clsn);printf(H

458Thevalueoffunctionis:%lf

459M,fun(n));)第1处:内容为[doublefun(intn)]第2处:内容为[s=s+(double)a/b;]3、程序定义了NXN的二维数组,并在主函数中自动赋值。请编写函数fun,函数的功能是:使数组右上三角元素中的值乘以m。例如:若m的值为2,a数组中的值为11971I218141a=l238I则返回主程序后a数组中的值应为12616114561145121注意:部分源程序存在文件prog.c中。voidfun(inta[][N],intm){intij;for(i=0;i=i;j-)a[i][j]*=m;)第72题1、给定程序中,函数fun的功能是:将a所指3X5矩阵中第k列的元素左移到第。列,第k列以后的每列元素行依次左移,原来左边的各列依次绕到右边。例如,有下列矩阵:123451234512345若k为2,程序执行结果为345123451234512

460请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。#defineM3#defineN5voidfin(int(*a)[N],intk){hti,j,p,temp;/*********不found**********/for(p=l;p<=_1_;p++)for(i=0;i

46155555555则一维数组中的内容应是:333333334444444455555555。voidfun(int(*s)[10],nt*b,nt*n,htmm,ntnn){intx,y;for(x=0;x#include#include/**************found**************/fun(n)intn;{inta=2,b=l,c,k;doubles=0.0;for(k=1;k<=n;k++){s=s+1.0*a/b;/**************found**************/c=a;a+=b;b+=c;)retum(s);}main(){intn=5;system(,'cls");printf(M

462Thevalueoffunctionis:%lf

463u,fun(n));}第1处:内容为[doublefun(n)]第2处:内容为[c=a;a+=b;b=c;]3、请编写函数fun,函数的功能是:将M行N列的二维数组中的数据按列的顺序依次放到一维数组中。例如,二维数组中的数据为:333333334444444455555555则一维数组中的内容应是:334455334455334455334455ovoidfun(int(*s)[10],ht*b,ht*n,htmm,htm){intx,y;for(x=0;x

464for(y=0;y

465Aftercount:

466H);for(i=0;iv26;i++)%dif(k[i]=max)printfC^Xnletter\'%cV:times

467n,i+,a\k[ij);)第1处:内容为[ch=tolower(*s);]第2处:内容为[k[n]+=l;]第3处:内容为[if(max/************^ound************/include"stdio.h"/************found************/upfst(charp){intk=0;for(;*p;p++)if(k){if(个=")k=0;}elseif(*p!=*'){k=1;*p=toupper(*p);})main(){charchrstr[81];systemC^cls");printf(M

468PleaseenteranEnglishtextline:");gets(chrstr);printf(u

469

470Beforechanging:

471%sM,chrstr);upfst(chrstr)printf(u

472Afterchanging:

473%sn,chrstr);)第1处:内容为悌include"stdio.h"]第2处:内容为[upfst(char*p)]3、请编写函数fun,函数的功能是:将放在字符串数组中的M个字符串(每串的长度不超过N),按顺序合并组成一个新的字符串。例如,字符串数组中的M个字符串为:AAAABBBBBBBCC则合并后的字符串的内容应是:AAAABBBBBBBCC»提示:strcat(a,b)的功能是将字符串b复制到字符串a的串尾上,成为一个新串。#defineM3#defineN20voidfun(chara[M][N],char*b)(inti,j,k=O;for(i=0;i

474/**********found¥*********/if(len<=_2_)/**********found**********/strcpy(ss[j++],_3_);}returnj;|第1第2第3处:内容为[for(i=0;i

475M);}/*******************/if(find=_3_)printf("

476Don'tfound!

477n);)第[1]处:内容为[for(i=0;i

478Dontfound!

479");]2、给定程序modi.c中函数fun的功能是:判断一个整数m是否是素数,若是返回1,否则返回0。在main。函数中,若fun返回1输出YES,若fun返回0输出NO!。intfun(intm){intk=2;while(k<=m&&(m%k))/***********************/k++/***********************/if(m=k)return1;elsereturn0;)第[1]处:第2处:内容为[k++;]内容为[if(m==k)]3、请编写函数fun,函数的功能是:移动字符串中的内容,移动的规则如下:把第1到第m个字符平移到字符串的最后,把第m+1到最后的字符移到字符串的前部。例如,字符串中原有的内容为:ABCDEFGHIJK,m的值为3,则移动后字符串中的内容应该是:DEFGH1JKABC。voidfun(char*w,intm){inti=O,x,j;charch;for(j=0;w|j];j+4-)i++;for(x=0;x

480while(p)longcharfloatw[i-l]=ch;/*将m+l到最后的字符之间的字符依次向前平移m个存储单元*/})第78题1、给定程序中,函数fun的功能是:在形参ss所指字符串数组中,将所有串长超过k的字符串中右边的字符删除,只保留左边的k个字符。ss所指字符串数组中共有N个字符串,且串长小于M。请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。#defineN5#defineM10/**********found**********/voidfin(char(*ss)_1_,litk){hti=0;/**********found**********/while(i<_2_){/**********found不*********/ss[i]lk]=_3_;i++;})main()charx[N][M]={,,Create,';,Modify,,;,Sort,,;,skipu:,DeleteM};inti;printf(u

481Theoriginalstring

482

483H);for(i=0;i

484");fun(x,4);printf("

485Thestringafterdeleted:

486

487n);for(i=0;kN;详+)puts(x[i]);printf(,'

488M);)第1处:内容为[void£in(char(*ss)[M],htk)]第2处:内容为[while(ivN){]第3处:内容为[ss[i][k]=0;i++;}]2、给定程序modi.c是建立一个带头结点的单向链表,并用随机函数为各结点赋值。函数fun的功能是将单向链表结点(不包括头结点)数据域为偶数的值累加起来,并且作为函数值返回。if(p->data%2==0)sum+=p->data;/***********found**********/p=h->next;)returnsum;第1处:内容为[p=h->next;]第2处:内容为[p=p->next;]3、请编写函数fun,函数的功能是:将M行N列的二维数组中的字符数据按列的顺序依次放到一个字符串中。例如,二维数组中的数据为:WWWWSSSSHHHH则字符串中的内容应是:WSHWSHWSHWSHovoidfun(char(*s)[N],char*b){intx,y;for(x=0;x<100;x++)*(b+x)=0;for(x=0;x0){t=4i];a[i]=a[j];a[j]=t}}第1处:内容为[structstudentt;]第2处:内容为[for(i=0;i0)]2、给定程序modi.c是建立一个带头结点的单向链表,并用随机函数为各结点数据域赋值。函数fun的作用是

489求出单向链表结点(不包括头结点)数据域中的最大值,并且作为函数值返回。typedefstructaa{intdata;structaa*next;}NODE;fun(NODE*h){htmax=-l;NODE*p;/***********found**********/p=h;while(p){if(p->data>max)max=p->data;/***********found**********/p=h->next;}returnmax;}第1处:内容为[p=h->next;]第2处:内容为[p=p->next;]3、请编写函数fun,函数的功能是:删去一维数组中所有相同的数,使之只剩一个。数组中的数已按由小到大的顺序排列,函数返回删除后数组中数据的个数。例如,一维数组中的数据是:2223445666677899101010o删除后数组中的内容应该是:2345678910,intfun(inta[],htn){inti,j,x;for(i=0;idata_3_q->data){t=p-xiata;p->data=q->data;q->data=t;}q=q->next;)p=p->next;))第1处:内容为[p=h->nextj第2处:内容为[q=p->next;]第3处:内容为[if(h>data>q->data)]2、给定程序modi.c中函数fun的功能是:计算s所指字符串中含有t所指字符串的数目,并作为函数值返回。请改正函数fun中指定部位的错误,使它能得出正确的结果。#defineN80intfun(char*s,char*t){intn;char*p,*r;n=0;while(*s){P=s;r=p;while(*r)if(*r==*p){r++;p++;elsebreak;if(*r=O)n++;s++;)returnn;}第1处:内容为[r=t;]第2处:内容为[if(*r==、O)]3、请编写函数fun,函数的功能是:统计各年龄段的人数。N个年龄通过调用随机函数获得,并放在主函数的age数组中;要求函数把0至9岁年龄段的人数放在d[0]中,把10至19岁年龄段的人数放在仇1]中,把20至29岁年龄段的人数放在d[2]中,其余依此类推,把100岁(含100)以上年龄的人数都放在仇10]中。结果在主函数中输出。voidfun(int*a,int*b){inti;for(i=0;i

490b[i]=0;for(i=0;i10?10:*(a+i)/10]++;}第81题1、给定程序中,函数fun的功能是将不带头结点的单向链表逆置。即若原链表中从头至尾结点数据域依次为:2、4、6,8、10,逆置后,从头至尾结点数据域依次为:10,8、6、4、2,请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。#defineN5typedefstructnode{intdata;structnode*next;}NODE;/**********^^^und**********/_1_*fun(NODE*h){NODE*p,*q,*r;p=h;if(p==NULL)returnNULL;q=p->next;p->next=NULL;while(q)(/**********found**********/r=q->_2_;q->next=p;p=q;/**********l^0und**********/q=—3_;}returnp;}第1处:内容为[NODE*fun(NODE*h)]第2处:内容为[r=q->next;]第3处:内容为[q=r;]2、给定程序modi.c中函数fun的功能是:将s所指字符串中的字母转换为按字母序列的后续字母(但Z转换为A,z转换为a),其它字符不变。请改正函数fun中指定部位的错误,使它能得出正确的结果。voidfunChar*s)(/**********found***********/while(*s!='@'){if(*s>=*A,&&*s<='Z'II*s>='a'&&*s<=,z,){if(*s=='Z,)*s='A';elseif(*s=='z')*s=,a';else*s*1;)/**********found***********/(*s)++;))main(){chars[80];system(HclsH);printf(n

491Enterastringwithlength<80.:

492

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

494Thestring:

495

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

497

498TheCords

499

500");puts(s);}第1处:内容为[whi侬*s)]第2处:内容为[s++;]3、请编写函数fun,函数的功能是:统计一行字符串中单词的个数作为函数值返回。一行字符串在主函数中输入,规定所有单词由小写字母组成,单词之间由若干个空格隔开,一行的开始没有空格。intfun(_1_;/**********found**********/

501if(5=_2_)return;q=p->next;p->next=NULL;while(q){r=q>next;q->next=p;/**********found**********/p=q;q=_3_;}h->next=p;}第1处:内容为[p=h->next;]第2处:内容为[if0=0)return;]第3处:内容为[p=q;q=?]2、给定程序modi.c中函数fun的功能是:比较两个字符串,将长的那个字符串的首地址作为函数值返回。请改正函数fun中指定部位的错误,使它能得出正确的结果。#include#include#include/**********found**********/charfun(char*s,char*t){intsl=O,tl=O;char*ss,*tt:ss=s;tt=t;while(*ss){S1++;/*********nd字*********/(*ss)++;}while(*tt){tl++;/**********found字*********/elsereturns;)main(){chara[80],b[80J;system("cls");printf(M

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

503Enterastringagain:");gets(b);printf(H

504Thelongeris:

505

506V'%s\',

507,\fun(a,b));)第1处:内容为[char*fun(char*s,char*t)]第2处:内容为[ss++;]第3处:内容为[tt++;]3、请编写函数fun,它的功能是:求出ss所指字符串中指定字符的个数,并返回此值。例如,若输入字符串:123412132,输入字符为:1,则输出:3。intfun(char*ss,charc)(inttimes=0,i,len;len=strlen(ss);for(i=0;i#include#includeintfin(char*s){char*lp,*rp;/**********fdund**********/lp=_1_;rp=s+strlen(s)-l;while((toupper(*lp)==toupper(*q)))&&(lp

508\,,%s

509isaPalindromeAn

510",s);

511elseprintf(M

512\M%sVisn*taPalindrome.

513

514M,s);第1处:内容为[lp=s;]第2处:内容为[lp++;rpT)]第3处:内容为[if(lp='O'&&s[i]v=9)/*********不found**********/s[j]=s[i];/*********nd**********/s[j]="\O";)第1处:内容为[S[j++]=s[i];]第2处:内容为[sU]=、(y;]3、请编写一个函数voidfun(chara口,charb[],intn),其功能是:删除一个字符串中指定下标的字符。其中,a指向原字符串,删除指定字符后的字符串存放在b所指的数组中,n中存放指定的下标。例如,输入一个字符串:World,然后输入3,则调用该函数后的结果为:Word«voidfun(chara[],charb[],intn)(inti=0,j=0;for(i=0,j=0;idoublefl(doublex){returnx*x;}doublef2(doublex,doubley){returnx*y;}doublefin(doublea,doibleb)_I—(*D();doublerl,2;/字*********found**********/f=_2_;/*pointfountionfl*/rl=f(a);f=_3_;/*pointfountionf2*/r2=(*f)(a,b);returnrl+2;)main(){doublexl=5,x2=3,r;r=fun(xl,x2);printf("

515xl=%f,x2=%f,xl*xl+xl*x2=%f

516n,x1,x2,r);)第1处:内容为[double第2处:内容为[f=内;/*pointfountionfl*/]第3处:内容为[f=f2;/*pointfountionf2*/]2、给定程序modi.c中函数fun的功能是:对N名学生的学习成绩,按从高到低的顺序找出前名学生来,并将这些学生数据存放在一个动态分配的连续存储区中,此存储区的首地址作为函数值返回。请改正函数fun中指定部位的错误,使它能得出正确的结果。#defineN10typedefstructss{charnum[10];ints;}STU;STUfun(STUa[],htm){STUb[N],tinti,j,k;*t=calloc(sizeof(STU),m);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;)第1处:内容为[t=(STU*)calloc(sizeof(STU),m);]第2处:内容为3、学生的记录由学号和成绩组成,N名学生的数据己在主函数中放入结构体数组s中,请编写函数fun,它的功能是:把低于平均分的学生数据放在b所指的数组中,低于平均分的学生人数通过形参n传回,平均分通过函数值返回。doublefun(STREC*a,STREC*b,int*n){intjj;doubleaver=0;*n=0;for(i=0;i

517aver=aver+a[i].s;/*计算总分*/aver=aver/N;/*计算平均分*/for(i=0;iav){/**********found**********/yl_2_]=x[ij;x[i]=-l;}for(i=0;in){fork=0;kn){a[len-s+n]=A0,;}第86题1、给定程序中,函数fun的功能是:将形参n中,各位

518上为偶数的数取出,并按原来从高位到低位的顺序组成一个新的数,并作为函数值返回。例如,从主函数输入一个整数:27638496,函数返回值为:26846o#includeunsignedlongfun(unsignedlongn){unsignedbngx=0,§iintt;s=n;/**********found**********/i=_l_;/*********字found**********/while(_2_){t=s%10;if(t%2==0){/*********不found**********/x=x+t*i;i=_3_;}s=s/10;)returnx;)main(){unsignedbngn=-l;while(n>99999999lln<0){printf(MPleaseinput(0

519Theresultis:%ld

520,\fun(n));}第1处:内容为第2处:内容为[while(s)]第3处:内容为[x=x+t*i;i=i*10;]2、给定程序modi.c中的函数Creatlink的功能是创建带头结点的单向链表,并为各结点数据域赋0到m-1的值。请改正函数Creatlink中指定部位的错误,使它能得出正确的结果。typedefstructaa{intdata;structaa*next;}NODE;NODE*Creatlink(intn,htm){NODE*h=NULL,*p,*s;inti;p=(NODE)malloc(sizeof(NODE));h=p;p->next=NULL;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;)returnp;)第1处:内容为[p=(NODE*)malloc(sizeof(NODE));]第2处:内容为[returnh;]3、学生的记录由学号和成绩组成,N名学生的数据已在主函数中放入结构体数组s中,请编写函数fun,它的功能是:把分数最高的学生数据放在b所指的数组中,注意:分数最高的学生可能不止一个,函数返回分数最高的学生人数。intfun(STREC*a,STREC*b)(inti,j=0,max,k,f=0;max=(*a).s;for(i=l;imax)max=a[i].s;/*从所有的学生数据中找出最高的分值*/for(i=0;i

5211x33x55x7.(2x»-l)x(2x«+l)尹亍-不+三一“*7)例如,当形参n的值为10时,函数返回:-0.204491。请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。#includedoublefun(intn){hti,k;doubles,ts=0;/:i:*********found**********/k=_l_;for(i=l;i<=n;i++){/**********found**********/t=_2_;s=s+k*(2*i-1)*(2*i+1)/(t*t);/:,,*********found字*********/k=k*_3_;)returns;}main(){htn=-l;while(n<0){prntf(uPleasehput(n>0):');scanf(,,%d,\&n);}printf("

522Theresultis:%f

523n,fun(n));}第1处:内容为[k=l;]第2处:内容为[t=2*i;]第3处:内容为[k=k*-l;]2、给定程序M0DI1.C中函数fun的功能是:根据以下公式求值,并作为函数值返回。例如,给指定精度的变量eps输入0.0005时,应当输出Pi=3.140578»retum(s);)main(){doublex;printf(n

524Pleaseenteraprecision:");scanf(n%lf',&x);printf(',

525eps=%lf,Pi=%lf

526

527H,x,fun(x));}第1处:内容为第2处:内容为[retum(2*s);]3、程序定义了NXN的二维数组,并在主函数中自动赋值。请编写函数fun(inta[][N],intn),函数的功能是:使数组左下三角元素中的值乘以no例如:若n的值为3,a数组中的值为119711397Ia=l238l则返回主程序后a数组中为1698114561I1215181voidfun(inta[][NJ,intn){inti,j;for(i=0;i“1121231234—=1+—+—X—+-X-X—+-X-X-X—+23353573579doublefun(doublee){hti;doubles,x;/**********found**********/{doubles,t;s=0.0;intn=l;请改正程序中的错误,使它能得出正确结果。#include#inciudedoublefun(doubleeps)/************[ound************/t=0;while(t>eps){s+=t;t=t*n/(2*n+l);n++;s=0;i=_l_;x=1.0;while(x>e){/*********nd**********/_2_;/*********nd**********/x=(2.0*i-1)/((_3_)*(2.0*i));s=s+x;}returns;)main(){doublee=le-3;

528printf("

529Theresultis:%f

530*',fun(e));voidfun(structstudent*b)第1处:内容为[s=0;i=0;]第2处:内容为[i++;]第3处:内容为[x=(2.0*i-l)/((2.0*i)*(2.0*i))J2、给定程序modi.c中函数fun的功能是:删除p所指字符串中的所有空白字符(包括制表符、回车符及换行符)。输入字符串时用‘#'结束输入。fun(char*p){inti,t;charc[80];/************found************/For(i=O,t=O;p[i];i++)if(!isspace(*(p+i)))c[t++]=p[i];/************found************/c[t]="\O";strcpy(p.c);}第1处:内容为[for(i=0,t=0;p[i];i++)]第2处:内容为3、程序定义了NXN的二维数组,并在主函数中自动赋值。请编写函数fun(inta[][N]),函数的功能是:使数组左下三角元素中的值全部置成0。例如:a数组中的值为1197110971a=l238l则返回主程序后a数组中为100811456110001voidfun(inta[][N])(inti,j;for(i=0;istructstudent{longsno;charname[10J;floatscore[3];);/**********found**********/b_l_=10004;/**********found**********/strcpy(b_2_,"LiJie");}main(){structstudentt={10002,"ZhangQin,93,85,87);inti;printf(u

531

532Theoriginaldata:

533M);printf(H

534No:%ldName:%s

535Scores:M,t.sno,t.name);for(i=0;i<3;i++)printf(H%6.2fH,t.score[i]);printf("

536H);*********found**********/fun(_3_);printf("

537ThedataaftermocHfied:

538H);printf("

539No:%ldName:%s

540Scores:H,t.sno,t.name);for(i=0;i<3;i++)printf("%6.2f",t.score[i]);printf(M

541M);)第1处:内容为[b[0].sno=10004;]第2处:内容为[strcpy(b->name,"LiJie");]第3处:内容为2、给定程序modi.c中函数fun的功能是:求出s所指字符串中最后一次出现的I所指子字符串的地址,通过函数值返回,在主函数中输出从此地址开始的字符串;若未找到,则函数值为NULL。例如,当字符串中的内容为:,'abcdabfabcdxM,t中的内容为:“ab”时,输出结果应是:abcdxo当字符串中的内容为:"abcdabfabcdx”,t中的内容为:“abd”时,则程序输出未找到信息:notbefound!o#include#include#includechar*fun(char*s,char*t)char*p,*r,*a;/***********ound************/a=Null;while(*s){p=s;r=t;while(*r)/************found************/if(r==p){r++;p++;}elsebreak;if(*r==\O,)a=s;

542S++;returna;q=q->next;}/*********nd**********/main()chars[100],t[100],*p;printf(u

543PleaseenterstringS:,,);scanf(,,%s,,,s);printf("

544Pleaseentersubstringt:,,);scanf(,,%s",t);p=fun(s,t);if(p)printf("

545Theresultis:%s

546",p);p=_3_;))第1处:内容为[q=p->next;]第2处:内容为[while(q)]第3处:内容为[p=p->next;]elseprintf("

547Notfound!

548");2、形参给定程序modi.c中函数fun的功能是:根据整型m,计算如下公式的值。}第1处:第2处:内容为[a=NULL;]内容为[if(*m=*p)]2*23*34*45,则应输出:1.463611.3、请编写一个函数fun,它的功能是:计算并输出给定整数n的所有因子(不包括1与n自身)之和。规定n的值不大于1000o例如,在主函数中从键盘给n输入的值为856,则输出为:sum=763ointfun(intn)inti,s=O;if(n<1000){for(i=2;i

549Theresultisfun(n));}第1处:内容为[for(i=2;iv=m;i++)]第2处:内容为[y+=1.0/(i*i);]3、请编写函数fun,其功能是:计算并输出下列多项式的值:s「1+%+%+%+%+……+%例如,在主函数中从键盘给n输入15,则输出为:s=2.718282o注意:要求n的值大于1但不大于100。部分源程序在文件PROG1.C中。doublefun(intn)doublem=1.0,p=1.0;inti;if(n<=llln>100)q=_l_;/*********不found**********/while(_2_){if(p->data>q->data){t=p->data;p->data=q->data;q->data=printf("Inputn(i>l&&n<=100):");scanf("%d",&n);)for(i=l;i<=n;i++){p=p*i;/*p作为中间变量,求出累乘值*/m=m+1.0/p;/*求出多项式之和*/)return(m);/*返回结果*/}第91题

5501、给定程序中,函数fun的功能是:计算形参x所指数组中N个数的平均值(规定所有数均为正数),将所指数组中小于平均值的数据移至数组的前部,大于等于平均值的数据移至x所指数组的后部,平均值作为函数值返回,在主函数中输出平均值和移动后的数据。例如,有10个正数:411734019242881214,平均值为:19.700000移动后的输出为:170198121441342428请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。#defineN10double£in(double*x)inti,jdoubleav,y[N];av=0;/**********f^)und字*********/for(i=0;i100){printf(HInputn(n>1&&n<=100):”);scanf(M%dn,&n);}for(i=l;i<=n;i++){tmp*=i;sum+=1.0/tmp;}returnsum;)第92题1、程序通过定义学生结构体变量,存储了学生的学号、姓名和3门课的成绩。函数fun的功能是将形参a中的数据进行修改,把修改后的数据作为函数值返回主函数进行输出。例如:传给形参a的数据中,学号、姓名、和三门课的成绩依次是:1000k"ZhangSan",95.00、80.00、88.00,修改后的数据应为:10002,"LiSi'\96.00、81.00、89.00ostructstudent{longsno;charname[10];floatscore[3];

551};/**********found**********/_1_fin(structstudenta)(inti;a.sno=10002;/**********found**********/strcpy(_2_,"LiSi'1);/**********found**********/for(i=0;i<3;i++)_3_+=1;returna;)第1第2第3处:内容为[structstudentfm(structstudenta)]处:内容为[strcpy(a.name,“LiSi");]处:内容为[for(i=0;i<3;i++)a.score[i]+=1;]2、给定程序modi.c中,函数fun的功能是:计算并输出下列级数的前N项之和,直到大于q为止,q的值通过形参传入。例如,若q的值为:50.0,则函数值为:49.394948。请改正程序中的错误,使程序能输出正确的结果。doublefun(doubleq)如果输入的字符在字符串中不存在,则字符串照原样输出。voidfun(chars[],charc)(char*p=s;while(*p)(if(*p!=c)s[i++]=*p;p++;}s[i]=0;}第93题1、程序通过定义并赋初值的方式,利用结构体变量存储了一名学生的信息。函数fun的功能是输出这位学生的信息。请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。#includetypedefstruct{intnum;charname[9];intn;doubles,t;n=2;s=2.0;while(s<=q)charsex;struct{intyear,month,day;}birthday;floatscore[3];}STU;/**********found**********/t=s;/************found************/s=s+(n+l)/n;n++;}printf(',n=%d

552n,n);/************************/returns;}main(){systemC^cls");printf(n%f

553n,fun(50));}第1处:内容为[s=s+(n+l.)/n;]第2处:内容为[returnt;]3、编写函数fun,函数的功能是:从s所指的字符串中删除给定的字符。同一字母的大、小写按不同字符处理。若程序执行时输入字符串为:turbocandBorland从键盘上输入字符:n,则输出后变为:turbocadborladC++voidfin(STU—1—){inti;printf(,'

554%d%s%c%d-%d-%dH,tt.num,tt.name,tt.sex,tt.birthday.year,tt.birthday.month,tt.birthday.day);for(i=0;i<3;i++)/**********found**********/printf(u%5.ir,_2_);printf(H

555n);}main(){STUstd={1,"ZhanghuaM;M\1961,10,8,76.5,78.0,82.0};printf(u

556Astudentdata:

557u);/**********found**********/fun(-3一);)第1处:内容为[voidfun(STUtt)]第2处:内容为[printf("%5.ir',tt.score[i]);]第3处:内容为[fun(std);]2、给定程序modi.c中函数fun的功能是:求出两个非零正整数的最大公约数,并作为函数值返回。例如,若给numl和num2分别输入49和21,则输出的最大公约数为7;若给numl和num2分别输入27和81,则输出的最大公约数为27。

558#includeintfun(inta,intb){intr,t;if(a

559

560M,numl,num2);a=fun(numl,num2);printf("Themaximuncommondivisoris%d

561

562H,a);}第1处:内容为[{t=a;a=b;b=t;}]第2处:内容为[retum(b);]3、假定输入的字符串中只包含字母和*号。请编写函数fun,它的功能是:删除字符串中所有的*号。在编写函数时,不得使用C语言提供的字符串函数。例如,字符串中的内容为:****A*BC*DEF*G*******,删除后,字符串中的内容应当是:ABCDEFGovoidfun(char*a)intjj=O;for(i=0;a[i]!=\0,;i++)if(a[i]!='*')a[j++]=a[i];aUl=W;}第94题1、给定程序中,函数fun的功能是:将NXN矩阵主对角线元素中的值与反向对角线对应位置上元素中的值进行交换。147交换后为:349例如,258若N=3,有下列矩阵:369请在程序的下划线处填入正确的内容并把卜划线删除,使程序得出正确的结果。#defineN4/**********found**********/voidfun(int{inti,s;1一,intn)/**********f^)und**********/for(—2—;i++){s=t[i][i];/**********found**********/t[i][n-l-i]=-3—;))main(){intt[][N]={21,1243,24,25,16,47,38,29,11,32,54,42,21,33,10),i,j;printf(u

563Theoriginalarray:

564u);for(i=0;i+)printf(H%d'\t[i][j]);printf(',

565,');)fun(t,N);printf(H

566Theresultis:

567u);for(i=0;i+)printf(n%d\t[i]|jj);printf(H

568H);))第1处:内容为[void£m(intt[][N],ritn)]第2处:内容为[for(i=0;il)例如,当给n输入5时,函数值为18;当给n输入3时,函数值为14。#include/************found************/voidfun(n){intq/************found************/if(n=l)c=10;elsec=fun(n-l)+2;retum(c);)main(){intn;printf(uEntern:,');scanf(',%d,',&n);printf(nTheresult:%d

569

570H,fun(n));)第1处:内容为[intfun(n)]第2处:内容为[if(n=l)]3、函数fun的功能是:将两个两位数的正整数a、b合并形成一个整数放在c中。合并的方式是:将a数的十位和个位数依次放在c数的千位和十位上,b数的十位和个位数依次放在c数的百位和个位上。例如,当a=45,b=12时,调用该函数后,c=4152o注意:部分源程序存在文件PROG1.C中。数据文件INDAT中的数据不得修改。voidfun(inta,intb,long*c)

571(*c=a/10*1000+b/10*100+a%10*10+b%10;)第95题1、给定程序中,函数fun的功能是根据形参i的值返回某个函数的值。当调用正确时,程序输出:x1=5.000000,x2=3.000000,x1*x1+x1*x2=40.000000请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。#includedoublefl(doublex){returnx次;}double^(doublex,doibley){returnx*y;}/**********found**********/—1—£in(inti,doiblex,doubty){if(i==D/*********nd**********/return_2_(x);else/**********found**********/return_3_(x,y);)main(){doublexl=5,x2=3,r;r=fun(l,xl,x2);r+=fun(2,xl,x2);printf(H

572xl=%f,x2=%f,x1*x1+x1*x2=%f

573

574*',x1,x2,r);}第1处:内容为[doublefin(inti,doubtx,doibley)]第2处:内容为[returnfl(x);]第3处:内容为[returnf2(x,加2、给定程序M0DI1.C中函数fun的功能是:求出数组中最大数和次最大数,并把最大数和a[0]中的数对调、次最大数和a[l]中的数对调。#defineN20voidfun(nt*ahln){inti,m,t,k;for(i=0;i<2;i++){/字*********found**********/m=0;for(k=i+1;ka[m])k=m;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,ifor(i=0;i

575");fun(b,n);for(i=0;i

576H);)第1处:内容为[m=i;]第2处:内容为[if(a[k]>a[m])m=k;]3、函数fun的功能是:将两个两位数的正整数a、b合并形成一个整数放在c中。合并的方式是:将a数的十位和个位数依次放在c数的个位和百位上,b数的十位和个位数依次放在c数的千位和十位上。例如,当a=45,b=12时,调用该函数后,c=1524ovoidfun(inta,intb,long*c){*c=b/l0*1000+a%10*100+b%10*10+a/l0;)第96题1、给定程序中,函数fun的功能是:将a所指4X3矩阵中第k行的元素与第0行元素交换。例如,有下列矩阵:123456789101112若k为2,程序执行结果为:789456123101112请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。#include#defineN3#defineM4/**********found**********/voidfun(int(*a)[N],int_1_)

577{inti,temp;/**********found**********/for(i=0;i<_2_;i++){temp=a[0][i];/**********found不*********/a[0][i]=_3_;a[k][i]=temp;}}main(){intx[M][N]={{1,2,3},{4,5,6},{7,8,9},{10,ll,12}),ij;printf(uThearraybeforemoving:

578

579°);for(i=0;i

580

581");}fun(x,2);printf(nThearrayaftermoving:

582

583u);for(i=0;i

584

585n);}}第1第2第32、处:内容为[voidfun(int(*a)[N],intk)]处:内容为[for(i=0;i

586PleaseenteranEnglishsentencewithin63letters:");gets(chrstr);d=strlen(chrstr);chrstr[d]='';chrstr[d+1]=0;printf("

587

588BeforechangingAn%sn,(hrstr);fun(chrstr);printf("

589Afterchanging:

590%s",(hrstr);1第1处:内容为皿*p—')]第2处:内容为[*(p-l)=toupper(*(p-l));]3、函数fun的功能是:将两个两位数的正整数a、b合并形成一个整数放在c中。合并的方式是:将a数的十位和个位数依次放在c数的个位和百位上,b数的十位和个位数依次放在c数的十位和千位上。例如,当a=45,b=12时,调用该函数后,c=2514。voidfun(inta,intb,long*c){*c=b%10*1000+a%10*100+b/l0*10+a/10;)第97题1、给定程序中,函数fun的功能是:在3X4的矩阵中找出在行上最大、在列上最小的那个元素,若没有符合条件的元素则输出相应信息。例如,有下列矩阵:12134781068597程序执行结果为:find:a[2][2]=9请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。#include#defineM3#defineN4void£in(int(*a)[N]){hti=0,j,find=0,rmax,c,k;while((i

591M,i,c,a[i][c]);/**********found字*********/_3_;}

592if(!find)printfC'notfound!

593H);}main(){htx[M][N],ij;printf(nEnternumberforarray:

594u);for(i=0;i

595M);for(i=0;i

596

597H);}fun(x);}第1处:内容为[rmax=a[i][j];c=j;第2处:内容为[if(k!=i&&a[k]©<=rmax)find=0;J第3处:内容为[i++;]2、给定程序M0DI1.C中fun函数的功能是:根据形参m,计算如下公式的值。1111t=1+++++234m例如,若输入5,则应输出2.283333。请改正程序中的错误或在下划线处填上适当的内容并把下划线删除,使它能计算出正确的结果。#includedoublefun(intm)(doublet=1.0;inti;for(i=2;i<=m;i++)/**********^^und**********/t+=1.0/k;/**********found**********/}main()(intm;printf("

598Pleaseenter1integernumber:H);scanf("%d",&m);printf(M

599Theresultis%lf

600u,fun(m));)第1处:内容为【t+=l./i;]第2处:内容为[returnt;]3、函数fun的功能是:将两个两位数的正整数a、b合并形成一个整数放在c中。合并的方式是:将a数的十位和个位数依次放在c数的十位和千位上,b数的十位和个位数依次放在c数的百位和个位上。例如,当a=45,b=12时,调用该函数后,c=5142。voidfun(inta,intb,long*c)(*c=a%10*1000+b/10*100+a/l0*10+b%10;)第98题1、给定程序中,函数fun的功能是:把形参s所指字符串中最右边的n个字符复制到形参t所指字符数组中,形成一个新串。若s所指字符串的长度小于n,则将整个字符串复制到形参t所指字符数组中。例如,形参s所指的字符串为:abcdefgh,n的值为5,程序执行后t所指字符数组中的字符串应为:defgho#defineN80voidfin(char*s,htn,=len)strcpy(_1_);else{/**********tound**********/for(i=len-n;i<=len-l;i++)t[j++J=_2_;/**********fbund**********/t[j]=_3_;))main(){chars[N],t[N];intn;printf("Enterastring:n);gets(s);printf("Entern:H);scanf(M%d",&n);fun(s,n,t);printf("Thestringt:");puts(t);)第1处:内容为[if(n>=len)strcpy(t,s);]第2处:内容为[for(i=len-n;i<=len-l;i++)t[)++]=s[i];]第3处:内容为皿]=、0';]2、给定程序MODI1.C中fun函数的功能是:根据整型形参m,计算如下公式的值。1111234m例如,若主函数中输入函则应输出-0.283333o

601请改正函数fun中的错误或在横线处填上适当的内容并把横线删除,使它能计算出正确的结果。#includedoublefun(intm){doublet=1.0;inti;for(i=2;i<=m;i++)/**********,ound**********/t=1.0-1/i;/**********,ound**********/)main()intm;printf("

602Pleaseenter1integernumbers:

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

604

605Theresultis%lAnn,fun(m));)第1处:内容为第2处:内容为[returnt;]3、请编写函数fun,它的功能是:求出1到1000之间能被7或11整除、但不能同时被7和11整除的所有整数并将它们放在a所指的数组中,通过n返回这些数的个数。voidfun(int*a,int*n)strcpy(a->name,HLiSiH);/字*********found**********/for(i=0;i<3;i++)_2_+=1;/**********f^)und**********/return_3_;)main(){structstudents={10001,"ZhangSann,95,80,88},*t;inti;printf("

606

607Theoriginaldata:

608u);printf("

609No:%ldName:%s

610Scores:H,s.sno,s.name);for(i=0;i<3;i++)printf("%6.2f”,s.score[i]);printf(M

611M);t=fun(&s);printf(M

612Thedataaftermodified:

613");printf("

614No:%ldName:%s

615Scores:H,t->sno,t->name);for(i=0;i<3;i++)printf(n%6.2fn,t->score[i]);printf(M

616H);}第1处:内容为[structstudent*fun(structstudent*a)J第2处:内容为[for(i=0;i<3;i++)a->score[i]+=l;]第3处:内容为[returna;]2、给定程序MODI1.C中函数fun的功能是:根据整型形参m,计算如下公式的值。longcharfloat};y=+-100*100200*200300*300inti,count=0;for(i=l;i<=1000;i++)if((i%7==0IIi%ll==0)&&(i%7!=0IIi%ll!=0))a[count++]=i;*n=count;)第99题1、程序通过定义学生结构体变量,存储了学生的学号、姓名和3门课的成绩。函数fun的功能是将形参a中的数据进行修改,并把a中地址作为函数值返回主函数,在主函数中输出修改后的数据。例如:a所指变量s中的学号、姓名、和三门课的成绩依次是:1000k"ZhangSan'\95、80、88,修改后输出t中的数据应为:10002、"LiSi"、96、81、89.structstudent{sno;name[10];score[3];/*********不found**********/_1_fun(structstudent*a){hti;a->sno=10002;m*m例如,若m=2000,则应输出:0.000160o请改正程序中的语法错误,使它能计算出正确的结果。#include/************(ound************/fun(intm){doubley=0,d;inti;/************(ound************/for(i=100,i<=m,i+=100){d=(double)i*(double)i;y+=1.0/d;)return(y);)main(){intn=2000;system("cls");printf(H

617Theresultis%lf

618'',fun(n));

619}第1处:内容为[doublefun(m)]第2处:内容为[for(i=100;i<=m;i+=100)]3、请编写一个函数fun,其功能是:将ss所指字符串中所有下标为奇数位置上的字母转换成大写(若该位置上不是字母,则不转换)。例如,若输入"abc4EFG",则应输出"aBc4EFG"。注意:部分源程序存在文件progl.c中。voidfun(char*ss){inti=0;for(i=0;ss[i]!=0;i++)if(i%2&&'a'<=ss[i]&&ss[i]<='z')ss[i]=ss[i]-'a'+'A';}第100题1、函数fun的功能是:计算了㈤直到o若X=2.5,函数值为:1.917915o请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。doublefun(doublex){doublef,tintn;f=1.0+x;/**********found字*********/t=—1—;n=1;do{n++;/**********found**********/t*=(-1.0)*x/_2—;f+=t;}/**********found**********/while(3>=le-6);returnf;|main(){doublex,yx=2.5;y=fun(x);printf(*'

620Theresultis:

621n);printf(*,x=%-12.6fy=%-12.6f

622n,x,y);形参n,计算如下公式的值。111Al=l>A2=1A3=»An=1+A11+A21+A(n-1)例如,若n=10,则应输出:0.617978«清改正程序中的语法错误,使它能得出正确的结果。#include/************,ound************/intfun(intn){doubleA=l;inti/************found************/for(i=2;ivn;i++)A=1.0/(l+A);returnA;)main(){intn;system(MclsM);printf(H

623Pleaseentern:");scanf(',%d,,,&n);printf(HA%d=%f

624u,n,fun(n));}第1处:内容为[doublefun(intn]第2处:内容为[for(i=2;iv=n;i++)]3、请编写函数fun,函数的功能是:判断字符串是否为回文?若是,函数返回1,主函数中输出:YES:否,则返回0,主函数中输出NO。回文是指顺读和倒读都一样的字符串。例如,字符串LEVEL是回文,而字符串123312就不是回文。intfun(char*str){int(nunt=strlen(str),i;for(i=0;i<=count/2;i++)if(str[i]!=str[count-i-l]){return0;break;}return1;))第1处:第2处:第3处:内容为[t=x;J内容为[t*=(-1.0)*x/n;]内容为[while(fabs6>=le-6);]2、给定程序M0DI1.C中函数fun的功能是:根据整型

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

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

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