2011年计算机二级c语言上机题库

2011年计算机二级c语言上机题库

ID:82949190

大小:450.46 KB

页数:165页

时间:2023-09-25

上传者:灯火阑珊2019
2011年计算机二级c语言上机题库_第1页
2011年计算机二级c语言上机题库_第2页
2011年计算机二级c语言上机题库_第3页
2011年计算机二级c语言上机题库_第4页
2011年计算机二级c语言上机题库_第5页
2011年计算机二级c语言上机题库_第6页
2011年计算机二级c语言上机题库_第7页
2011年计算机二级c语言上机题库_第8页
2011年计算机二级c语言上机题库_第9页
2011年计算机二级c语言上机题库_第10页
资源描述:

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

main()2011全国计算机二级C语言上机参考题库注意:填空题填好答案要去掉下划线。改错题**found**下面的一行为错误地方,直接按答案更正即可。程序题答案只填在花括号中。(记得保存)第01套:•、填空题:程序通过定义学生结构体变量,存储了学生的学号、姓名和3门课的成绩。所有学生数据均以二进制方式输出到文件中。函数fun的功能是重写形参filename所指文件中最后ー个学生的数据,即用新的学生数据覆盖该学生原来的数据,其它学生的数据不变。请在程序的下划线处壊入正确的内容并把下划线删除,使程序得出正确的结果。注意:源程序存放在考生文件夹下BLANK1.C中。不得增行或删行,也不得更改程序的结构!给定源程序:^include^defineN5typedefstructstudent(longsno;charname[10];floatscore[3];}STU;voidfun(char*filename,STUn){FILE*fp;/**********found**********/fp=fopen(_1_,*rb+*);/**********found**********/fseek(_2_,-(long)sizeof(STU),SEEK_END);/**********fOun(j**********/fwrite(&n,sizeof(STU),1,_3_);fclose(fp);(STUt[N]={{10001,*MaChao*,91,92,77),(10002,"CaoKai”,75,60,88},(10003,"LiSi”,85,70,78),(10004,"FangFang”,90,82,87},(10005,*ZhangSan",95,80,88));STUn=(10006,"ZhaoSi”,55,70,68},ss[N];inti,j;FILE*fp;fp=fopen

1Theoriginaldataハn

2);for(j=0;j

3No:%ldName:%-8sScores:*,ss[j].sno,ss[j].name);for(i=0;i<3;i++)printfC%6.2f”,ss[j].score[i]);printf("

4");Ifun("student,dat*,n);printf("

5Thedataaftermodifing:

6

7");fp=fopen("student,dat","rb");fread(ss,sizeof(STU),N,fp);fclose(fp);for(j=0;j

8No:%ldName:%-8sScores:",ss[j].sno,ss[j].name);for(i=0;i<3;i++)printf("%6.2f",ss[j].score[i]);printf("

9");解题答案:/*********・第一・空**********/fp=fopen(filename,"rb+");/**********第二空**********/fseek(fp,-(long)sizeof(STU),SEEK_END);/**********第三空**********/fwrite(&n,sizeof(STU),1,fp);******************************************二、改错题:给定程序MODILC中的函数Creatlink的功能是创建带头结点的单向链表,并为各结点数据域赋0到m-1的值。请改正函数Creatlink中指定部位的错误,使它能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!给定源程序:

10^include#includetypedefstructaa{intdata;structaa*next;}NODE;NODE*Creatlink(intn,intm){NODE*h=NULL,*p,*s;inti;/**********fotind***********/p=(NODE)ma1loc(sizeof(NODE));h=p;p->next=NULL;for(i=l;i<=n;i++){s=(NODE*)ma11oc(sizeof(NODE));s->data=rand()%m;s->next=p->next;p->next=s;p=p-〉next;)/**********found***********/returnp;)outlink(NODE*h){NODE*p;p=h->next;printf('

11

12THELIST:

13

14HEAD");while(p){printf(*->%d*,pー〉data);p=p->next;)printf("

15");)mainO{NODE*head;head=Creatlink(8,22);outlink(head);解题答案:/**********foun(j***********/p二(NODE*)malloc(sizeof(NODE));/**********fotind***********/returnh;三、程序题:请编写函数fun,函数的功能是:统计一行字符串中单词的个数,作为函数值返回。一行字符串在主函数中输入,规定所有单词由小写字母组成,单词之间由若干个空格隔开,一行的开始没有空格。注意:部分源程序在文件PROG1.C中。请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。给定源程序:^include^include^defineN80intfun(char*s)()main(){charline[N];intnum=0;voidNONO();printf(*Enterastring:

16*);gets(line);num=fun(line);printf(*Thenumberofwordis:%d

17

18",num);NONO();)voidNONO(){/・请在此函数内打开文件,输入测试数据,调用fun函数,输出数据,关闭文件。*/FILE*rf,*wf;inti,num;charline[N],*p;rf=fopen("in.dat",r");wf=fopen("out.dat","w");for(i=0;i<10;i++){fgets(line,N,rf);p=strchr(line,'

19');if(p!=NULL)*p=0;num=fun(line);fprintf(wf,"%d

20",num);)fclose(rf);fclose(wf);参考答案:intfun(char*s)(intk=1;while(*s){if(*s==*')k++;S-H-;)returnk;做####即########肘######㈱########

21第02套:ー、填空题:给定程序的功能是:从键盘输入若干行文本(每行不超过80个字符),写到文件myfile4.txt中,用ー1作为字符中输入结束的标志。然后将文件的内容读出显示在屏幕上。文件的读写分别由自定义函数ReadText和WriteText实现。请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。注意:源程序存放在考生文件夹下BLANK1.C中。不得增行或删行,也不得更改程序的结构!给定源程序:^include#includeくstring.h>#includevoidWriteText(FILE*);voidReadText(FILE*);main(){FILE*fp;if((fp=fopen(*myfile4.txt*,*w*))=NULL){printf(*openfail!!

22*);exit(0);}WriteText(fp);fclose(fp);if((fp=fopen(*myfile4.txt*,*r*))==NULL){printf(*openfail!!

23*);exit(0);}ReadText(fp);fclose(fp);)/**********found**********/voidWriteText(FILE1){charstr[81];printf(*

24Enterstringwith-1toend:

25*);gets(str);while(strcmp(str,*-1*)!=0){/**********found**********/fputs(_2,fw);fputs(*

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

27Readfileandoutputtoscreen:

28*);fgets(str,81,fr);while(!feof(fr)){/**********「ound**********/printf(*%s*,3);fgets(str,81,fr);))解题答案:/**********第一空**********/voidWriteText(FILE*fw)/**********第二空**********/fputs(str,fw);fputs(*

29*,fw);/**********第三空**********/printf(*%s*,str);******************************************二、改错题:给定程序MODH.C中函数fun的功能是:从低位开始取出长整型变最s中奇数位上的数,依次构成一个新数放在t中。高位仍在高位,低位仍在低位。例如,当s中的数为:7654321时,t中的数为:7531。请改正程序中的错误,使它能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!给定源程序:^include/************fotind************/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;printf(*

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

31*,t);)解题答案:/************found************/voidfun(longs,long*t)/************found************/

32sl=sl*10:三、程序题:函数fun的功能是:将两个两位数的正整数a、b合并形成一个整数放在c中。合并的方式是:将a数的十位和个位数依次放在c数的个位和百位上,b数的十位和个位数依次放在c数的千位和十位上。例如,当a=45,b=12时,调用该函数后,c=1524o注意:部分源程序存在文件PROG1.C中。数据文件1N.DAT中的数据不得修改。请勿改动主函数main和其它函数屮的任何内容,仅在函数fun的花括号中壊入你编写的若干语句。给定源程序:#includeくstdio.h>voidfun(inta,intb,long*c)main(){inta,b;longc;voidNONO();printf(*Inputa,b:");scanf("%d,%d",&a,&b);fun(a,b,&c);printf(*Theresultis:%ld

33”,c);NONOO;}voidNONO(){/・本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。*/FILE*rf,*wf;inti,a,b;longc;rf=fopen("in.dat","r");wf=fopen("out・dat","w");for(i=0;i<10;i++){fscanf(rf,”观,%d”,&a,&b);fun(a,b,&c);fprintf(wf,"a=%d,b=%d,c=%ld

34",a,b,c);}fclose(rf);fclose(wf);)解题答案:I♦c=(b/10)*1000+(a%10)*100+(b*10)*10+(a/10);第03套:ー、填空题:给定程序中,函数fun的功能是:将自然数1〜10以及它们的平方根写到名为myfile3.txt的文本文件中,然后再顺序读出显示在屏幕上。请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。注意:源程序存放在考生文件夹下的BLANK1.C中。不得增行或删行,也不得更改程序的结构!给定源程序:^includettincludeくstdio.h>intfun(char*fname){FILE*fp;inti,n;floatx;if((fp=fopen(fname,"w"))==NULL)return0;for(i=l;i<=10;i++)/**********foyn(j**********/fprintf(1,"%d%f

35",i,sqrt((double)i));printf("

36Succeed!!

37");/**********「ound**********/—2—;printf("

38Thedatainfile:

39");/**********found**********/if((fp=fopen(3,"r"))ニニNULL)return0;fscanf(fp,"%d%f”,&n,&x);while(!feof(fp)){printf(*%d%f

40*,n,x);fscanf(fp,&n,&x);}fclose(fp);return1;}main(){charfname[]=*myfile3.txt*;fun(fname);}解题答案:/**********第一空*********/fprintf(fp,*%d%f

41*,i,sqrt((double)i));printf(*

42Succeed!!

43");/**********第二空**********/fclose(fp);/**********第三空**********/if((fp=fopen(fname,*r*))==NULL)改错题:给定程序MODIl.C中ftm函数的功能是:将n个无序整

44数从小到大排序。请改正程序中的错误,使它能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!给定源程序:ttinclude#includefun(intn,int*a){inti,j,p,t;for(j=0;ja[i])/************fotind************/t=i;if(p!=j){t=a[j];a[j]=a[p];a[p]=t;}})putarr(intn,int*z){inti;for(i=1;i<=n;i++,z++){printf(*%4d*,*z);if(!(i%10))printf("

45");}printfr

46*);)mainO{intaa[20]={9,3,0,4,1,2,5,6,8,10,7},n=11;printf(*

47

48Beforesorting%dnumbers:

49*,n);putarr(n,aa);fun(n,aa);printf(*

50Aftersorting%dnumbers:

51*,n);putarr(n,aa);)解题答案:#include^includefun(intn,int*a){inti,j,p,t;for(j=0;jvoidfun(inta,intb,long*c)main(){inta,b;longc;voidNONO();printf(*Inputa,b:');scanf("%d,%d",&a,&b);fun(a,b,&c);printf(*Theresultis:%ld

52*»c);NONO();}voidNONO(){/・本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。*/FILE*rf,*wf;inti,a,b;longc;rf=fopen(*in.dat*,"r");wf=fopen(*out.dat","w");for(i=0;i<10;i++){fscanf(rf,&a,&b);fun(a,b,&c);fprintf(wf,"a=%d,b趣d,c二%ld

53”,a,b,c);)fclose(rf);fclose(wf);}解题答案:(*c=(b%10)*1000+(a%10)*100+(b/10)*10+a/10:}開####################邢###########卅####第04套:ー、填空题:程序通过定义学生结构体变量,存储了学生的学号、姓名和3门课的成绩。所有学生数据均以二进制

54方式输出到文件中。函数fun的功能是从形参filename所指的文件中读入学生数据,并按照学号从小到大排序后,再用二进制方式把排序后的学生数据输出到filename所指的文件中,覆盖原来的文件内容。请在程序的下划线处壊入正确的内容并把下划线删除,使程序得出正确的结果。注意:源程序存放在考生文件夹下BLANK1.C中。不得增行或删行,也不得更改程序的结构!给定源程序:#include#defineN5typedefstructstudent{longsno;charname[10]:floatscore[3];}STU;voidfun(char*filename){FILE*fp;inti,j;STUs[N],t;/**********found**********/fp=fopen(filename,1);fread(s,sizeof(STU),N,fp);fclose(fp);for(i=0;i

55

56Theoriginaldata八n

57");for(j=0;j

58No:%ldName:%-8sScores:*,t[j].sno,t[j].name);for(i=0;i<3;i++)printf(*%6.2f*,t[j].score[i]);printf('

59");}fun(*student,dat*);printf(*

60

61Thedataaftersorting:

62

63");fp=fopen("student.dat","rb");fread(ss,sizeof(STU),5,fp);fclose(fp);for(j=0;j

64No:%ldName:%-8sScores:*,ss[j].sno,ss[j].name);for(i=0;i<3;i++)printf(*%6.2fらss[j].score[i]);printf(*

65*);)}解题答案:/**********第一空**********/fp=fopen(filename,*rb");/亠亠亠亠亠亠亠亠亠亠・ヾイシシ4«屮++2+シ/if(s[i].sno>s[j].sno)/**********第三空**********/fwrite(s,sizeof(STU),N,fp);/・二进制输出*/改错题:给定程序MODI1.C中函数fun的功能是:在字符串的最前端加入n个・号,形成二、新串,并且覆盖原串。注意:字符串的长度最长允许为79。请改正函数fun中指定部位的错误,使它能得出正确的结果。注意:不要改动main函数,不得増行或删行,也不得更改程序的结构!给定源程序:#include#includevoidfun(chars[],intn)(chara[80],*p;inti;/**********found***********/s=p;for(i=0;i

66}/**********found***********/while(*p++)a[i]=0;strcpy(s,a);)mainO{intn;chars[80];printf(*

67Enterastring:つ;gets(s);printf(*

68Thestringヽ"%s\"

69",s);printf("

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

71Thestringafterinsert:\*%s\*

72,s);)解题答案:/**********found***********/P=s;/**********found***********/while(*p++);三、程序题:请编写函数fun,函数的功能是:统计各年龄段的人数。N个年龄通过调用随机函数获得,并放在主函数的age数组中;要求函数把0至9岁年龄段的人数放在d[0]中,把10至19岁年龄段的人数放在d[l]中,把20至29岁年龄段的人数放在32]中,其余依此类推,把1()0岁(含100似上年龄的人数都放在310]中。结果在主函数中输出。注意:部分源程序在文件PROG1.C中。请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。给定源程序:^includettdefineN50#defineM11voidfun(int*a,int*b)doublernd(){statict=29,c=217,m=1024,r=0;r=(r*t+c)%m;return((doubIe)r/m);)main(){intage[N],i,d[M];voidNONO(intd[M]);for(i=0;i

73");for(i=0;i

74":"%4d”,age[i]);printf("

75

76");fun(age,d);for(i=0;i<10;i++)printf(*%4d—%4d:%4d

77”,i*10,i*10+9,d[i]);printf(*Over100:%4d

78*»d[10]);NONO(d);}voidNONO(intd[M]){/・请在此函数内打开文件,输入测试数据,调用fun函数,输出数据,关闭文件。*/FILE*wf;inti;wf=fopen(*out.dat","w");for(i=0;i<10;i++)fprintf(wf,“%4d--%4d:%4d

79”,i*10,i*10+9,d[i]);fprintf(wf,“Over100:%4d

80*,d[10]);fclose(wf);}参考答案:voidfun(int*a,int*b)(inti,j;for(i=0;i10)b[M-11++;elseb[j]++;))doublemd(){statict=29,c=217,m=1024,r=0;r=(r*t+c)%m;retum((double)r/m);牌###############################第05套:ー、填空题:给定程序中已建立一个带有头结点的单向链表,链表中的各结点按结点数据域中的数据递增有序链接。函数fun的功能是:把形参x的值放入一个新结点并插入到链表中,插入后各结点数据域的值仍保持递增有序。

81请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。注意:源程序存放在考生文件夹的BLANK1.C中。不得増行或删行,也不得更改程序的结构!给定源程序:#include#include#defineN8typedefstructlist{intdata;structlist*next;)SLIST;voidfun(SLIST*h,intx){SLIST*p,*q,*s;s=(SLIST*)malloc(sizeof(SLIST));s->data=1;q=h;p=h->next;while(p!=NULL&&x>p->data){q=一2一;p=p->next;}s->next=p;/♦*********10yj^j*****♦♦*♦*/q->next=3;)SLIST*creatlist(int*a){SLIST*h,*p,*q;inti;h=p=(SLIST*)malloc(sizeof(SLIST));for(i=0;idata=a[i];p->next=q;p=q;)p->next=0;returnh;)voidoutlist(SLIST*h){SLIST*p;p=h->next;if(p==NULL)printf("

82ThelistisNULL!

83");else{printf("

84Head");do{printf(H->%d*\p->data);p=p->next;}while(p!=NULL);printf("->End

85n);

86longk=l;main(){SLIST*head;intx;inta[N]={11,12,15,18,19,22,25,29);head=creatlist(a);printf(H

87Thelistbeforeinserting"");outlist(head);printf("

88Enteranumber:");scanf("%d",&x);fun(head,x);printf(M

89Thelistafterinserting:");outlist(head);}解题答案:/**********第一空*********/s->daa=x;/**********第二空**********/q二p;/**********第三空**********/q->next=s;二、改错题:给定程序MODI1.C中函数fun的功能是:计算正整数num的各位上的数字之积。例如,若输入:252.则输出应该是:20。若输入:202,则输出应该是:。。请改正程序中的错误,使它能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!给定源程序:#includelongfun(longnum)(/************found************/longk;do{k*=num%10;num\=10;)while(num);return(k);}main(){longn;printf(H

90Pleaseenteranumber:");scanf('*%ld",&n);printf("

91%ld

92",fun(n));}解题答案:/************found************//************foun(j************/num/=10;三、程序题:请编写ー个函数fun,它的功能是:计算n门课程的平均分,计算结果作为函数值返回。例如:若有5门课程的成绩是:90.5,72,80,61.5,55则函数的值为:71.80.注意:部分源程序存在文件PROG1.C中。请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。给定源程序:#includefloatfun(float*a,intn){)main(){floatscore[30]={90.5,72,80.61.5,55),aver;voidNONO();aver=fun(score,5);printf("

93Averagescoreis:%5.2f

94",aver);NONO();)voidNONO(){/・本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。*/FILE*fp,*wf;inti,j;floataver,score[5];fp=fopen("in.dat〈T');wf=fopen(,*out.dat,\"wM);fbr(i=0;i<10;i++){for(j=0;j<5;j++)fscanf(fp,M%f,",&score[j]);aver=fun(score,5);fprintf(wf,**%5.2f

95",aver);)fclose(fp);fclose(wf);解题答案:(inti;floatave=0.0;for(i=0;i

96ave=ave/n;returnave;}##########################################第06套:ー、给定程序中已建立一个带有头结点的单向链表,在main函数中将多次调用fun函数,每调用一次fun函数,输出链表尾部结点中的数据,并释放该结点,使链表缩短。请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。注意:源程序存放在考生文件夹下BLANK1.C中。不得增行或删行,也不得更改程序的结构!给定源程序:#include#include#defineN8typedefstructlist{intdata;structlist*next;}SLIST;voidfun(SLIST*p){SLIST*t,*s;t=p->next;s=p;while(t->next!=NULL){s=t;/**********^und**********/t=t->1;1/**********f^)und**********/printfd%d",—2—);s->next=NULL;/**********found**********/free(-3);}SLIST*creatlist(int*a){SLIST*h,*p,*q;inti;h=p=(SLIST♦)maUoc(sizeof(SLIST));for(i=0;inext=q;p=q;p->next=0;returnh;)voidoutlist(SLIST*h){SLIST*p;p=h->next;if(p==NULL)printf("

97ThelistisNULL!

98");else{printf("

99Head");do{printf("->%d",p-xiata);p=p->next;)while(p!=NULL);printf(M->End

100M);)}main(){SLIST*head;inta[N]={11,12,15,18,19,22,25,29];head=creatlist(a);printf(n

101Outputfromhead:

102");outlist(head);printf("

103Outputfromtail:

104");while(head->next!=NULL){fun(head);printf("

105

106");printf("

107Outputfromheadagain:

108");outlist(head);))解题答案:/**********第一空**********/t=t~>next;/**********第二空**********/printf(*%d”,tー>data);/**********第二空**********/free(t);******************************************二、改错题:给定程序MODH.C中函数fun的功能是:将字符串屮的字符按逆序输出,但不改变字符串中的内容。例如,若字符串为abed,则应输出:deba。请改正程序中的错误,使它能计算出正确的结果。注意:不要改动main函数,不得増行或删行,也不得更改程序的结构!给定源程序:#include/************found************/fun(chara){if(*a)(fun(a+l);/♦*♦♦*♦**♦***^Q|jpjJ**♦♦***♦♦***/

109printf(n%cM*a);)}main(){chars[101=Mabcd";printf("处理前字符串二%s

110处理后字符串ゴ,s);fun(s);printf("

111");}解题答案:/************found************/voidfun(char*a)/************found************/printf*a);三、程序题:请编写ー个函数fun,它的功能是:比较两个字符串的长度,(不得调用C语言提供的求字符串长度的函数),函数返回较长的字符串。若两个字符串长度相同,则返回第一个字符串。例如,输入beijingshanghai(vCR>为回车键),函数将返回shanghai〇注意:部分源程序存在文件PROG1.C中。请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。给定源程序:#includechar*fiin(char*s,char*t)main(){chara[2O],b[2OJ;voidNONO();printf("Inpul1thstring:1');gets(a);printf("Input2thstring:");gets(b);printf("%s

112",fun(a,b));NONO();}voidNONO(){/・木函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。*/FILE*fp,*wf;inti;chara[20],b[20];fp=fopen("in.dat","r");wf=fopen("out.dat","w");fbr(i=0;i<10;i++){fscanf(fp,"%s%s'\a,b);fprintf(wf,"%s

113",fun(a,b));)fclose(fp);fclose(wf);参考答案:(inti;char*p=s,*q=t;fbr(i=O;*p&&*q;i++){p++;q++;)if(*p==0&&*q==0)returns;if(*p)returns;elsereturnt;)關tt就####附触####附ぱ####mm####第07套:ー、填空题:给定程序中已建立一个带有头结点的单向链表,链表中的各结点按数据域递增有序链接。函数fun的功能是:删除链表中数据域值相同的结点,使之只保留一个。请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。注意:源程序存放在考生文件夹的BLANK1.C中。不得增行或删行,也不得更改程序的结构!给定源程序:#include#include#defineN8typedefstructlist{intdata;structlist*next;ISLIST;voidfun(SLIST*h){SLIST*p,*q;p=h->next;if(p!=NULL){q=p->next;while(q!=NULL){if(p->data==q->data){p->next=q->next;

114/**********four)d**********/free(—1一);/**********ほund**********/q=p->2;)else{p=q;q=q->3;)}}}SLIST*creatlist(int*a){SLIST*h,*p,*q;inti;h=p=(SLIST*)malloc(sizeof(SLIST));for(i=0;idata=a[i];p->next=q;p=q;}p->next=O;returnh;1voidoutlist(SLIST*h){SLIST*p;p=h->next;if(p=NULL)printf("

115ThelistisNULL!

116");else{printf("

117Head");do{printf("->%d,\p->data);p=p->next;}while(p!=NULL);printf("->End

118M);}}main(){SLIST*head;inta[N]={1,2,234,4,4,5};head=creatlist(a);printf("

119Thelistbeforedeleting:

120H);outlist(head);fun(head);printf("

121Thelistafterdeleting:

122");outlist(head);}解题答案:/**********found**********/free(q);/**********found**********/q=p->next;/**********found**********/q=q->next;二、改错题:给定程序MODI1.C中函数fun的功能是:用选择法对数组中的n个元素按从小到大的顺序进行排序。请修改程序中的错误,使它能得出正确的结果。注意:不要改动main函数,不得增行和删行,也不得更改程序的结构!给定源程序:#include#defineN20voidfun(inta||,intn){inti,j,t,p;for(j=0;j

123H);ftin(a,m);printf("排序后的数据:");for(i=0;i

124”);)解题答案:/************foiind************/p=j;/************fourid************/P=i;三、程序题:请编写ー个函数fun,它的功能是:求出1到m之间(含m)能被7或11整除的所有整数放在数组a中,通过n返冋这些数的个数。例如,若传送给m的值为50,则程序输出:

125711142122283335424449注意:部分源程序存在文件PROG1.C中。请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。给定源程序:#include#defineM100voidfun(intm.int*a,int*n)main(){intaa[M],n,k;voidNONO();fun(50,aa,&n);for(k=0;k

126M);elseprintf(',%4d",aa|k|);printf(H

127");NONO();1voidNONO(){/・本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。*/FILE*fp,*wf;inti,n,j,k,aa[M],sum;fp=fopen("in.dat",T);wf=fopen("〇ut.dat",“w");for(i=0;i<10;i++){fscanf(fp,H%d,",&j);fiin(j,aa.&n);sum=0;for(k=0;k

128",sum);fclose(fp);fclose(wf);)参考答案:(inti;*n=0;fbr(i=7;i<=m;i++)if((i%7==0)II(i%11==0))a[(*n)++]=i;)##阴######阴期####解触####版#####第08套:ー、填空题:给定程序中,函数fun的功能是:在带有头结点的单向链表中,查找数据域中值为ch的结点。找到后通过函数值返回该结点在链表中所处的顺序号:若不存在值为ch的结点,函数返回〇值。请在程序的ド划线处填入正确的内容并把ド划线删除,使程序得出正确的结果。注意:源程序存放在考生文件夹的BLANK1.C中。不得增行或删行,也不得更改程序的结构!给定源程序:#include#include#defineN8typedefstructlist{intdata;structlist*next;)SLIST;SL1ST*creatlist(char*);voidoutlist(SLIST*);intfun(SL!ST*h,charch){SLIST*p;intn=0;p=h->next;/**********Fk)und**********/while(p!=1){n++;/**********Cund**********/if(p->data==ch)return2:elsep=p->next;return0;)main(){SLIST*head;intk;charch;chara[N]={'m','p','g','a?w?x','r','d'};head=creatlist(a);outlist(head);printf(HEnteraletter:");scanf("%c",&ch);/**♦*♦♦****|q|jqJ*********♦/k=fun(_3-);if(k==0)printf("

129Notfound!

130");elseprintf("Thesequencenumberis:%d

131",k);)SLIST*creatlist(char*a){SLIST*h,*p,*q;inti;

132h=p=(SLIST*)malloc(sizeof(SLIST));for(i=0;inext=q;p=q;)p->next=0;returnh;}voidoutlist(SLIST*h){SLIST*p;p=h->next;if(p==NULL)printf("

133ThelistisNULL!

134");else{printf(ヽHead");do{printf("->%c'\p->data);p=p->next;)while(p!=NULL);printf("->End

135");))解题答案:/**********第♦空**********/while(p!=0)/**********第二空**********/if(p->data==ch)returnn;/**********第ゴ空**********/k=fun(head,ch);二、改错题:给定程序MODI1.C中函数fun的功能是:删除p所指字符串中的所有空白字符(包括制表符、回车符及换行符)。输入字符串时用‘#‘结束输入。请改正程序中的错误,使它能输出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!给定源程序:#include#include#includefun(char*p){inti,t;charc[80];For(i=0,t=0;p[i];i++)if(!isspace(*(p+i)))c|t++]=p|i|;/************found************/c[t]="\0";strcpy(p,c);)main(){charc,s[80];inti=0;printf(*'Inputastring:H);c=getchar();while(c!='#'){s[i]=c;i++;c=getchar();)s[iゆ;fun(s);puts(s);)解题答案:/************found************/for(i=0,t=0;p[i]:i++)/************found************/c[t]=\0*;三、程序题:请编写ー个函数fun,它的功能是:籽ss所指字符串中所有下标为奇数位置上的字母转换为大写(若该位置上不是字母,则不转换)。例如,若输入"abc4EFg”,则应输出“aBc4EFg”。注意:部分源程序存在文件PROG1.C中。请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。

136给定源程序:#include#includevoidfiin(char*ss)(ー、填空题:给定程序中,函数fun的功能是:统计出带有头结点的单向链表中结点的个数,存放在形参n所指的存储单元中。请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。注意:源程序存放在考生文件夹的BLANK1.C中。不得增行或删行,也不得更改程序的结构!)main(){chartt[81];给定源程序:#include#includevoidNONO();printf("

137Pleaseenteranstringwithin80characters:5");#defineN8typedefstructlistgets(tt);printf("

138

139Afterchanging,thestring

140V'%sV,M,tt);fun(tt);printf("

141becomes

142V'%s\"

143",tt);NONO();)voidNONO(){/・本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。*/FILE*fp,*wf;chartt[81];{intdata;structlist*next;}SLIST;SLIST*creatlist(int*a);voidoutlist(SLIST*);voidfun(SLIST*h,int*n){SLIST*p;/**********found**********/一!一=o;p=h->next;while(p)inti;{(*n)++;fp=fopen("in.dat,\V);wf=fopen("out.dat","w");/**********Sund**********/p=p->2;for(i=0;i<10;i++){fscanf(fp,H%s",tt);))fun(tt);fprintf(wf,"%s

144",tt);)fclose(fp);fclose(wf);}参考答案:Imain(){SLIST*hcad;inta[N]={12,87,45,32,91,16,20,48),num;hcad=creatlist(a);outlist(head);/**********Sund**********/fun(3,&num);printf(H

145number=%d

146",num);\tinti;]SLIST*creatlist(inta[])for(i=1;i=n&&ss[i]<=*z')ss[i]-=32;{SLIST*h,*p,*q;inti;h=p=(SLIST*)malloc(sizeof(SLIST));)}######¥#明####□#######□###########for(i=0;idata=a[i];p->next=q;p=q;)p->next=0;第09套:returnh;

147voidoutlist(SLIST*h){SLIST*p;p=h->next;if(p=NULL)printf(nThelistisNULL!

148");else{printf("

149HeadM);do{printf(H->%dM,p->data):p=p->next;Jwhile(p!=NULL);printf("->End

150H);}I解题答案:/**********第一・空**********/*n二。;/**********第二空**********/p=p->next;/**********第三空**********/fun(head,&num);二、改错题:给定程序MODI1.C中函数fun的功能是:求出s所指字符串中最后•次出现的t所指ア字符串的地址,通过函数值返回,在主函数中输出从此地址开始的字符串;若未找到,则函数值为NULL。例如,当字符串中的内容为:"abcdabfabcdx”,t中的内容为:"ab"时,输出结果应是:abcdx。当字符串中的内容为:"abcdabfabcdx",t中的内容为:"abd"时,则程序输出未找到信息:notbefound!〇请改正程序中的错误,使它能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!给定源程序:#include#includcchar*fun(char*s,char*t)(char*p,*r,*a;/************^)und************/a=Null;while(*s){p=s;r=t;while(*r)/**♦♦*♦**♦***^QUI^^j************/if(r==p){r++;p++;}elsebreak;if(*r=、〇')a=s;s++;}returna;)main(){chars[100],t[100],*p;printf("

151PleaseenterstringSscanf("%s",s);printf("

152Pleaseentersubstringtscanf("%sM,t);P=fun(s,t);if(p)printf("

153Theresultis:%s

154H,p);elseprintf("

155Notfound!

156");)解题答案:/************foun(j************/a=NULL;/************found************/if(*r=*p)三、程序题:函数ftin的功能是:将s所指字符串中除了下标为偶数、同时ASCII值也为偶数的字符外,其余的全都删除;串中剩余字符所形成的一个新串放在t所指的数组中。例如,若s所指字符串中的内容为!“ABCDEFG123456”,其中字符A的ASCII码值为奇数,因此应当删除:其中字符B的ASCII码值为偶数,但在数组中的下标为奇数,因此也应当删除;而字符2的ASCI!码值为偶数,所在数组中的下标也为偶数,因此不应当删除,其它依此类推。最后t所指的数组中的内容应是:“246”。注意:部分源程序存在文件PROG1.C中。请勿改动主函数main和其它函数中的任何内容,仅在函数ftin的花括号中填入你编写的若干语句。给定源程序:#include#includevoidfun(char*s,chart[])main()(chars[100Lt|100];voidNONO();printf("

157PleaseenterstringS:");scanf(M%sH,s);fun(s,t);printf("

158Theresultis:%s

159'\t);NONO();

160)voidNONO(){/・本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。*/chars[100],t[100];FILE*rf,*wf;inti;rf=fopen("in.dat,,;,rH);wf=fopen("out.dat","w");for(i=0;i<10;i++){fscanf(rf,s);fun(s,t);fprintf(wf,M%s

161",t);Jfclose(rf);fclose(wf);参考答案:voidfun(char*s,chart[])(inti,j=0;for(i=0;i#include#defineN8typedefstructlist{intdata;structlist*next;)SLIST;SLIST*creatlist(int*);voidoutlist(SLIST*);intfun(SLIST*h){SLIST*p;ints=0;p=h->next;while(p)(s+=p->1;p=p->一2一;)returns;)main()(SLIST*head;inta[N]={12,87,45,32,91,16,20,48);head=creatlist(a);outlist(head);/**********found**********/printf(M

162sum=%d

163,\fun(3));)SLIST*creatlist(inta||){SLIST*h,*p,*q;inti;h=p=(SLIST*)malloc(sizeof(SLIST));for(i=0;idata=a[i];p->next=q;p=q;)p->next=O;returnh;)voidoutlist(SLIST*h){SLIST*p;p=h->next;if(p==NULL)printfC'ThelistisNULL!

164H);else(printf("

165Headり;do{printf(',->%d",p->data);p=p->next;)while(p!=NULL);printf("->End

166M);})解题答案:/**********第一空**********/s+=p->data;

167»シ7«Wセシ•»。勺6"ッ〈ジジジジジジジジジジ/p=p->next;/**********第三空**********/printf(*

168sum=%d

169*,fun(head));二、改错题:给定程序MODI1.C中函数ftin的功能是:将s所指字符中中出现的与tl所指字符串相同的子串全部替换成12所指字符串,所形成的新串放在w所指的数组中。在此处,要求tl和t2所指字符串的长度相同。例如,当s所指字符串中的内容为:"abcdabfab",tl所指子中中的内容为:"ab",t2所指子串中的内容为:“9ダ时,结果在w所指的数组中的内容应为:"99cd99f9ダ。请改正程序中的错误,使它能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!给定源程序:#include#includevoidfun(char*s,char*tl,char*t2.char*w)(char*p,*r,*a;strcpy(w,s);while(*w){p=w;r=tl;while(r)if(*r==*p){r++;p++;}elsebreak;if(*r==AO'){a=w;r=t2;while(*r){/************^ound************/*a=*r;a++;r++)w+=strlen(t2);elsew++;))main()(chars[100],tl[100],t2[100],w[100];printf("

170PleaseenterstringS:");scanf("%s'\s);printf("

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

172Pleaseentersubstringt2:");scanf("%s",t2);if(strlen(tl)==strlen(t2)){fun(s,tl,t2,w);printf("

173Theresultis:%s

174",w);}elseprintf("Error:strlen(tl)!=strlen(t2)

175");)解题答案:/************fotind************/while(*r)/************「oiind************/*a=*r;a++;r++;三、程序题:函数fun的功能是:将s所指字符串中下标为偶数的字符删除,串中剩余字符形成的新中放在t所指数组中。例如,当s所指字符串中的内容为ジABCDEFGHIJKA在I所指数组中的内容应是:"BDFHJ”。注意:部分源程序存在文件PROGLC中。请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。给定源程序:#include#includevoidfun(char*s,chart[])main()(chars[100],t[100];voidNONO();printf("

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

177Theresultis:%s

178",t);NONO();

179)STU;voidNONO(){/・本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。*/chars[100],t[100];FILE*rf,*wf;inti;rf=fopen("in.dat'\,,r,*);wf=fbpenC'out.dafW);for(i=0;i<10;i++){fscanf(rf,H%s*\s);fun(s,t);fprintf(wf,M%s

180",t);}fclose(rf);fclose(wf);)参考答案:voidfun(char*s,chart[])(inti,j=0;for(i=1;i#include#defineN8typedefstruct{charnum[10];intyear,month,day;1fun(STU*std,char*num)(inti;STUa={"”,9999,99,99};for(i=0;i

181Notfound!

182M);else{printf(”ヽnSucceed!

183”);printf(”%s%d-%d-%d

184H,p.num,p.year,p.month,p.day);))解题答案:/**********第一空**********/STUfun(STU*std,char*num)/**********第二空**********/if(strcmp(std[i].num,num)==0)/**********第二空**********/return(std[i]);二、改错题:给定程序MOD11.C中函数fun的功能是:从s所指字符串中,找出与t所指字符串相同的子串的个数作为函数值返回。例如,当s所指字符串中的内容为:”abcdabfab”,t所指字符串的内容为:”ab”,则函数返回整数3。请改正程序屮的错误,使它能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!给定源程序:#include#includeintfun(char*s,char*t)(

185intn;char*p,*r;n=0;while(*s)jp=s;r=t;while(*r)if(*r=*p)(/************砧und************/r++;p++)elsebreak;/************ほund************/if(r='\0')n++;s++;)returnn;)main()(chars|100],t[100];intm;printf("

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

187Pleaseentersubstringt:H);scanf(H%sH,t);m=ftin(s,t);printf("

188Theresultis:m=%d

189",m);}解题答案:/************fourid************/r++;p++;/************fourid************/if(*r='\〇')三、程序题:函数fun的功能是:将s所指字符串中ASCH值为偶数的字符删除,串中剩余字符形成•个新串放在t所指的数组中。例如,若s所指字符串中的内容为:“ABCDEFG12345”,其中字符B的ASCI!码值为偶数、…、字符2的ASCII码值为偶数、…都应当删除,其它依此类推。最后t所指的数组中的内容应是:"ACEG135”。注意:部分源程序存在文件PROG1.C中。请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。给定源程序:#include#includevoidfun(char*s,chart[])main()(chars[100],t[100];printfCAnPleaseenterstringS:M);scanf(H%s'*,s);ftin(s,t);printf("

190Theresultis:%s

191",t);NONO();}NONO()(/・本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。*/charsi100],t[100];FILE*rf,*wf;inti;rf=fopen("in.dat",V);wf=fopen("out.dae',"w");fdr(i=O;i<10;i++){fscanf(rf,"%s",s);fun(s,t);fprintf(wf,"%s

192",t);)fclose(rf);fclose(wf);参考答案:voidfun(char*s,chart[])(inti,j=0;for(i=0;i

193#defineN8typedefstruct{intnum;intyear,month,day;)STU;intfun(STU*std,STU*k,intyear){inti,n=O;for(i=0;i

194Nopersonwasbomin%d

195",year);else(printf(M

196Thesepersonswerebomin%d

197'\year);for(i=0;i

198,',k[i].num,k|i].year,k[i].month,k[i].day);)}解题答案:/**********第一空**********/if(std[i].year==year)/**********第二空**********/k[n++]=std[i];/**********第三空**********/return(n);二、改错题:给定程序MODI1.C的功能是:读入ー个整数k(2WkW10000),打印它的所有质因子(即所有为素数的因子)。例如,若输入整数:2310»则应输出:2、3、5、7、IK请改正程序中的语法错误,使程序能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!给定源程序:#includeIsPrime(intn);/・定义函数・/{inti,m;m=1;for(i=2;i

199Pleaseenteranintegernumberbetween2and10000:");scanf(H%d",&k);printf("

200

201Theprimefactor(s)of%dis(are):",k);for(j=2;j<=k;j++)if((!(k%j))&&(IsPrime(j)))printf("

202%4d",j);printf(ヽ”);}解题答案:/************found************/IsPrime(intn)/・定义函数・//************found************/if(!(n%i))三、程序题:已知学生的记录由学号和学习成绩构成,N名学生的数据已存入结构体数组a中。请编写函数fun,函数的功能是:找出成绩最髙的学生记录,通过形参指针传回主函数(规定只有个最高分)。已给出函数的首部,请完成该函数。注意:部分源程序存在文件PROG1.C中。请勿改动キ:函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。给定源程序:#include#include#defineN10typedefstructss{charnum[10];ints;)STU;fun(STUa(],STU*s)main()1STUa[N]={{"AOド,81),{"A02",89},{"A03",66|,{"A04",87),{"A05",77},{"A06",90},{"A07",79),{"A08",61},{"A09",80),{"A10",71}},m;inti;

203printf("*****Theoriginaldata*****

204");for(i=0;i

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

206");printf("Thetop:%s,%d

207",m.num,m.s);NONO();}NONO(){/・本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。*/FILE*rf,*wf;STUa[N],m;inti;rf=fopen("in.dat","r");wf=fopen("out.dat","w");for(i=0;i<10;i++)fscanf(rf,"%s%d",a[i].num,&a[i].s);fun(a,&m);fprintf(wf,"Thetop:%s,%d

208",m.num,m.s);fclose(rf);fclose(wf);}参考答案:fun(STUa[l,STU*s){inti,max=a[0].s,j=0;for(i=1;itypedefstruct{intnum;charname|9];floatscore[3];}STU;voidshow(STUtt){inti;printf("%d%s:",tt.num,tt.name);for(i=0;i<3;i++)printf("%5.ir,tt.score[i]);printf("

209");)/****♦♦******♦♦*♦♦/voidmodify(1*ss,floata){inti;for(i=0;i<3;i++)/**********fQyj|J**********/ss->2*=a;)main(){STUstd={l,"Zhanghua",76.5,78.0,82.0};floata;printf("

210Theoriginalnumberandnameandscores:

211");show(std);printf("

212lnputanumber:");scanf("%f",&a);modify(3,a);printfC'XnAresultofmodifying:

213");show(std);}解题答案:/**********第一空**********/voidmodify(STU*ss,floata)/**********第二空**********/ss->score[i]*二a;/**********第三空**********/modify(&std,a);二、改错题:给定程序MODII.C中函数fun的功能是:求k!(k<13)»所求阶乘的值作为函数值返回。例如:若k=10»则应输出:3628800c请改正程序中的错误,使它能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!给定源程序:#include

214longfun(intk)(/************Sund************/ifk>0return(k*fun(k-l));/************^ound************/elseif(k=0)returnIL;}main(){intk=10;printf("%d!=%ld

215",k,fun(k));}解题答案:/************found************/if(k>0)/************found************/elseif(k==0)三、程序题:程序定义了NxN的二维数组,并在主函数屮自动赋值。请编写函数fun(intaロ[N],intn),函数的功能是:使数组左下二:角元素中的值乘以n.例如:若n的值为3,a数组屮的值为1197113971a=12381则返回主程序后a数组中的值应为169811456111215181注意:部分源程序存在文件PROG1.C中。请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。给定源程序:#include#include#defineN5voidfun(inta|][N],intn)()NONOO(/・木函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。*/FILE*rf,*wf;intijn.a[5][5];rf=fopen("in.dat",V);wf=fopen("out.dat","w");fbr(i=0;i<5;i++)fbr(j=0;j<5;j++)fscanf(rf,"%dゝ&a[i][j]);fscanf(rf,"%d”,&n);fiin(a,n);for(i=0;i<5;i++){for(j=0;j<5;j++)fprintf(wf,"%4d”,a[i][j]);fprintf(wf,"

216");)fclose(rf);fclose(wf);)main(){inta[N][N],n,i,j;printf('******Thearray*****

217");for(i=0;i

218,');)don=rand()%10;while(n>=3);printf("n=%4d

219",n);fun(a,n);printf(•******THERESULT*****

220H);for(i=0;i

221H);)NONO();)参考答案:intfun(inta[][N],intn)(inti,j;for(i=0;i

222注意:源程序存放在考生文件夹的BLANK1.C中。不得增行或删行,也不得更改程序的结构!给定源程序:#includetypedefstruct{intnum;charname[10];(PERSON;/♦*********!QUQjj*♦**♦♦**♦*/voidfun(PERSON—1_)(2temp;if(std[O].num>std[1].num){temp=std[0];std[O]=std[l];std[l]=temp;}if(std[0].num>std[2].num){temp=std[0];std[0]=std[2];std[2]=temp;}if(std[1].num>std[2].num){temp=std[l];std[l]=std[2];std[2]=temp;})main(){PERSONstd[]={5,"Zhanghu,\2;'WangLi,',6,"LinMin"};inti;/**********found**********/fun(_3一);printf("

223Theresultis:

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

225",std[i].num,std[i].name);)解题答案:/**********第一空**********/voidfun(PERSON*std)/**********第二空**********/PERSONtemp;/**********第二空**********/fun(std);二改错题:给定程序MODILC中函数ftm的功能是:将m(IWmWIO)个字符串连接起来,组成一个新串,放入pt所指存储区中。例如:把3个串:“abc","CD","EF”连接起来,结果是"abcCDEF".请改正程序中的错误,使它能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!给定源程序:#include#includevoidfun(charstr[][10],intm,char*pt)(/************found************/Intk,q,i;for(k=0;k

226Pleaseenterm:");scanf("%dH,&m);gets(s[O]);printf("

227Pleaseenter%dstring:

228M,m);for(h=0;h

229Theresultis:%s

230",p);}解题答案:/************foun(j************/intk,q,i;/************found************/pt[i]=str[k][i];三.、程序题:程序定义了NxN的二维数组,并在主函数中自动赋值。请编写函数fun(inta[][N]),函数的功能是:使数组左下三角元素中的值全部置成〇。例如:a数组中的值为I197IIO97la=l238l则返冋主程序后a数组中的值应为100811456110001注意:部分源程序存在文件PROG1.C中。请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。给定源程序:#include#include#defineN5voidfun(inta[][N])

231fclose(rf);fclose(wf);)main(){inta[N][N],i,j;printf(H*****Thearray*****

232H);for(i=0;i

233M);)fun(a);printfC'THERESULT

234M);for(i=0;i

235");第15套:ー、填空题:给定程序中,函数fun的功能是:将形参std所指结构体数组中年龄最大者的数据作为函数值返回,并在main函数中输出。请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。注意:源程序存放在考生文件夹的BLANKl.C'P-不得增行或删行,也不得更改程序的结构!给定源程序:#includetypedefstruct{charname[10];intage;JSTD;STDfun(STDstd[],intn){STDmax;inti;max=1;fbr(i=l;i

236Theresult:

237");/**********佑und**********/printf("

238Name:%s,Age:%d

239'\3,max.age);)解题答案:/**********第一空**********/max=*std;/**********第二空**********/if(max.age

240Name:%s,Age:%d

241*,max.name,max.age);)二、改错题:给定程序MODII.C中函数fun的功能是:实现两个整数的交换。例如给a和b分别输入:60和65,输出为:a=65b=60请改正程序中的错误,使它能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!给定源程序:#include/**********found**********/voidfun(inta.b)

242{intt;/**********nd**********/t=b;b=a;a=t;}main(){inta,b;printf("Entera,b:");scanf("%d,%d",&a,&b);fun(&a,&b);printf("a=%db=%d

243”,a,b);)解题答案:^include/**********£ound**********/voidfun(int*a,int*b)/**********found**********/t=*b;*b=*a;*a=t;三、程序题:清编ー个函数voidfun(inttt[M][N],intpp[N]),tt指向ー个M行N列的二维数组,求出ニ维数组每列中最小元素,并依次放入pp所指ー维数组中。二维数组中的数已在主函数中赋予。注意:部分源程序存在文件PROG1.C中。请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。给定源程序:#include#defineM3#defineN4voidfun(inttt[M][N],intpp[N])NONOO{/・请在此函数内打开文件,输入测试数据,调用fun函数,输出数据,关闭文件。*/inti.j,k,m,t[M]|Nbp[Nl;FILE*rf,*wf;rf=fopen("in.dat",”r");wf=fopen("out.dat","w");fbr(m=0;m<10;m++){for(i=0;i

244");}fclose(rf);fclose(wf);main(){intt[M][N]={{22,45,56,3〇},{19,33,45,38},{20,22,66,40)};intp[N],i,j,k;printf("Theoriginaldatais:

245");for(i=0;i

246");)fun(t,p);printf("

247Theresultis:

248");for(k=0;k

249");NONO();参考答案:voidfun(inttt[M][N],intpp[N])(intij,min,k;for(i=0;ittU][i]){\TABmin=tt(j][i];k=j;)pp[i]=tt[k][i];第16套:ー、填空题:程序通过定义并赋初值的方式,利用结构体变量存储了•名学生的信息。函数fun的功能是输出这位学生的信息。请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确结果。

250注意:源程序存放在考生文件夹的BLANK1.C中。不得增行或删行,也不得更改程序的结构!给定源程序:#includetypedefstruct{intnum;charname(9);charsex;struct{intyear.month,day;}birthday;floatscore[3];}STU;/**********えund**********/voidshow(STU1){inti;printf("

251%d%s%c%d-%d-%d",tt.num,tt.name,tt.sex,tt.birthday.year,tt.birthday.month,tt.birthday.day);fbr(i=O;i<3;i++)/**********匂und**********/printf"5.13_2一);printf("

252H);)main(){STUstd={1,"Zhanghua";M\1961,10,8,76.5,78.0,82.0);printf("

253Astudentdata:

254M);show(3);)解题答案:/**********found**********/voidshow(STUtt)/**********fourid**********/printf(*%5.If*,tt.score[i]);/**********found**********/show(std);)二、改错题:给定程序MODIl.C中函数fun的功能是:求出数组中最大数和次最大数,并把最大数和a[〇]中的数对调、次最大数和a[l]中的数对调。请改正程序中的错误,使它能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!给定源程序:#incl#include#defineN20intfun(int*a,intn){inti,m,t,k;fbr(i=0;i<2;i++){m=0;for(k=i+1;ka[m])k=m;t=a[i];a[i]=a[m];a[m]=t;})main(){intx,b[N]={11,5,12,0,3,6,9,7,10,8bn=10,i;for(i=();i

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

256");)解题答案:/**********found**********/m=i;/**********found**********/if(a[k]>a[m])m=k;三、程序题:请编写ー个函数unsignedfun(unsignedw),w是ー个大于10的无符号整数,若w是n(n22)位的整数,函数求出w的低n-1位的数作为函数值返回。例如:w值为5923,则函数返回923;w值为923则函数返回23〇注意:部分源程序存在文件PROG1.C中。请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。给定源程序:#includeunsignedfun(unsignedw)NONO(){/・请在此函数内打开文件,输入测试数据,调用fun

257函数,输出数据,关闭文件。*/unsignedx;inti;FILE*rf,*wf;rf=fopen("in.dat";*r");wf=fopen("out.dat","wH);fbr(i=0;i<20;i++){fscanf(rf,"%u",&x);fprintf(wf,"%u

258",fun(x));)fclose(rf);fclose(wf);)main(){unsignedx;printf("Enteraunsignedintegernumber:");scanf("%u",&x);printf("Theoriginaldatais:%u

259",x);if(x<10)printf("Dataerror!");elseprintf("Theresult:%u

260",fun(x));NONO();)参考答案:unsignedfun(unsignedw)(if(w>10000)w%=l(X)00;elseif(w>1000)w%=1000;elseif(w>100)w%=100;elseif(w>10)w%=10;returnw;)第17套:ー、填空题:给定程序中,函数fun的功能是:对形参ss所指字符串数组中的M个字符串按长度由短到长进行排序。ss所指字符串数组中共有M个字符串,且串长小。请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。注意:源程序存放在考生文件夹的BLANK1.C中。不得增行或删行,也不得更改程序的结构!给定源程序:#include#include#defineM5#defincN20voidfun(char(*ss)[N]){inti,j,k,n[M]:chart[N];for(i=0;in|j|)_2_;if(k!=i){strcpy(t,ss[il);strcpy(ss[i],ss[k]);strcpy(ss[k],3);n|k]=n|i|;main(){charss[M][N]=l,'shanghai'\"guangzhou,',"beijing,,,"ianjing"Jcchongqing");inti;printf("

261Theoriginalstringsare:

262");for(i=0;i

263",ss[i]);printf("

264");fun(ss);printf(M

265Theresult:

266");for(i=0;i

267,\ss[i]);}解题答案:/**********第一空**********/for(j=i+l;jn[j])k=j;/**********第三空**********/strcpy(ss[k],t);二、改错题:给定程序MODI1.C中函数fun的功能是:判断ch中的字符是否与str所指串中的某个字符相同;若相同,什么也不做,若不同,则将其插在串的最后。请改正程序中的错误,使它能进行正确操作。

268注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!给定源程序:#include#include/**********Sund**********/voidfun(charstr,charch){while(*str&&*str!=ch)str++;if(*str==ch){str|0|=ch;/****♦*****j0|jpjj*****♦♦*♦*/str[l|='O';))main(){chars[811,c;printf("

269Pleaseenterastring:

270");gets(s);printf("

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

272Theresultis%s

273",s);}解题答案:/**********founc|*********voidfun(char*str,charch)*//**********found*********if(*str!=ch)*/if(*str!=ch)/**********founcl*********str[1]\0*;*/str[l]=\0*;三、程序题:请编ー个函数fun(char*s),函数的功能是把s所指字符串中的内容逆置。例如:字符串中原有的字符串为:abcdefg»则调用该函数后,串中的内容为:gfedcba。注意:部分源程序存在文件PROG1.C中。请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。给定源程序:#include#include#defineN81fun(char*s))NONO(){/・请在此函数内打开文件,输入测试数据,调用fun函数,输出数据,关闭文件。*/inti;chara|N|;FILE*rf,*wf;rf=fopen(Hin.datM,MrH);wf=fopen("out.datM,HwH);for(i=0;i<10;i++){fscanf(rf,H%sH,a);fun(a);fprintf(wf,M%s

274",a);)fclose(rf);fclose(wf);)main(){chara[N];printf("Enterastring:gets(a);printf("Theoriginalstringis:");puts(a);fun(a);printf(ヽ”);printf("Thestringaftermodified:");puts(a);NONOO;)参考答案:fun(char*s)(charb[N];inti=0,j;memset(b,0,N);for(j=strlen(s)-1;j>=0;j—)b[i++]=s[jj;strcpy(s,b);}##################################第18套:ー、填空题:给定程序中,函数fun的功能是:求出形参ss所指字符串数组中最长字符串的长度,其余字符串左边用字符・补齐,使其与最长的字符串等长。字符串数组中共有M个字符串,且串长<N。

275请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。注意:源程序存放在考生文件夹的BLANK1.C中。不得增行或删行,也不得更改程序的结构!给定源程序:#include#include#defineM5#defineN20voidfun(char(*ss)[N|){inti,j,k=0,n,m,len;for(i=0;in){n=len;1=i;)1for(i=0;i=0;j-)ss[i][m-]=ss[i][j];for(j=0;j

276Theoriginalstringsare:

277");for(i=0;i

278",ss[i]);printf("

279");fun(ss);printf("

280Theresult:

281");for(i=0;i

282",ss[i]);)解题答案:/**********第一»空**********/n=len;k=i;/**********第二空**********/for(j=len;j>=0;j)/**********第三空**********/ss[i][加'*';二、改错题:给定程序MODI1.C中函数fun的功能是:计算整数n的阶乘。请改正程序中的错误或在ド划线处填上适当的内容并把下划线删除,使它能计算出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!给定源程序:#includedoublefun(intn)(doubleresult=l.0;while(n>l&&n<170)result*二--n;return;}main()(intn;printf("Enteraninteger:H);scanf("%dH,&n);printf(M

283

284%d!=%lg

285

286M,n,fun(n));}解题答案:/*********found*********/result*』一;/*********found*********/returnresult;三、程序题:编写函数fun,函数的功能是:从s所指的字符串中删除给定的字符。同一字母的大、小写按不同字符处理。若程序执行时输入字符串为:turbocandborlandC++从键盘上输入字符:n,则输出后变为:turbocadborladC++如果输入的字符在字符串中不存在,则字符串照原样输出。注意:部分源程序在文件PROG1.C中。请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。给定源程序:#include

287#includevoidfun(chars[],charc)NONO()(/・请在此函数内打开文件,输入测试数据,调用fun函数,输出数据,关闭文件。*/FILE*rf,*wf;chars[81],ch.w;intlen;rf=fopen("in.dat","r");wf=fopen("out.dat\"w");fgets(s,80,rf);fscanf(rf,M%c",&ch);len=strlen(s)-1;w=s[len];if(w='

288'IIw=Oxla)s[len]=0;fun(s,ch);fprintf(wf,M%sM,s);fclose(rf);fclose(wf);)main()(staticcharstr|]=nturbocandborlandC++”;charch;printf("原始字符串:%s

289",str);printf("输入一个字符:");scanf("%c",&ch);fun(str,ch);printf("str|]=%s

290",str);NONO();参考答案:intfiin(chars(|,charc)(char*p=s;inti=0;while(*p){if(*p!=c)s[i++]=*p;P++;s[i]=O;第19套ー、填空题:给定程序中,函数fun的功能是:求出形参SS所指字符串数组中最长字符串的长度,将其余字符串右边用字符・补齐,使其与最氏的字符串等长。ss所指字符半数组中共有M个字符串,且串长vN。请在程序的ド划线处填入正确的内容并把卜.划线删除,使程序得出正确的结果。注意:源程序存放在考生文件夹的BLANK1.C中。不得増行或删行,也不得更改程序的结构!给定源程序:#include#include#defineM5#defineN20voidfun(char(*ss)[N]){inti,j,n,len=0;for(i=0;in)n=len;)for(i=0;i

291H);for(i=0;i

292",ss[i]);printf(',

293H);fun(ss);printf("Theresultis:

294");for(i=0;i

295",ss[i]);)

296解题答案:/**********第一空**********/n=strlen(ss[i]);/**********第二空**********/ss[i][n+j]=♦*;/**********第二空**********/ss[i][n+j+1]-\0";二、改错题:给定程序MODI1.C中fun函数的功能是:将p所指字符串中每个单词的最后一个字母改成大写.(这里的“单词”是指由空格隔开的字符串)。例如,若输入"Iamastudenttotaketheexamination.",则应输出"IaMAstudenTtOtakEthEexamination."»请修改程序中的错误之处,使它能得出正确的结果。注意:不要改动main函数,不得删行,也不得更改程序的结构!给定源程序:#include#include#includevoidfun(char*p)(intk=0;for(;*p;p++)if(k)(/********************/if(P='')(k=0;*(p)=toupper(*(p・!)))}elsek=l;)main()(charchrstr[64];intd;printf("

297PleaseenteranEnglishsentencewithin63letters:");gets(chrstr);d=strlen(chrstr);chrstr|d]='*;chrstr[d+l]=0;printf("

298

299Beforechanging:

300%s'\chrstr);fun(chrstr);printf(M

301Afterchanging:

302%s'\chrstr);}解题答案:/**********found***********/if(*p=**)/**********foun(j***********/*(p-1)=toupper(*(p-l));三、程序题:请编写函数fun,对长度为フ个字符的字符串,除首、尾字符外,将其余5个字符按ASCII码降序排列。例如,原来的字符串为CEAedca,排序后输出为CedcEAa〇注意:部分源程序在文件PROG1.C中。请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。给定源程序:#include#include#includevoidfun(char*s,intnum)s[7]=0;fun(s,7);fprintf(wf,"%s

303",s);i++;}fclose(rf);fclose(wf);)main(){chars[10];printf("输入7个字符的字符串:");gets(s);ftm(s,7);printf("

304%s,',s);NONO();)参考答案:intfun(char*s,intnum)(charch;

305inti,j;fbr(i=1;i<6;i++)for(j=i+1;j<6;j++){if(*(s+i)<*(s+j)){ch=*(s+j);*(s+j)=*(s+i);*(s+i)=ch;))NONO()(/・请在此函数内打开文件,输入测试数据,调用fun函数,输出数据,关闭文件。*/chars[10];FILE*rf,*wf;inti=0;rf=fopen(,,in.datw,V);wf=fopen("〇ut.dat",“w");while(i<10){fgets(s,10,rf);第20套:ー、填空题:给定程序屮,函数fun的功能是:求ss所指字符串数组中长度最长的字符串所在的行下标,作为函数值返回,并把其串长放在形参n所指变量中。ss所指字符串数组中共有M个字符串,F!串长<N。请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。注意:源程序存放在考生文件夹下的BLANK1.C中。不得增行或删行,也不得更改程序的结构!给定源程序:

306#include#include#defineM5#defineN20/**********found**********/intfun(char(*ss)1,int*n){inti,k=0,len=0;for(i=0;ivM;i++)(len=strlen(ss[i]);if(i=0)*n=2;if(len>*n){/**********Cund**********/_3_;k=i;1)retum(k);)main(){charss[M][N]={"shanghai","guangzhoiTJbeijing","tianjing","cchongqing");intn,k,i;printf("

307Theoriginalstringsare:

308");for(i=0;i

309Thelengthoflongeststringis:%d

310",n);printf("

311Thelongeststringis:%s

312",ss[k]);))解题答案:/**********第一空**********/intfun(char(*ss)[N],int*n)/**********第二空**********/if(i==0)*n=len;/**********第三空**********/*n=len;******************************************二、改错题:给定程序M0DI1.C中fun函数的功能是:根据形参m,计算如下公式的值。1111t=1++++••••••+请改正程序中的错误或在下划线处填上.适当的内容并把下划线删除,使它能计算出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!给定源程序:♦(includedoublefun(intm){doublet=1.0;inti;for(i=2;i<=m;i++)/**********found**********/t+=1.0/k;/**********found**********/main()(intm;printf(*

313Pleaseenter1integernumber:*);scanf("%d",&m);printf(*

314Theresultis%lf

315*,fun(m));}解题答案:/**********found**********/t+=1.0/i;/**********founci**********/returnt;三、程序题:编写ー个函数,该函数可以统计ー个长度为2的字符串在另ー•个字符串中出现的次数。例如,假定输入的字符串为:asdasasdfgasdaszx67asdmklo,子字符串为:as,则应输出6。注意:部分源程序在文件PROG1.C中。请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。给定源程序:ttincludettinclude234m例如,若输入5,则应输出2.283333〇intfun(char*str,char*substr)NONOO(/・请在此函数内打开文件,输入测试数据,调用fun函数,输出数据,关闭文件。*/charstr[81],substr[3],ch;intn,len,i=0;

316FILE*rf,*wf;rf=fopen(*in.dat*,*r*);wf=fopen(*out.dat","w");while(i<5){fgets(str,80,rf);fgets(substr,10,rf);len=strlen(substr)-1;ch=substr[len];if(ch=='

317'IIch==Oxla)substr[len]=0;n=fun(sir,substr);fprintf(wf,"%d

318”,n);i++;)fclose(rf);fclose(wf);}main()(charstr[81],substr[3];intn;printf("输入主字符串:“);gets(str);printf("输入子字符串:");gets(substr);puts(str);puts(substr);n=fun(str,substr);printf("n=%d

319*,n);NONOO;)参考答案:intfun(char*str,char*substr)(intent=0;char*p=str,*q;while(*p)(q=strstr(p,substr);if(q=NULL)break;p=q+strlen(substr);cnt++;)returnent;)main()(charstr[81],substr[3]:intn;printf("输入主字符串:");gets(str);printf("输入子字符串:");gets(substr);puts(str);puts(substr);n=fun(str,substr);printf(,,n=%d

320",n);NONO();)#####4####################的#####第21套:ー、填空题:给定程序中,函数fun的功能是:求ss所指字符串数组中长度最短的字符串所在的行下标,作为函数值返回,并把其串长放在形参n所指变量中。ss所指字符串数组中共有M个字符串,且串长^includeくstring.h>紀efineM5#defineN20intfun(char(*ss)[N],int*n){inti,k=0,len=N;/**********found**********/for(i=0;i<1;i++){len=strlen(ss[i]);if(i==0)*n=len;/**********found**********/if(len—2_*n){*n=len;k=i;}}/**********found**********/return(3);}

321main(){charss[M][N]二{"shanghai","guangzhou","beijing,"tianjing","chongqing*);intn,k,i;printf("

322Theoriginalstringsare:

323");for(i二〇;i

324Thelengthofshorteststringis:%d

325",n);printf("

326Theshorteststringis:%s

327”,ss[k]);}解题答案:/***********シiヾ*******ホ*ホ/for(i=0;i#includeくstring.h>char*fun(chartt[])(inti;for(i=0;tt[i];i++)/米*********found***********/if(Ca<=tt[i])||(tt⑴<="))/**********found***********/tt[i]+=32;return(tt);)main()(chartt[81];printf("

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

329Theresultstringis:

330%s",fun(tt));)解题答案:/**********found***********/if((*a*<=tt[i])&&(tt[i]<=,z'))/**********found***********/tt[i]~=32;三、程序题:请编写函数fun,其功能是:将所有大于1小于整数m的非素数存入xx所指数组中,非素数的个数通过k传回。例如,若输入:17,则应输出:46891012141516〇注意:部分源程序在文件PROG1.C中。请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。给定源程序:^includeくstdio.h>voidfun(intm,int*k,intxx[])mainO{intm,n,zz[100];voidNONO();printf(*

331Pleaseenteranintegernumberbetween10and100:");scanf(*%d*,&n);fun(n,&m,zz);printf("ヽn'nThereare%dnon-primenumberslessthan%d:",m,n);for(n=0;n

332%4d",zz[n]);NONO();)voidN0N0()

333/・请在此函数内打开文件,输入测试数据,调用fun函数,输出数据,关闭文件。*/intm,n,zz[100];FILE*rf,*wf;rf=fopen(*in.dat*,*r*);wf=fopen(*out.dat","w");fscanf(rf,"%d",&n);fun(n,&m,zz);fprintf(wf,*%d

334%d

335*,m,n);for(n=0;n

336”,zz[n]);fclose(rf);fclose(wf);}解题答案:(intj,tag=0;for(j=2;j=0,&&s[i]<=*9')(t2U]=s[i];—1一;)elsetl[k++]=s[i];t2[j]=0;tl[k]=0;/**********found**********/fbr(i=O;i

337*\s);fun(s);printf(M

338Theresultis:%s

339*\s);)解题答案:/**********第一空**********/t2[j]=s[i];j++;/**********第二空**********/for(i=0;i#include#dcfineMAXLINE20fun(char*pstr[6]){intij;char*p;for(i=0;i<5;i++){/***************************/#includefor(j=i+1,j<6,j++)if(strcmp(*(pstr+i),*(pstr+j))>0)

340{p=*(pstr+i);*(pstr+i)=pstr+j;*(pstr+j)=p;))))main(){inti;char*pstr[6],str[6][MAXLINE];for(i=0;i<6;i++)pstr[i]=strli];printf(H

341Enter6string(1stringateachline):

342H);for(i=0;i<6;i++)scanf(M%s**,pstr[i]);fun(pstr);printf("Thestringsaftersorting:

343H);for(i=0;i<6;i++)printf("%s

344,\pstr[i]);}解题答案:/**************found**************/for(j=i+l;j<6;j++)/**************found**************/*(pstr+i)=*(pstr+j);三・程序题:请编写函数fun,它的功能是:求出ss所指字符串中指定字符的个数,并返回此值。例如,若输入字符串:123412132,输入字符为:1,则输出:3。注意:部分源程序在文件PROG1.C中。请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。给定源程序:#include#include#defineM81intfun(char*ss,charc)main(){chara[M],ch;voidNONO();printf("

345Pleaseenterastring:**);gets(a);printf(n

346Pleaseenterachar:");ch=getchar();printf(',

347Thenumberofthecharis:%d

348",fun(a,ch));NONO();)voidNONO(){/・本函数用于打开文件,输入测试数据,调用ftm函数,输出数据,关闭文件。*/inti;FILE*rf,*wf;chara[M],b[M],ch;rf=fopen("in.dat","r");wf=fopen("out.dat**,"wM);for(i=0;i<10;i++){fscanf(rf,"%s",a);fscanf(rf,'*%s*',b);ch=*b;fprintf(wf,**%c=%d

349",ch,fun(a,ch));1fclose(rf);fclose(wf);)参考答案:intfiin(char*ss,charc){intent=0;char*p=ss;while(*p){if(*p==c)cnt++;P++;Jreturnent;)####################«#####師#####第23套:ー、填空题:给定程序中,函数fun的功能是:在形参s所指字符串中的每个数字字符之后插入・个・号.例如,形参s所指的字符串为:def35adh3kjsdf70执行结果为:def3*5*adh3*kjsdf7・。请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。注意:源程序存放在考生文件夹的BLANK1.C•!1.

350不得増行或删行,也不得更改程序的结构!给定源程序:#includevoidfiin(char*s)linti,j,n;fbr(i=O;sロ]!=M)';i++)/**********Cund**********/if(s[i]>='0,_1_s[i]<=9){n=0;while(s[i+l+n]!=2)n++;for(j=i+n+l;j>i;j-)/**********Cund**********/s[j+l]=一3—;s[j+H;i=i+l;))main()(chars[80]=,,ba3a54cd23aM;printf(M

351Theoriginalstringis:%s

352”,s);fun(s);printf("

353Theresultis:%s

354”,s);}解题答案:/**********第一空**********/if(s[i]>=’〇'&&s[i]<="9')while(s[i+l+n]!=0)n++;/**********第三空**********/s[j+l]=s[j];二、改错题:给定程序MODI1.C中函数fun的功能是:根据整型形参m,计算如下公式的值。2*213*314*41m*m例如,若m中的值为:5,则应输出:1.463611。请改正程序中的错误,使它能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!给定源程序:#includedoublefun(intm)(doubley=1.0;inti;for(i=2;i

355Theresultis%lf

356M,fun(n));)解题答案:/**************found**************/for(i=2;i<=m;i++)/**************found**************/y+=l.0/(i*i);三,程序题:请编写函数fun,函数的功能是:实现B=A+A,即把矩阵A加上A的转置,存放在矩阵B中。计算结果在main函数中输出。例如,输入下面的矩阵:其转置矩阵为:123147456258789369程序输出:261061014101418注意:部分源程序在文件PROG1.C中。请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。给定源程序:#includevoidfun(inta[3][3],intb[3][3])main()/・主程序・/(inta[3][3]={(1,2,3|,(4,5,6},{7,8,9)},t[3][3];inti,j;voidNONO();ft»n(a,t);for(i=0;i<3;i++){for(j=0;j<3;j++)printf(,,%7d,\t|i||j]);printf(H

357H);}NONO();

358)voidNONO()(/・本函数用于打开文件,输入测试数据,调用fun函数,输出数据,关闭文件。ッinti,j,k,a[3][3],t[3][3];FILE*rf,*wf;rf=fopen(,'in.dat,'/,rH);wf=fopen(,,out.dat,,;,wH);for(k=0;k<5;k++){for(i=0;i<3;i++)fscanf(rf,H%d%d%d”,&a|i][0],&a[i][l],&a|i][2]);fun(a,t);for(i=0;i<3;i++){for(j=0;j<3;j++)fprintf(wf,"%7dH,t[i][j]);fprintf(wf,M

359");))fclose(rf);fclose(wf);}参考答案:voidfun(inta[3][3],intb[3][3])(intc[3][3];intij;for(i=0;i<3;i++)for(j=0;j<3;j++){c[i][j]=a[j][i];/*矩阵的转置・/b|i)|jl=a[i][j]+c[i]|j|;第24套:ー、填空题:给定程序中,函数fun的功能是:统计形参s所指字符串中数字字符出现的次数,并存放在形参t所指的变量中,最后在主函数中输出。例如,形参s所指的字符串为:abcdef35adgh3kjsdf7〇输出结果为:4〇请在程序的ド划线处填入正确的内容并把下划线删除,使程序得出正确的结果。注意:源程序存放在考生文件夹的BLANK1.C中。不得增行或删行,也不得更改程序的结构!给定源程序:#includevoidfun(char*s,int*t){inti,n;n=0;for(i=0;1!=0;i++)if(s[i]>='O'&&s[i]<=—2—)n++;―3—;)main(){chars[80]=Mabcdef35adgh3kjsdf7M;intt;printf("

360Theoriginalstringis:%s

361",s);fun(s,&t);printf("

362Theresultis:%d

363",t);)解题答案:/**********第・空**********/for(i=0;s[i]!=0;i++)/**********第二空**********/if(s[i]>=>0,&&s[i]<=,9,)n++;/**********第二空**********/*t=n;二、改错题:给定程序MODI1.C中函数fun的功能是:通过某种方式实现两个变量值的交换,规定不允许增加语句和表达式。例如变量a中的值原为8,b中的值原为3,程序运行后a中的值为3,b中的值为8。请改正程序中的错误,使它能得出正确结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!给定源程序:#includeintfun(int*x,inty)(intt;t=x;x=y;return(y);)main()(

364inta=3,b=8;printf("%d%d

365",a.b);b=fiin(&a,b);printf("%d%d

366",a,b);)解题答案:/**************found**************/t二*x;*x=y;/**************foun(i**************/return(t);三、程序题:请编写函数fun,它的功能是:求出1到1000之间能被7或11整除、但不能同时被7和II整除的所有整数并将它们放在a所指的数组屮,通过n返回这些数的个数。注意:部分源程序在文件PROG1.C中。请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。给定源程序:#includevoidfun(int*a,int*n)main(){intaa[1000],n,k;voidNONO();fun(aa,&n);for(k=0;k

367M);elseprintf("%5d”,aa[k]);NONO();)voidNONO(){/・本函数用于打开文件,输入测试数据,调用fim函数,输出数据,关闭文件。・/intaa[1000],n,k;FILE*fp;fp=fopen(,'out.dat,,,"w");fiin(aa,&n);for(k=0;k

368M);elsefprintf(fp,"%5d”,aa[k]);fclose(fp);)参考答案:voidfun(int*a,int*n)(inti;*n=0;for(i=7;i<1000;i++)if(((i%7)=0II(i%11)=0)&&(i%77)!=0)a[(*n)++]=i;)#####4####################的######第25套:一、填空题:给定程序中,函数fun的功能是:把形参s所指字符串屮下标为奇数的字符右移到下ー个奇数位置,最右边被移出字符串的字符绕回放到第•个奇数位置,下标为偶数的字符不动(注:字符串的长度大于等于2)。例如,形参s所指的字符串为:abcdefgh,执行结果为:ahcbcdgf。请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果.注意:源程序存放在考生文件夹的BLANK1.C中。不得増行或删行,也不得更改程序的结构!给定源程序:#includevoidfun(char*s){inti,n,k;charc;n=0;for(i=0;s[i]!=W;i++)n++;/**********伯und**********/if(n%2=0)k=n-—1—;elsek=n-2;/**********^^und**********/c=2;

369for(i=k-2;i>=l;i=i-2)s[i+2]=s[i];s[l]=—3—;}main(){chars[80]="abcdefgh";printf("

370Theoriginalstringis:%s

371M,s);fun(s);printf(H

372Theresultis:%s

373",s);)解题答案:/**********fotind**********/if(n%2==0)k=n-l;/**********第一空**********/c=s[k];/**********^^**********/s[l]=c;二、改错题:给定程序M0DI1.C中fun函数的功能是:求s=aa・・・aa-...-aaa-aa-a(此处aa…aa表示n个a,a和n的值在1至9之间)例如a=3,n=6»则以上表达式为:s=333333-33333-3333-333-33-3其值是:296298a和n是fun函数的形参,表达式的值作为函数值传回main函数。请改正程序中的错误,使它能计算出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!给定源程序:#includclongfun(inta,intn)(intj;/**************!qij^J***********♦*♦/longs=0,t=1;for(j=0;j

374Pleaseenteraandn:M);scanf(”%d%d",&a,&n);printfC'ThevalueoffuncHonis:%ld

375".fun(a,n));J解题答案:/**************found**************/longs二0,t二。;/**************fOuncl**************/t=t/10;程序题:请编写ー个函数voidfun(char*tt,intpp[l),统计在tt所指字符串中,"至リN26个小写字母各自出现的次数,并依次放在pp所指数组中。例如,当输入字符串:abcdefgabcdeabc后,程序的输出结果应该是:33322110000000000000000000注意:部分源程序在文件PROG1.C中。请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。给定源程序:#include#includevoidfun(char*tt,intpp[J)()main()(charaa[1000];intbb[26],k;voidNONO();printf("

376Pleaseenteracharstring:1');scanf("%s",aa);fun(aa,bb);for(k=0;k<26;k++)printf("%d",bb[k]);printf("

377");NONO();)voidNONO()(/・本函数用于打开文件,输入测试数据,调用ftin函数,输出数据,关闭文件。*/retum(s);intbb[26],k,i;charaa[1000];

378FILE*rf,*wf;rf=fopen("in.datu,"rH);wf=fopen("out.dat",W);for(i=0;i<10;i-H-){fscanf(rf,H%s",aa);fun(aa,bb);for(k=0;k<26;k++)fprintf(wf/*%d",bb[k]);fprintf(wf,M

379");)fclose(rf);fclose(wf);)参考答案:voidfun(char*tt,intpp[])(char*p=tt;inti;for(i=0;i<26;i++)pp[i]=0;while(*p)(if(*p>='a'&&*p〈ニ'z')pp[*p-'a']+=1;p++;)}#################################第26套:ー、填空题:给定程序中,函数fun的功能是:对形参s所指字符串屮下标为奇数的字符按ASCII码大小递增排序,并将排序后下标为奇数的字符取出,存入形参p所指字符数组中,形成一个新串.例如,形参s所指的字符串为:baawrskjghzlicda,执行后p所指字符数组中的字符串应为:aachjlsw。请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果.注意:源程序存放在考生文件夹的BLANK1.C中。不得增行或删行,也不得更改程序的结构!给定源程序:#includevoidfiin(char*s,char*p)(inti,j,n,x,t;n=0;for(i=0;s[i]!='\0';i++)n++;for(i=l;is[j])t=j;if(t!=i){x=s[i];s[i]=s[t];s[t]=x;)}for(i=l,j=0;i

380Theoriginalstringis:%s

381",s);fun(s,p);printf("

382Theresultis:%s

383",p);)解题答案:/**********第一空**********/t二i;/-A--I--I--Ir-lr-lr包さ>ワ、ヾ亠ルルユ・ルユ。・!for(j=i+2;j#includefloatfun(floatnum){ints;floatn,t,pi;

384t=l;pi=O;n=l;s=l;while(t>=num){pi=pi+t;n=n+2;s=-s;t=s%n;)pi=pi*4;returnpi;)main(){floatnl,n2;printf("Enterafloatnumber:");scanfC'%f;&nl);n2=fun(nl);printf("%6.4f

385",n2);}解题答案:/**************found**************/while(fabs(t)>=num)/**************found**************/t=s/n;三、程序题:请编写ー个函数voidfun(chara[],charb[],intn),其功能是:删除一个字符串中指定下标的字符。其中,a指向原字符串,删除指定字符后的字符串存放在b所指的数组中,n中存放指定的下标。例如,输入•个字符串:World,然后输入3,则调用该函数后的结果为:Word〇注意:部分源程序在文件PR0G1.C中。请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。给定源程序:#include#include#defineLEN20voidfiin(chara[],charb[],intn)main(){charstrl[LEN],str2[LEN];intn;voidNONO();printfC'Enterthestring:

386");gets(strl);printft"Enterthepositionofthestringdeleted:");scanf("%dH,&n);fun(strl,str2,n);printf("Thenewstringis:%s

387",str2);NONO();)voidNONO(){/・本函数用于打开文件,输入测试数据,调用fi)n函数,输出数据,关闭文件。*/charstrl[LEN],str2[LEN];inti,n;FILE*rf,*wf;rf=fopen("in.dat","r");wf=fopen("out.dat","wM);fbr(i=0;i<1();i++){fscanftrf,"%s%d",strl,&n);fun(strl,str2,n);fprintftwf,"%s

388",str2);}fclose(rf);fclose(wf);)参考答案:voidfun(chara[],charb[],intn)(stmcpy(b,a,n);b[n]=0;strcat(b,a+n+1);)##抑囲####附就####抑彼####附######第27套:、填空题:给定程序中,函数fun的功能是:在形参s所指字符串中寻找与参数c相同的字符,并在其后插入ー个与之相同的字符,若找不到相同的字符则函数不做任何处理。例如,s所指字符串为:baacda,c中的字符为:a,执行后s所指字符串为:baaaacdaa。请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。注意:源程序存放在考生文件夹的BLANK1.C中。不得增行或删行,也不得更改程序的结构!给定源程序:

389#includevoidfiin(char*s,charc){inti.j,n;/**********found**********/for(i=0;s[i]!=1;i++)if(s[i]==c)(/**********Cund**********/n=2;while(s[i+l+n]!='\O')n++;for(j=i+n+j-)s|j+l]=s[j];/**********found**********/slj+l]=_3一;i=i+l;1}main(){chars[80]="baacda,',c;printf(M

390Thestring:%s

391*\s);printf(H

392Inputacharacter:M);scanf(H%c",&c);fun(s,c);printf(H

393Theresultis:%s

394H,s);)解题答案:for(i=0;s[i]!=0;i++)/**********第二空**********/n=0;/**********第三空**********/s[j+l]=c;二、改错题:在主函数中从键盘输入若干个数放入数组中,用。结束输入并放在最后ー个元素中。给定程序M0DI1.C中函数fun的功能是:计算数组元素中值为正数的平均值(不包括〇)〇例如:数组中元素中的值依次为:39,47,212-8,15,0,则程序的运行结果为:19.250000。请改正程序中的错误,使它能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!给定源程序:#includedoublefun(intx[])(/************found************/intsum=0.0;intc=0,i=0;while(x[i!!=0){if(x[i]>0){sum+=x(ij;C++;}i++;}""foundsum\=c;returnsum;)main(){intx[10001;inti=0;printf(H

395Pleaseentersomedata(endwith〇):");do{scanf("%d",&x[i]);)while(x[i++!!=0);printf("%f

396",fun(x));)解题答案:/************found************/doublesum=0.0;/*******ound************/sum/=c;三、程序题:编写函数fun,函数的功能是:根据以下公式计算s,计算结果作为函数值返回;n通过形参传入。111S=1+—++...+1+21+2+3l+2+3+...+n例如:若n的值为11时,函数的值为:1.833333注意:部分源程序在文件PROG1.C中。请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。给定源程序:#includedoublefun(intn)main(){intn;doubles;voidNONO();printf("

397PleaseenterN:M);scanf(M%d",&n);s=fun(n);printf(Mtheresultis:s);NONO();

398}voidNONO()1/・本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。*/FILE*fp,*wf;inti,n;doubles;fp=fopen("in.dat","r");wf=fopen("out.dat",W);for(i=0;i<10;i-H-){fscanf(fp,"%d",&n);s=fun(n);fprintf(wf,M%f

399M,s);)fclose(fp);fclose(wf);}参考答案:floatfun(intn)(inti,j,t;floats=0;for(i=l;i<=n;i++)(t=0;for(j=l;j<=i;j++)t+=j;s=s+l./t;}returns;第28套:ー、填空题:给定程序中,函数fun的功能是:有NxN矩阵,根据给定的m(m<=N)值,将每行元素中的值均右移m个位置,左边置为〇。例如,N=3,m=2,有下列矩阵123456789程序执行结果为001004007请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。注意:源程序存放在考生文件夹的BLANK1.C中。不得增行或删行,也不得更改程序的结构!给定源程序:#include#defineN4voidfun(int(*t)[N],intm){intij;for(i=0;i=0;j-)/**********Fk)und**********/t[i]U+_2_]=t[i]U];for(j=0;j<_3—;j++)t[i][j]=O;})main(){intt[][N]={21,12,13,24,25,16,47,38,29,11,32,54,42,2133,10},i,Jm;printf("

400Theoriginalarray:

401");for(i=0;i

402");}printf("Inputm(m<=%d):,',N);scanf("%d",&m);fun(t,m);printf("

403Thcresultis:

404");for(i=0;i

405函数。若high的值为:100,则函数的值为:732。请改正程序中的错误,使程序能输出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!给定源程序:#include#includeintfun(inthigh){intsum=0,n=0,j,yes;/************^)und************/while((high>=2)&&(n<10)(yes=1;for(j=2;j<=high/2;j++)if(high%j==O){/************Cund************/yes=0;break)if(yes){sum+=high;n++;}high-;)returnsum;)main()(printf(M%d

406",fun(100));)解题答案:/************found************/while((2<=high)&&(n<10))/************fourid************/yes=0;break;ホ三、程序题:编写函数fun,它的功能是:利用以下所示的简单迭代方法求方程:cos(x)-x=0的ー个实根。迭代步骤如下:(1)取xl初值为0.0;(2)x0=xl,把xl的值赋给x0;(3)xl=cos(x0),求出ー个新的xl:(4)若xO-xl的绝对值小于0.000001,执行步骤(5),否则执行步骤(2);(5)所求xl就是方程cos(x)-x=0的ー个实根,作为函数值返回。程序将输出结果Root=0.739085«注意:部分源程序在文件PROGI.C中。请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。给定源程序:#include#includedoublefun()()main()(voidNONO();printf(nRoot=%f

407",fun());NONO();)voidNONO(){/・本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。*/FILE*wf;wf=fopen("〇uLdaf'Jw");fprintf(wf,"%f

408”,fun());fclose(wf);]参考答案:floatfiin()(floatxO,x1=0.0;do{x0=xl;xl=cos(x0);)while(fabs(xO-x1)>0.000001);returnx1;第29套:ー、填空题:给定程序中,函数fun的功能是:将NxN矩阵中元素的值按列右移1个位置,右边被移出矩阵的元素绕回左边。例如,N=3,有下列矩阵

409123456789计算结果为312645978请在程序的下划线处填入正确的内容并把ド划线删除,使程序得出正确的结果。注意:源程序存放在考生文件夹下的BLANK1.C中。不得增行或删行,也不得更改程序的结构!给定源程序:#include#defineN4voidfun(int(*t)[N]>{inti,j,x;/**********found**********/for(i=0;i<_1—;i++)(/**********Cund**********/x=t[i][—2_];for(j=N-l;j>=l;j->t[i]U]=t[i]U-l];/**********Cund**********/t[i][-3—]=x;))main(){intt[][N]={21,12,13,24,25,16,47,38,29,11,32,54,42,21,33,10),1,j;printf("Theoriginalarray:

410");for(i=0;i

411H);fun(t);printf("

412Theresultis:

413");for(i=0;i

414");))解题答案:/**********第一空**********/for(i=0;idoublefun(doubleq){intn;doubles,t;n=2;s=2.0;while(s<=q){t=s;/************found************/s=s+(n+l)/n;n++;)printf(,,n=%d

415,,,n);returns;)main()(printf(H%f

416M,fun(50));)解题答案:/************found************/s=s+(n+l.)/n;/************found************/returnt;三、程序题:编写函数fun,它的功能是:求Fibonacci数列中大于t的最小的ー个数,结果由函数返回。其中Fibonacci数列F(n)的定义为:F(0)=0,F(l)=lF(n)=F(n—1)+F(n—2)例如:当t=1000时,函数值为:1597。

417注意:部分源程序在文件PROG1.C中。请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。给定源程序:#include#includeintfun(intt)main()/♦主函数・/{intn;voidNONO();n=1000;printf(Mn=%d,f=%d

418",n,fun(n));NONO();)voidNONO()(/・本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。*/FILE*fp,*wf;inti,n,s;fp=fopenC'in.dat'V'r");wf=fopen("〇ul.dar'Jw");for(i=0;i<10;i++){fscanf(fp,"%d",&n);s=fun(n);fprintf(wf,M%d

419",s);Jfclose(fp);fclose(wf);)参考答案:intfun(intt)intfD=0,fl=l,f;do{f=fO+fl;ft);fl;fl=f;Jwhile(f#dcfineN4voidfun(int(*t)[N])(intj4N];for(j=0;j=0;-2_)t[N-l][N-l-j]=tU][N-l];for(j=N-l;j>=0;j—)tU][N-l]=r[—3_];}main(){intt[][N]={21,12,l3,24,25,16,47,38,29,11,32,54,42,21,33,10},i,j;printf("

420Theoriginalarrayfor(i=0;i

421H);)fun(t);printf("

422Theresultis:

423");for(i=0;i

424H);

425)}解题答案:/**********found**********/t[0][N-j-l]=t[j][O]:/**********fQUn(j**********/for(j=N-l;j>=0;j—)/**********found**********/t[j][N-l]=r[j];******************************************二、改错题:给定程序MODIl.C中函数fun的功能是:计算S=f(-n)+f(-n+l)+…+f(O)+f(l)+f(2)+…+f(n)的值。例如,当n为5时,函数值应为:10.407143。f(x)函数定义如下:r(x+l)/(x-2)x>0且x#2f(x)=T0x=0或x=2L(x-l)/(x-2)x<0请改正程序中的错误,使程序能输出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!给定源程序:#include#include/************^ound************/f(doublex)if(x=0.0IIx=2.0)return0.0;elseif(x<0.0)return(x-l)/(x-2);elsereturn(x+1)/(x-2);)doublefun(intn){inti;doubles=0.0,y;fbr(i=-n;i<=n;i++)(y=f(1.0*i);s+=y;}/************found************/returnsJmain(){printf("%f

426,\fun(5));)解题答案:/************found************/doublef(doublex)/************found************/returns;三、程序题:编写函数fun,它的功能是计算:s作为函数值返回。在C语言中可调用log(n)函数求In(n)olog函数的引用说明是:doublelog(doublex)。例如,若m的值为:20,fun函数值为:6.506583。注意:部分源程序在文件PROG1.C中。请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。给定源程序:#include#includedoublefun(intm)()main()(voidNONO();printf("%f

427",fiin(20));NONO();voidNONO(){/・本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。*/FILE*fp,*wf;inii.n;doubles;fp=fopenCIn.dat1'/7");wf=fopen("out.dat,',,,wH);for(i=0;i<10;i++){fscanf(fp,"%d",&n);s=fun(n);fprintf(wf,M%f

428",s);}fclose(fp);fclose(wf);)参考答案:doublefun(intm)(doubles=0.0;inti;for(i=1;i<=m;i++)s+=log(1.0*i);s=sqrt(s);returns;)##################################

429第31套:、填空题:给定程序中,函数fun的功能是:有NxN矩阵,以主对角线为对称线,对称元素相加并将结果存放在左下三角元素中,右上三角元素置为〇。例如,若N=3,有下列矩阵:123456789计算结果为10065010149请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。注意:源程序存放在考生文件夹的BLANK1.C中。不得増行或删行,也不得更改程序的结构!给定源程序:#include#defineN4*****!Qy^J*♦*♦♦♦**♦*/voidfun(int(*t)1){intij;for(i=l;i

430Theoriginalarray:

431");for(i=0;i

432");}fun(t);printf("

433Theresultis:

434M);for(i=0;i

435");J)解题答案:/**********第一•空**********/voidfun(int(*t)[N])/**********第二空**********/t[i][j]=t[i][j]+t[j][i];/**********第三空**********/t[j][i]=0;二、改错题:给定程序MODI1.C中函数fun的功能是:计算函数F(x,y,z)=(x+y)/(x-y)+(z+y)/(z-y)的值。其中x和y的值不等,z和y的值不等。例如,当x的值为9、y的值为11、z的值为15时,函数值为-3.50.请改正程序中的错误,使它能得出正确结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。给定源程序:#include#include#include#defineFU(m,n)(m/n)floatfun(floata,floatb,floatc){floatvalue;value=FU(a+b,a-b)4-FU(c+b,c-b);Return(Value);)main(){floatx,y,z,sum;printf(*'Inputxyz:");scanf(u%f%f%r,&x.&y,&z);printf(,'x=%f,y=%f,z=%f

436",x,y,z);if(x==ylly==z){printf(,,Dataerror!

437");exit(〇);}sum二fun(x,y,z);printf(MTheresultis:%5.2f

438'\sum);)解题答案:/************found************/#defineFU(m,n)((m)/(n))/************found************/return(value);

439三、程序题:规定输入的字符串中只包含字母和・号。请编写函数fun,它的功能是:将字符串中的前导字号全部删除,中间和尾部的・号不删除。例如,字符串中的内容为:*******A*BC*DEF*G****,删除后,字符串中的内容应当是:A*BC*DEF*G****。在编写函数时,不得使用C语言提供的字符串函数。注意:部分源程序在文件PROG1.C中。请勿改动主函数main和其它函数屮的任何内容,仅在函数fun的花括号中填入你编写的若干语句。给定源程序:#includevoidfun(char*a)main(){chars[811;voidNONO();printf("Enterastring:

440");gets(s);fun(s);printf("Thestringafterdeleted:

441");puts(s);NONO();)voidNONO(){/・本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。*/FILE*in,*out;inti;chars[81];in=fopen("in.dat","r");out=fopen("out.dat","w**);fbr(i=0;i<1();i++){fscanf(in,"%s",s);fun(s);fprintf(out,"%s

442",s);}fclose(in);lclose(out);)参考答案:voidfun(char*a)(intj=0;char*p=a;while(*p=='*')p++;while(*p){a[j++]=*p;p++;)aU]=0;)第32套:一、填空题:给定程序中,函数fun的功能是:将NxN矩阵主对角线元素中的值与反向对角线对应位置上元素中的值进行交换•例如,若N=3,有下列矩阵:123456789交换后为:321456987请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。注意:源程序存放在考生文件夹的BLANK1.C中。不得增行或删行,也不得更改程序的结构!给定源程序:#include#defineN4voidfiin(int1,intn){inii,s;/**********found**********/fbr(_2_;i++){s=t[i][i];t[i][i]=t[i][n-i-l];/*******************/t[i][n-l-i]=_3—;main(){intt[][N]={21,12,13,24,25,16,47,38,29,11,32,54,42,21,33,10),ij;printf("

443Theoriginalarray:

444");for(i=0;i

445H);1fun(t,N);printf(H

446Theresultis:

447n);for(i=0;i

448{fbr(j=O;j

449");))解题答案:/**********found**********/voidfun(intt[][N],intn)/**********found**********/for(i=0;iw和high(lowhigh,查找结束。请改正程序中的错误,使它能得出正确结果。注意;不要改动main函数,不得增行或删行,也不得更改程序的结构。给定源程序;#include#defineN10voidfun(intal],intm){intlow=0,high=N-l,mid;while(low<=high){mid=(low+high)/2;if(ma[mid])low=mid+1;elseretum(mid);}retum(-l);)main(){inti,a[N]={-34,7,9,13,45,67,89,100,180},k,叫printfCa数组屮的数据如下:");for(i=0;i=0)printf(',m=%djndex=%d

450",m,k);elseprintfC'Notbefound!

451H);}解题答案:/************found************/intfun(inta[],intm)/************found************/elseif(m>a[mid])三、程序题:假定输入的字符串中只包含字母和・号。请编写函数fun,它的功能是:除了尾部的・号之外,将字符串中其它・号全部删除。形参p已指向字符串中最后的ー个字母。在编写函数时,不得使用C语言提供的字符串函数。例如,字符串中的内容为:****A*BC*DEF*G*******,删除后,字符串中的内容应当是:ABCDEFG*******。注意:部分源程序在文件PROG1.C中。请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中壊入你编写的若干语句。给定源程序:#includevoidfun(char*a.char*p)main(){chars[8l],*t;voidNONO();printf(MEnterastring:

452");gets(s);t=s;while(*t)t-H-;l一;while(*t=='*')t—;fun(s,t);printf("Thcstringafterdeleted:

453");puts(s);NONO();)voidNONO(){/・本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。*/FILE*in,*out;inti;chars[81],*t;in=fopen("in.dat,\,,rH);out=fopen("〇ut.dat",“w");for(i=0;i<10;i++){

454fscanf(in,"%s",s);t=s;while(*t)t++;t-;while(*t=**')t—;ftin(s,t);fprintf(out,"%s

455",s);}fclose(in);fclose(out);)参考答案:voidfun(char*a,char*p)(char*q=a;intj=0;while(*q&&q#defineN4fun(intt[][N],intn){inti,sum;/**********ほund**********/一1一;fbrQ=O;i

456Theoriginaldata:

457");for(i=0;i

458H);}printf("Theresultis:%d*',fun(t,N));}解题答案:/**********第一空**********/sum=0;/**********第二空**********/sum+=t[i][i];/亠・ユ亠亠ル・ユ亠亠"シ«亠。。シ//半:!!半J1:半半不半:|:不イラ.一:ZIL*******5^**/sum+=t[i][n-i-l];******************************************二、改错题:例如,若给m输入-100i给n输入90,则函数求得的ー个根值为2.00〇。请改正程序中的错误,使它能得出正确结果。注意:不要改动main函数,不得增行或刪行,也不得更改程序的结构。给定源程序:#include#includedoublefunx(doublex){retum(2*x*x*x-4*x*x+3*x-6);}doublefun(doublem,doublen){/************^ound************/intr;r=(m+n)/2;while(fabs(n-m)<0.001){if(funx(r)*funx(n)<0)m=r;elsen=r;r=(m+n)/2;}

459returnr;)main(){doublem,n,root;printfC'Entermn:

460");scanf(M%lf%lf\&m,&n);root=fun(m,n);printf(,'root=%6.3f

461",root);J解题答案:/************found************/doubler;/************found************/while(fabs(n-m)>0.001)三、程序题:假定输入的字符串中只包含字母和・号。请编写函数ftm,它的功能是:除了字符串前导和尾部的・号之外,将串中其它・号全部删除。形参h已指向字符串中第一个字母,形参p已指向字符串中最后ー个字母。在编写函数时,不得使用C语言提供的字符串函数。例如,字符串中的内容为:****a*bc*def*g********,删除后,字符串中的内容应当是:****ABCDEFG********。在编写函数时,不得使用C语言提供的字符串函数。注意:部分源程序在文件PROG1.C中。请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。给定源程序:#includevoidfun(char*a,char*h,char*p)main(){chars[81],*t,*f;voidNONO();printf("Enterastring:

462");gets(s);t=f=s;while(*t)t-H-;t-;while(*t=='**)t—;while(*f==**,)f++;fun(s,f,t);printf("Thestringafterdeleted:

463M);puts(s);NONOO;)voidNONO(){/・本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。*/FILE*in,*out;inti;chars[81],*t,*f;in=fopen("in.dat,,;*rM);out=fopen(,,out.datM,,'wM);for(i=0;i<10;i++){fscanf(in,H%s",s);t=f=s;while(*t)t++;t-;while(*t=,*,)t;while(*f=='*')f++;fun(s»f,t);fprintf(out,"%s

464",s);)fclose(in);fclose(out);)参考答案:voidfun(char*a,char*h,char*p)(intj=0;char*q=a;while(*q&&q#defineN9

465intfun(inta|],intn){intiJ;j=0;for(i=0;i

466Theoriginaldata:

467M);for(i=0;i

468");n=fun(b,N);printf("

469Thcnumberofodd:%d

470",n);printf("

471Theoddnumber:

472");for(i=0;i

473");)解题答案:^includettdefineN9intfun(intaロ,intn)/**********第一空**********/

474if(a[i]%2==l)写函数时,不得使用C语言提供的字符串函数。例如,字/**********第二空**********/符串中的内容为:****A*BC*DEF*G*******,删除后,字a[j]=a[i];j++;符串中的内容应当是:ABCDEFGo/**********第三空**********/注意:部分源程序在文件PROG1.C中。returnj;请勿改动主函数main和其它函数中的任何内容,仅在函数******************************************fun的花括号中填入你编写的若干语句。二、改错题:给定程序MODI1.C中函数fun的功能是:求给定源程序:出两个非零正整数的最大公约数,并作为函数值返回。#include例如,若给numl和num2分别输入49和21,则输出的最voidfun(char*a)大公约数为7;若给numl和num2分别输入27和81,则{输出的最大公约数为27。请改正程序中的错误,使它能得出正确结果。)注意:不要改动main函数,不得增行或删行,也不得更改main()程序的结构。{chars[81];给定源程序:voidNONO();#includeprinlf("Enterastring:

475");gets(s);intfun(inta,intb)fun(s);{intr,t;printf("Thestringafterdeleted:

476");puts(s);if(a

477",s);scanf(',%d%d,\&numl,&num2);)printf("numl=%dnum2=%d

478

479",num1,num2);fclose(in);a=fun(numl,num2);fclose(out);printf(MThemaximuncommondivisoris%d

480

481",a);}}参考答案:解题答案:voidfun(char*a)/************fotind************/(t=a;a=b;b=t;intj=O;/************fotind************/char*p=a;return(b);while(*p){******************************************if(*p!=’巧a[j-H-]=*p;三、程序题:假定输入的字符串中只包含字母和・号。请编P++;写函数fun,它的功能是:删除字符串中所有的・号。在编)

482aO]=0;)#################################第35套:ー、填空题:函数fun的功能是:把形参a所指数组中的偶数按原顺序依次存放到a[0]、a"]、a[2]、……中,把奇数从数组中删除,偶数个数通过函数值返回。例如:若a所指数组中的数据最初排列为:9、1、4、2、3、6、5、8、7,删除奇数后a所指数组中的数据为:4、2、6、8,返回值为4。请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。注意:源程序存放在考生文件夹的BLANK1.C中。不得增行或删行,也不得更改程序的结构!给定源程序:#include#defineN9intfun(inta[],intn)lintij;j=0;for(i=0;i

483Theoriginaldata:

484");for(i=0;i

485H);n=fun(b,N);printf("

486Thenumberofeven:%d

487",n);printf(H

488Theeven:

489M);for(i=0;i

490M);}解题答案:/**********第一•空**********/if(a[i]%2==0){/**********第二空**********/a[j]=a[i];j++;/**********第二空**********/returnj;二、改错题:给定程序MODI1.C中函数fun的功能是:按以下递归公式求函数值。r10(n=l)fun(n)=HLfun(n-l)+2(n>l)例如,当给n输入5时,函数值为18;当给n输入3时,函数值为14。请改正程序中的错误,使它能得出正确结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。给定源程序:#includeintfun(n){intc;/************found************/if(n=l)c=10;elsec=fun(n-l)+2;retum(c);)main(){intn;printf("Enternゴ');scanf("%d",&n);printf(nTheresult:%d

491

492",fun(n));)解题答案:/************fourid************/intfun(intn)/************founcl************/if(n=l)******************************************三、编程题:假定输入的字符串中只包含字母和・号。请编写函数fun,它的功能是:使字符串中尾部的・号不得多于n个;若多于n个,则删除多余的・号;若少于或等于n个,则什么也不做,字符串中间和前面的・号不删除。例如,字符串中的内容为:****A*BC*DEF*G*******,若n的值为4.删除后,字符串中的内容应当是:****A*BC*DEF*G****:若n的值为7,则字符串中的内容仍为:****a*BC*DEF*G*******。n的值在主函数中输入。

493在编写函数时,不得使用C语言提供的字符串函数。注意:部分源程序在文件PROGLC中。请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。给定源程序:#includevoidfun(char*ajntn)while(*p)p++;p-;/・字符串的长度・/while(*p=='*')p-;/・字符串右的'*'*/P++;while(j

494n);gets(s);printf("Entern:M);scanf(H%dM,&n);fun(s,n);printf(r,Thestringafterdeleted:

495M);puts(s);NONO();}voidNONO(){/・本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。*/FILE*in,*out;inti,n;chars[81];in=fopen("in.dat,'/,rH);out=fopen("out.dat","w");for(i=0;i<10;i++){fscanf(in,M%sM,s);fscanf(in,,'%dn,&n);fun(s,n);fprintf(out,"%s

496",s);}fclose(in);fclose(out);}参考答案:voidfun(char*a,intn){char*p=a;intj=O;第36套一、填空题:函数fun的功能是:把形参a所指数组中的最小值放在元素a[0]中,接着把形参a所指数组中的最大值放在a|l]元素中;再把a所指数组元素中的次小值放在a[2]中,把a所指数组元素中的次大值放在a[3]:其余以此类推。例如:若a所指数组中的数据最初排列为:9、1、4、2、3、6、5、8、7;则按规则移动后,数据排列为:1、9、2、8、3、7、4、6、5。形参n中存放a所指数组中数据的个数。注意:规定fun函数中的max存放当前所找的最大值,px存放当前所找最大值的下标.请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。注意:源程序存放在考生文件夹下的BLANK1.C中。不得增行或删行,也不得更改程序的结构!给定源程序:#include#defineN9voidfun(inta[],intn){inti,j,max,min,px,pn,t;for(i=0;i3)(min=a[j];pn=j;}}if(pn!=i){t=a|i];a|i|=min;a[pn]=t;if(px==i)px=pn;)if(px!=i+1)

497{t=a|i+l];a[i+l]=max;a|px]=t;}))main(){intb[N]={9,1,4,2,3A5,8,7),i;printf(M

498Theoriginaldata:

499");for(i=0;i

500M);fun(b,N);printf(M

501Thedataaftermoving:

502H);for(i=0;i

503");}解题答案:/***********シiヾ*******ホ*ホ/max=min=a[i];/**********第二空**********/if(maxa[j])二、改错题:给定程序M0DI1.C中函数fun的功能是:用递归算法计算斐波拉契数列中第n项的值。从第1项起,斐波拉契数列为:1、1、2、3、5、8、13、21、……例如,若给n输入フ,该项的斐波拉契数值为:13。请改正程序中的错误,使它能得出正确结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。给定源程序:#includelongfun(intg)(/**********found**********/switch(g);/*switch语句・/{case0:return0;/**********found**********/case1;case2:return1;retum(fun(g-1)+fun(g-2));)main(){longfib;intn;printf("Inputn:");scanf("%d",&n);printf(Mn=%d

504",n);fib=fun(n);printf("fib=%d

505

506'\fib);)解题答案:/**********found**********/switch(g)/*switch语句・//**********found**********/case1:return1;case2:return1;三、程序题:某学生的记录由学号、8门课程成绩和平均分组成,学号和8门课程的成绩已在主函数中给出。请编写函数fun,它的功能是:求出该学生的平均分放在记录的ave成员中。例如,学生的成绩是:85.5,76,69.5,85,91,72,64.5,87.5,他的平均分应当是:78.875。注意:部分源程序在文件PROG1.C中。请勿改动主函数main和其它函数中的任何内容,仅在函数fun部位中填入你编写的若干语句。给定源程序:#include#defineN8typedefstruct{charnum[10J;doubles[N];doubleave;)STREC;voidfun(STREC*a)(]main(){STRECs={"GA005”,85.5,76,69.5,85,91,72.64.5,87.5);inti;voidNONO();fun(&s);printf(''The%s'sstudentdata:

507",s.num);for(i=0;i

508ave=%7.3f

509H,s.ave);NONO();}voidNONO()(/・本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。*/FILE*out;intij;STRECs[10]={ドGA005”,85.5,76,69.5,85,91,72,64.5,87.5},{HGA001H,82.5,66,76.5,76,89,76,46.5,78.5},ドGA002”,72556,66.5,66,79,68,46.5,58.5},

510{'•GAOOS1,,92.5,76,86.5,86,99,86,56.5,88.5},{“GA004”,82,66.5,46.5,56,76,75,76.5,63.5},ドGA006”,75.5,74,7L5,85,81,79,64.5,71.5),{“GA007”,92561,72584,79,75,66.5,72.5},ドGA008”,72.5,86,73.5,80,69,63,76.5,53.5},ドGA009”,66.5,71,74.5,70,61,82,86.5,58.5},ドGAO10H,76,66.5,75.5,60,76,71,96.5,93.5},};out=fopen(,'out.dat,,,,,wM);for(i=0;i<10;i++){fun(&s[i]);fprintf(out,H%7.3f

511",s[i].ave);)fclose(out);)参考答案:voidfun(STREC*a){inti;for(i=0;iave=a->ave+a->s[i];a->ave/=N;)触###########################第37套:一.填空题:给定程序的功能是调用fun函数建立班级通讯录。通讯录中记录每位学生的编号、姓名和电话号码。班级的人数和学生的信息从键盘读入,每个人的信息作为ー个数据块写到名为myfile5.dat的二进制文件中。请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。注意:源程序存放在考生文件夹下的BLANK1.C中。不得增行或删行,也不得更改程序的结构!给定源程序:#include^include#defineN5typedefstruct{intnum;charname[10];chartel[10];}STYPE;voidcheck();/**********found**********/intfun(1*std)(/**********found**********/—2—*fp;inti;if((fp=fopen(*myfile5.dat","wb"))=NULL)return(0);printf(*

512Outputdatatofile!

513*);for(i=0;i

514");exit(0);)printf(*

515Readfileandoutputtoscreen:

516");printf(*

517numnametel

518*);for(i=0;i

519*»s[i].num,s[i].name,s[i].tel);}fclose(fp);}解题答案:/**********第一空**********/intfun(STYPE*std)/**********第二空**********/FILE*fp;inti;

520/**********第三空**********/fwrite(&std[i],sizeof(STYPE),1,fp);二、改错题:给定程序MODILC中函数fun的功能是:先将在字符串s中的字符按正序存放到t串中,然后把s中的字符按逆序连接到1串的后面。例如:当s中的字符串为:"ABCDE”时,则t中的字符中应为:"ABCDEEDCBA”。请改正程序中的错误,使它能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!给定源程序:^include#includevoidfun(char*s,char*t){inti,si;si=strlen(s);/************found************/for(i=0;i<=sl;i++)t[i]=s[i];for(i=0;i

521Pleaseenterstrings:*);scanf("%s”,s);fun(s,t);printf(*Theresultis:%s

522,t);解题答案:/************found************/for(i二〇;i<=si;i++)/************found************/t[2*sl]=‘、〇';三、程序题:函数fiin的功能是:将两个两位数的正整数a、b合并形成一个整数放在c中。合并的方式是:将a数的十位和个位数依次放在c数的千位和十位上,b数的十位和个位数依次放在c数的百位和个位上。例如,当a=45,b=12时,调用该函数后,c=4152。注意:部分源程序存在文件PROG1.C中。数据文件IN.DAT中的数据不得修改。请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。给定源程序:^includevoidfun(inta,intb,long*c)main(){inta,b;longc;voidNONO();printf(*Inputa,b:");scanf("%d,%d”,&a,&b);fun(a,b,&c);printf(*Theresultis:%d'n”,c);NONO();)voidNONO(){/・本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。・/FILE*rf,*wf;inti,a,b;longc;rf=fopentin.dat","r");wf=fopen(*out.dat","w");for(i=0;i<10;i++){fscanf(rf,"%d,%d",&a,&b);fun(a,b,&c);fprintf(wf,"a二%d,b=%d,c=%ld'n”,a,b,c);)fclose(rf);fclose(wf);I解题答案:{*c=(a/10)*1000+(b/10)*100+(a%10)*10+(b%10);}肘###############################的«#####第38套:一、填空题:函数fun的功能是:将形参a所指数组中的前半部分元素中的值和后半部分元素中的值对换。形参n中存放数组中数据的个数,若n为奇数,则中间的元素不动。例如:若a所指数组中的数据依次为:1、2、3、4、5、6、7、8、9•则调换后为:6、7、8、9、5、1、2、3、4,请在程序的下划线处填入正确的内容并把下划线删除,使

523程序得出正确的结果。注意:源程序存放在考生文件夹下的BLANKLC中。不得增行或删行,也不得更改程序的结构!给定源程序:#include#defineN9voidfun(inta[],intn){inti,t,p;/♦****♦****JqupuJ**********/p=(n%2==O)?n/2:n/2+—1—;for(i=0;i

524Theoriginaldata:

525");for(i=0;i

526");fun(b,N);printf("

527Thcdataaftermoving:

528H);for(i=0;i

529");)解题答案:/**********第一空**********/p=(n%2=0)?n/2:n/2+l;/亠・■,一・,-.l--t--L・亠ユユー,-ぜ井亠・,・、,一.|一.|一一1-、し・亠ユ/a[i]=a[p+i];/**********第三空**********/a[p+i]=t;二、改错题:给定程序MODILC中函数fun的功能是:把主函数中输入的3个数,最大的放在a中,最小的放在c中,中间的放在b中。例如,输入的数为:551234,输出结果应当是:a=55.0,b=34.0,c=12.0.请改正程序中的错误,使它能得出正确结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。给定源程序:#includevoidfun(float*a,float*b,float*c)(/**********伯und**********/float*k;if(*a<*b){k=*a;*a=*b;*b=k;)/**********Cund**********/if(*a>*c){k=*c;*c=*a;*a=k;}if(*b<*c){k=*b;*b=*c;*c=k;)}main(){floata,b,c;printf("lnputabc:");scanf(M%f%f%r,&a,&b,&c);printfC'a=%4.1f,b=%4.1f,c=%4.1f

530

531",a,b,c);fun(&a,&b,&c);printfC'a=%4.1f,b=%4.1f,c=%4.1f

532

533",a,b,c);)解题答案:/**********foun(j**********/floatk;/**********founcl**********/if(*a<*c)三、程序题:学生的记录由学号和成绩组成,N名学生的数据已在主函数中放入结构体数组s中,请编写函数fun,它的功能是:把分数最髙的学生数据放在b所指的数组中,注意:分数最高的学生可能不止ー个,函数返回分数最高的学生的人数。注意:部分源程序在文件PROG1.C中。请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。给定源程序:#include#defineN16typedefstruct{charnum[10];ints;)STREC;intfun(STREC*a,STREC*b)main()

534{STRECs[N]={{HGAO5",85),ドGA03”,76},{“GA02”,69},{"GA04",85),{"GA01”,91},ドGA07”,72},ドGA08,64),{“GA06”,87},{"GA015",85J,ドGAO13M,91),{"GA012”.64}.{”GAO14”,91},{“GAO1ド,77},{“GAO17”.64},{”GAO18",64),{"GA016H,72});STRECh[N];inti,n;FILE*out;n=fun(s,h);printf("The%dhighestscore:

535",n);fbr(i=O;i

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

537");out=fopen("out.dat","wn);fprintf(out,**%d

538",n);fbr(i=O;i

539n,h[i].s);fclose(out);}参考答案:intfun(STREC*a,STREC*b)inti,max=a[O].s,n=0;for(i=1;ivoidfun(inta[],intn){inti,t;for(i=0;i<_1—;i++)(t=a[i];/******************/a[i]=a[n-l-2];/*******************/3=t;main(){intb[9]={1,2,3,4,5,67,8,9),i;printf("

540Thcoriginaldata:

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

542Thedataafterinvert:

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

544M);)解题答案:/**********第一空**********/for(i=0;i#include#includeintfun(char*p){intn;/*******************/n=♦p-'o,;

545P++;while(*p!=0){/**********f^)und**********/n=n*8+*P-,o,;p++;}returnn;}main(){chars[6];inti;intn;printf("Enterastring(Ocataldigits):M);gets(s);if(strlen(s)>5){printf("Error:Stringtoolonger!

546

547M);exit(O);}for(i=0;s[i];i++)if(s[i]<'O'lls[i]>T){printf("Error:%cnotisocataldigits!

548

549n,s[i]);exit(0);(printf("Theoriginalstring:M);puts(s);n=fun(s);printfi("

550%sisconveredtointegernumber:%d

551

552”,s,n);)解题答案:/**********found**********/n二・p」〇’:/**********found**********/n=n*8+*p-'0':三、程序题:学生的记录由学号和成绩组成,N名学生的数据已在主函数中放入结构体数组s中,请编写函数fun,它的功能是:函数返回指定学号的学生数据,指定的学号在主函数中输入。若没找到指定学号,在结构体变量中给学号黄空串,给成绩置ー1,作为函数值返回。(用于字符串比较的函数是strcmp)。注意:部分源程序在文件PROG1.C中。请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。给定源程序:#include#include#defineN16typedefstruct(charnum[10];ints;)STREC;STRECfun(STREC*a.char*b)()main()(STRECs[N]=({"GA005,1,85},(,,GA003",76),{,,GA002",69),{"GA004M,85},(“GA001”,91},(”GA007”,72),("GA008",64),("GA006",87},{"GA015",85),("GA013”,91},("GA012”,64},(“GA014”,91},(“GA01ド,77},(“GA017”,64},(“GA018”,64},("GA016”,72}};STRECh;charm[10];inti;FILE*out;printf("Theoriginaldata:

553");for(i=0;ivN;i++)(if(i%4==0)printf(,,

554M);printf("%s%3dM,s[i].num,s[i].s);)printfC'XnXnEnterthenumber:u);gets(m);

555h=fun(s,m);printf(HThedata:printf("

556%s%4d

557",h.num,h.s);printf(,,

558M);out=fopen("out.datn,"w");h二fun(ゴGAO13");fprintf(out,"%s%4d

559'\h.num,h.s);fclose(out);)参考答案:STRECfun(STREC*a,char*b)(STRECc;inti;c.num[0]=W;/・置初始空串・/c.s=-l;/・置成绩为T*/for(i=0;i/**********^ound**********/1fun(charch)/**********Sund**********/return'9-(ch-—3一);returnch;)main(){charcl,c2;printf("

560Theresult:

561H);cl=2;c2=fun(cl);printf(,'cl=%cc2=%c

562",cl,c2);cl=8';c2=fun(cl);printf(Mcl=%cc2=%c

563M,cl,c2);cl士a';c2=fun(cl);printf(,'cl=%cc2=%c

564M,cl,c2);)解题答案:/*********第一空**********/charfun(charch)/*********第二空**********/if(ch>:’。’&&chくニ’9')/**********第三空**********/return'9'"(ch-'0');二、改错题:给定程序MODI1.C中函数fun的功能是:将p所指字符串中的所有字符复制到b中,要求毎复制三个字符之后插入一个空格。例如,在调用ftin函数之前给a输入字符串:ABCDEFGHIJK»调用函数之后,字符数组b中的内容则为:ABCDEFGHIJKo请改正程序中的错误,使它能得出正确结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。给定源程序:#includevoidfun(char*p,char*b){inti,k=0;while(*p){i=l;while(i<=3&&*p){/**********gund**********/b[k]=p;k++;p++;i++;}if(ch>='0'&&_2—)/**********Cund**********/if(*p)b[k++]=MM;

565}}b[k]=W;}main(){chara[8O],b[8O];printf("Enterastring:");gets(a);printff'Theoriginalstring:M);puts(a);fun(a,b);printf(H

566Thestringafterinsertspace:");puts(b);printf('^

567

568^^);)解题答案:/**********found**********/b[k]=*p;/**********found**********/b[k++卜-;三、程序题:N名学生的成绩已在主函数中放入ー个带头节点的链表结构中,h指向链表的头节点。请编写函数fun,它的功能是:求出平均分,由函数值返回。例如,若学生的成绩是:85,76,69,85,91,72,64,87,则平均分应当是:78.625〇注意:部分源程序在文件PROG1.C中。请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。给定源程序:#include#includc#defineN8structslist{doubles;structslist*next;};typedefstructslistSTREC;doublefun(STREC*h)STREC*creat(double*s){STREC*h,*p,*q;inti=0;h=p=(STREC*)malloc(sizeof(STREC));p->s=0;while(is=s[i];i++;p->next=q;p=q;}p->next=0;returnh;Joutlist(STREC*h){STREC*p;p=h->next;printf("head");do{printf(':〉%4.1f',p->s);p=p->next;}while(p!=0);printf("

569

570");Jmain(){doubles[N]={85,76,69,85,91,72,64,87},ave;voidNONO();STREC*h;h=creat(s);outlist(h);ave=fun(h);printf("ave=%6.3f

571",ave);NONO();)voidNONO(){/・本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。*/FILE*in,*out;inti,j;doubles[N],ave;STREC*h;in=fopen("in.dat","r");out=fopen("out.datM;'w");fbr(i=O;i<10;i++){for(j=O;j

572",ave);)fclose(in);fclose(out);)参考答案:#include#include

573doublefun(STREC*h)(STREC*p=h->nexl;/・由于头结点中没有存放数据・/doubleav=0.0;/・对计算成绩平均值的变量进行初始化・/intn=0;while(p!=NULL)1/・判断链表是否结束・/av=av+p->s;/・对成绩进行累加・/p=p->next;/・到下ー个结点位置・/n++;/*人数加1*/}av/=n;/・计算成绩平均值・/returnav;/*返回成纟责平均值・/}肘####即################㈱########第41套:ー、填空题:函数fun的功能是进行字母转换。若形参ch中是小写英文字母,则转换成对应的大写英文字母;若ch中是大写英文字母,则转换成对应的小写英文字母:若是其它字符则保持不变:并将转换后的结果作为函数值返回。请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。注意:源程序存放在考生文件夹下的BLANK1.C中。不得增行或删行,也不得更改程序的结构!给定源程序:#include#includecharfun(charch){/♦*********!QUQjj**♦*♦♦**♦*/if((ch>=a')—1—(ch<='z,))returnch-'a'+'A';if(isupper(ch))/**********found**********/returnch+'a'-2;/**********found**********/return3;}main()(charcl,c2;printf(M

574Theresult:

575");cl=*w*;c2=fun(cl);printf(ncl=%cc2=%c

576*\cl,c2);c1=*W';c2=fun(c1);printf(Hcl=%cc2=%c

577M,cl,c2);cl=8*;c2=fun(cl);printf(Hcl=%cc2=%c

578",cl,c2);)解题答案:/**********第—空**********/if((ch>=,a*)&&(ch<=,z*))/**********第二空**********/returnch+'a'-'A';/**********第二空**********/returnch;二、改错题:给定程序MODI1.C中函数fun的功能是:给ー维数组a输入任意4个整数,并按卜.例的规律输出。例如输入1、2、3、4,程序运行后将输出以下方阵。4123341223411234请改正函数fun中指定部位的错误,使它能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!给定源程序:#include#defineM4/**************found**************/voidfun(inta)(inti,j,k,m;printf("Enter4number:M);for(i=0;i

579

580Theresult:

581

582M);fdr(i=M;i>0;i—){k=a[M-l];for(j=M-1;j>O;j-)aaUJ=a[j];a[OJ=k;for(m=0;m

583解题答案:/**************found**************/voidfun(int*a)/**************founc|**************/a[j]=a[j-l];******************************************三、程序题:请编写一个函数fun,它的功能是:计算并输出给定整数n的所有因子(不包括1与n自身)之和。规定n的值不大于100〇。例如,在主函数中从键盘给n输入的值为856,则输出为:sum=763。注意:部分源程序在文件PROG1.C中。请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。给定源程序:#includeintfun(intn)参考答案:intfiin(intn)(ints=0,i;for(i=2;i#includedoublefun(doublex,intn){doublef,t;inti;/**********Fk)und**********/NONO(){/・请在此函数内打开文件,输入测试数据,调用fun函数,输出数据,关闭文件。*/FILE*rf,*wf;inti,n,sum;rf=fopen("in.dat",MrH);wf=fopen("out.dat",“w");for(i=0;i<10;i++){fscanf(rf,H%dH,&n);sum=fiin(n);fprintf(wf,H%d=%d

584",n,sum);}fclose(rf);fclose(wf);)main(){intn.sum;printf("Inputn:");scanf("%d",&n);sum=fun(n);printf(Hsum=%d

585M,sum);NONO();for(i=l;i

586Theresultis:

587");printf(Hx=%-12.6fy=%-12.6AnH,x,y);)解题答案:/**********found**********/f=1;

588三、程序题:请编写函数fun,其功能是:计算并输出下列/**********fotind**********/多项式的值:例如,在主函数中从键盘给n输入15,则输出t*=(-l)*x/i;为:=2.718282。注意:要求n的值大于1但不大于100。部/**********found**********/分源程序在文件PROGI.C中。f+=t:请勿改动主函数main和其他函数中的任何内容,仅在函数******************************************fun的花括号中填入你编写的若干语句。二、改错题:给定程序MODI1.C中函数fiin的功能是:从给定源程序:3个红球,5个白球,6个黑球中任意取出8个作为ー组,进行#include输出。在毎组中,可以没有黑球,但必须要有红球和白球。组doublefun(intn)合数作为函数值返回。正确的组合数应该是15。程序中i{的值代表红球数,j的值代表白球数,k的值代表黑球数。请改正函数fun中指定部位的错误,使它能得出正确的结)果。注意:不要改动main函数,不得增行或删行,也不得main()更改程序的结构!{intn;doubles;给定源程序:printf("Inputn:");scanf("%d",&n);#includes=fun(n);intfun()printf(Hs=%f

589';s);{inti,j,k,sum=0;NONO();printf(H

590Theresult:

591

592");)/**************found**************/NONO()fbr(i=O;i<=3;i++){/・请在此函数内打开文件,输入测试数据,调用fun函{for(j=l;j<=5;j++)数,输出数据,关闭文件。*/{k=8-i-j;FILE*rf,*wf;intn.i;doubles;/**************found**************/rf=fopen("in.datM;,rM);if(K>=0&&K<=6)wf=fopen("out.datM,"wn);{sum=sum+l;fbr(i=0;i<10;i++){printf("red:%4dwhite:%4dblack:%4d

593",i,j,k);fscanf(rf,”%d”,&n);}s=fun(n);)fprintf(wf,H%lf

594M,s);Jreturnsum;fclose(rf);fclose(wf);}main()参考答案:{intsum;doublefun(intn)sum=fiin();(printfC'sum=%4d

595

596'\sum);doubles=l;)longt=l;解题答案:inti;/**************found**************/fbr(i=l;i<=n;i++){for(i=l;i<=3;i++)t=t*i;/*计算阶乘・//**************found**************/s+=l./t;/・计算每项的值并累加至变量s中・/if(k>=0&&k<=6))******************************************returns;/・返回多项式的值・/)

597#################################第43套:ー、填空题:函数fun的功能是:计算请在程序的下划线处填入正确的内容并把ド划线删除,使程序得出正确的结果。注意:源程序存放在考生文件夹ド的BLANKLC中。不得增行或删行,也不得更改程序的结构!给定源程序:#include#includedoublefun(doublex){doublef,t;intn;f=1.0+x;/**********R)und**********/t=1;n=1;do{n++;/**********found**********/t*=(".〇)*x/_2—;f+=t;1/*******************/while(3>=le-6);returnf;}main(){doublex,y;x=2.5;y=fun(x);printf(M

598Theresultis:

599");printf(Mx=%-12.6fy=%-12.6f

600",x,y);)解题答案:/**********第・空**********/t=X;/**********第二空**********/t*=(-1.0)*x/n;/**********第三空**********/while(fabs(t)>=le-6);二、改错题:给定程序MODI1.C中函数fun的功能是:求整数x的y次方的低3位值。例如,整数5的6次方为!5625,此值的低3位值为625〇请改正函数fun中指定部位的错误,使它能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!给定源程序:#includelongfun(intx,inty,long*p){inti;longt=l;/**************found**************/for(i=l;i

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

602

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

604

605*',x,y,r,t);)解题答案:/**************found**************/for(i=l;i<=y;i++)/**************found**************/t=t%1000;三、程序题:例如,在主函数中从键盘给x输入0.21后,输出为:s=l.100000。注意:部分源程序在文件PROG1.C中。请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。给定源程序:#include#includedoublefun(doublex)NONO(){/・请在此函数内打开文件,输入测试数据,调用fun函数,输出数据,关闭文件。*/FILE*rf,*wf;inti;doubles,x;rf=fopen(,,in.dat,',V);

606wf=fbpen(Mout.dat,V,wM);for(i=0;i<10;i++){fscanf(rf,**%lf,&x);s=fun(x);fprinlf(wf,s);)fclose(rf);fclose(wf);)main(){doublex,s;printf("lnpulx:");scanf("%lf\&x);s=fiin(x);printf(Ms=%f

607,\s);NONO();)参考・答案:doublefun(doublex){intn=l;/・循环计数・/doublesn=l;/*累计数・/doublexn=l,xnl=0;/*x的n值,以及x的n-1值;*/while(fabs(xn-xnl)>=0.000001)/・绝对值是否满足条件・/{xn=xn*x*(0.5-n+1)/n;/・表达式分解以后xn=(xn-1)*x*(0.5-n+1)/n*/n+=l;sn+=xn;/*sn累加上xn*/}retum(sn);}開####################即#########第44套:填空题:函数fun的功能是:计算的前n项。若x=2.5,函数值为:12.182340。请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。注意:源程序存放在考生文件夹下的BLANK1.C中。不得增行或删行,也不得更改程序的结构!给定源程序:#includedoublefun(doublex,intn){doublef,t;inti;f=1.0;t=1;for(i=2;i

608Theresultis:

609");printf(Hx=%-12.6fy=%-12.6f

610",x,y);)解题答案:/**********found**********/t=1;/**********found**********/for(i=l;i#defineN100intfun(int*s,intn){inti,j,k,a,b,c;j=0;for(i=100;i

611b=k%10;k/=10;c=k%10if(a==b&&a==c)s[j++|=i;)returnj;)main(){inta[N],n,num=0,i;do{printf(M

612Entern(<=1000):H);scanf("%d”,&n);}while(n>1000);num=fun(a,n);printf(r,

613

614Theresult:

615");for(i=0;i

616

617H);)解题答案:/**************found**************/k=i;/**************found**************/c=k%10;三、程序题:请编写函数fun,其功能是:计算并输出给定10个数的方差:例如,给定的10个数为950、890、76.0、65.0、88.0、72,0、85.0、81.0、90.0、56.0«输出为s=l1.730729。注意:部分源程序在文件PROG1.C中。请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。给定源程序:^include#includedoublefun(doublex[10])N0N0(){/・请在此函数内打开文件,输入测试数据,调用fun函数,输出数据,关闭文件。*/FILE*rf,*wf;inti,j;doubles,x[10];rf=fopen("in.dat","r");wf=fopen(*out.dat*,"w");for(i=0;i<5;i++){for(j=0;j<10;j++)fscanf(rf,"%lf”,&x[j]);s=fun(x);fprintf(wf,"%lf

618”,s);)fclose(rf);fclose(wf);)main()(doubles,x[10]={95.0,89.0,76.0,65.0,88.0,72.0,85.0,81.0,90.0,56.0};inti;printf(*

619Theoriginaldatais:

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

621

622");s=fun(x);printf("s=%f

623

624",s);NONO();)参考答案:doublefun(doublex[10|)(inti;doubleavg=0.0,sum=0.0,abs=0.0,fc;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);returnfc;)##阴曲####阴期####悔期####和オ#####第45套:ー、填空题:函数fun的功能是:计算请在程序的下划线处填入正确的内容并把ド划线删除,使程序得出正确的结果。注意:源程序存放在考生文件夹下的BLANK1.C中。不得增行或删行,也不得更改程序的结构!给定源程序:#include#include

625doublefun(doublex){doublef,t;intn;/**********ほund**********/f=1.0+一1一;t=x;n=1;do1n++;/**********found**********/t*=x/2;/**********ほund**********/f+=_3_;)while(fabs(t)>=le-6);returnf;)main(){doublex,y;x=2.5;y=fun(x);printf("

626Theresultis:

627");printf(Hx=%-12.6fy=%-12.6f

628x,y);)解题答案:/**********第一空**********/f=1.0+x;/**********第二空**********/t*=x/n;/**********第三空**********/f+=t;二、改错题:给定程序M0DI1.C中函数fun的功能是:计算n的5次方的值(规定n的值大于2、小于8),通过形参指针传回主函数:并计算该值的个位、十位、百位上数字之和作为函数值返回。例如,7的5次方是!6807,其低3位数的和值是15〇请改IE函数fun中指定部位的错误,使它能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!给定源程序:#include#includeintfun(intn,int*value){intd,s,i;d=0;s=0;fbr(i=l;i<=5;i++)d=d*n;*value=d;for(i=1;i<=3;i++){s=s+d%10;d=d\10;)returns;}main()(intn,sum,v;do{printf("

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

630

631Theresult:

632value=%dsum=%d

633

634M,v,sum);)解题答案:/**************found**************/d=l:s=0;/**************found**************/d=d/10;三、程序题:请编写函数fun,其功能是:计算并输出给定数组(长度为9)中每相邻两个元素之平均值的平方根之和。例如,给定数组中的9个元素依次为12.0,34.0、40、23.0,340、45.0、18.0、3.0、11.0,输出应为:s=35,951014。注意:部分源程序在文件PROGI.C中。请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。给定源程序:#include#includedoublefun(doublex[9|)main(){doubles,a[9]={12.0,34.0,4.0,23.0,34.0,45.0,18.0,3.0,11.0};inti;printf(M

635Theoriginaldatais:

636H);for(i=0;i<9;i++)printf(H%6.1f\a[i]);printf("

637

638M);s=fun(a);printf("s=%f

639

640*\s);NONO();)NONO(){/・请在此函数内打开文件,输入测试数据,调用fun函数,输出数据,关闭文件。*/FILE*rf,*wf;inti,j;doubles,a[9];

641rf=fopen("in.dat,,;'rH);wf=fopen("out.dat,,,"wH);for(i=0;i<5;i++){for(j=0;j<9;j++)fscanf(rf,M%lf\&a|j]);s=fun(a);fprintf(wf,M%lf

642",s);)fclose(rf);fclose(wf);}参考答案:doublefun(doublex[9])(inti;doubleavg=0.0,sum=0.0;for(i=0;i<8;i++){avg=(x[i|+x[i+l])/2;sum+=sqrt(avg);}returnsum;)悔###############################第46套一、填空题:函数fun的功能是:统计所有小于等于n(n>2)的素数的个数,素数的个数作为函数值返回。请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。注意:源程序存放在考生文件夹下的BLANK1.C中。不得增行或删行,也不得更改程序的结构!给定源程序:#includeintfun(intn)(inti,j,count=0;printf("

643Theprimenumberbetween3to%d

644",n);for(i=3;i<=n;i++){/**********found**********/for(一!一;j=i){count++;printf(count%15?1,%5d,,:"

645%5d,\i);})returncount;)main(){intn=20,r;r=fun(n);printf("

646Thenumberofprimeis:%d

647M,r);)解题答案:/**********第一空**********/for(j=3;j=i)二、改错题:数列中,第一项值为3,后ー项都比前ー项的值增5:给定程序MOD11.C中函数fun的功能是:计算而n(4#defineN20intfun(intn,int*a){intij,k,sum;sum=j=0;fbr(k=3J=0;i

648Entern(4vnv50):");scanf(”%d”,&n);d=fun(n,a);printf(r,

649

650Theresult:

651");for(i=0;i

652

653");)

654解题答案:/**************found**************/sum=0;j=0;/**************found**************/if(sum%4==2)三、程序题:请编写函数fun,其功能是:计算并输出下列多项式的值:例如,在主函数中从键盘给n输入8后,输出为:$=0.662872。注意:要求n的值大于1但不大于100。部分源程序在文件PROG1.C中。请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。给定源程序:#includedoublefun(intn))NONO(){/・请在此函数内打开文件,输入测试数据,调用fun函数,输出数据,关闭文件。*/FILE*rf,*wf;intn,i;doubles;rf=fopen("in.dar',"r");wf=fopen("out.datM,"wH);fbr(i=0;i<10;i++){fscanf(rf,”%d”.&n);s=fun(n);fprintf(wf,H%lf

655M,s);}fclose(rf);fclose(wf);}main(){intn;doubles;printf("

656lnputn:");scanf("%d",&n);s=fun(n);printf("

657s=%f

658",s);NONO();)参考答案:doublefun(intn)(inti;doublesum=0.0;if(n>l&&n<=100){for(i=l;i<=n;i++)sum+=1.0/(2*i-l)-1.0/(2*i);)returnsum;)#################耕############阴第47套:ー、填空题:函数firn的功能是:统计长整数n的各个位上出现数字1、2、3的次数,并通过外部(全局)变量cl,c2,c3返回主函数。例如:当n=123H4350时,结果应该为:cl=3c2=lc3=2o请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。注意:源程序存放在考生文件夹下BLANK1.C中。不得増行或删行,也不得更改程序的结构!给定源程序:#includeintcl,c2,c3;voidfun(longn){cl=c2=c3=0;while(n){switch(1)(/**********ほund**********/case1:cl-H-;2;/**********Cund**********/case2:c2++;3;case3:c3++;1n/=10;))main(){longn=123114350L;fun(n);printf("

659Theresult:

660");printf(Mn=%ldcl=%dc2=%dc3=%d

661",n,cl,c2,c3);)

662解题答案:/**********第一空**********/switch(n%10)/**********第二空**********/case1:cl++;break;/**********第三空**********/case2:c2++;break;二、改错题:给定程序MODI1.C中函数fun的功能是:统计ー个无符号整数中各位数字值为零的个数,通过形参传回主函数;并把该整数中各位上最大的数字值作为函数值返回。例如,若输入无符号整数30800.则数字值为零的个数为3,各位上数字值最大的是8〇请改正函数fun屮指定部位的错误,使它能得出正确的结果。注意:不要改动main函数,不得増行或删行,也不得更改程序的结构!给定源程序:#includeintfun(unsignedn,int*zero){intcount=0,max=0,t;do{t=n%IO;/**************found**************/if(t=O)count++;if(max

663lnputn(unsigned):H);scanf("%d",&n);max=fiin(n,&zero);printf("

664Theresult:max=%dzero=%d

665",max,zero);)解题答案:/**************found**************/if(t==O)/**************fourid3^************/*zero=count;三、程序题:请编写函数fun,其功能是:计算并输出下列多项式的值:111S=1+++…+1*21*2*3l*2*3*-50例如,在主函数中从键盘给n输入50后,输出为№1.718282.注意:要求n的值大于1但不大于100。部分源程序在文件PROG1.C中。请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句.给定源程序:#includedoublefun(intn)NONO()(/・请在此函数内打开文件,输入测试数据,调用fun函数,输出数据,关闭文件。*/FILE*rf,*wf;intn,i;doubles;rf=fopen(Hin.dat,,,V);wf=fopen("out.dat,,,HwH);for(i=0;i<10;i++){fscanf(rf,n%d",&n);s=fun(n);fprintf(wf,"%lf

666",s);)fclose(rf);fclose(wf);)main(){intn;doubles;printf("

667lnputn:");scanf(H%d",&n);s=fun(n);printf("

668

669s=%f

670

671,\s);NONO();)参考答案:doublefun(intn)(doubles=0,t=l;inti;for(i=l;i<=n;i++){t*=i;

672s+=l./t;)returns;)#################################第48套:一、填空题:用筛选法可得到2〜n(n<10000)之间的所有素数,方法是:E寸先从素数2开始,将所有2的倍数的数从数表中删去(把数表中相应位置的值置成0);接着从数表中找下一个非〇数,并从数表中删去该数的所有倍数:依此类推,直到所找的下ー个数等于n为止.这样会得到ー个序列:2,3,5,7,11,13,17,19,23,函数fiin用筛选法找出所有小于等于n的素数,并统计素数的个数作为函数值返冋。请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。注意:源程序存放在考生文件夹下BLANK1.C中。不得增行或删行,也不得更改程序的结构!给定源程序:#includeintfun(intn){inta|10000],i,j,count=0;for(i=2;i<=n;i++)a[i]=i;i=2;while(i

673Theprimenumberbetween2to%d

674",n);for(i=2;i<=n;i++)if(a[i]!=_3—){count++;printf(count%I5?,'%5dM:''

675%5d",a[i|);)returncount;)main(){intn=20,r;r=fun(n);printf("

676Thenumberofprimeis:%d

677”,r);)解题答案:/**********第一空**********/for(j=a[i]*2;j<=n;j+=a[i])/**********第二空**********/while(a[i]=0)/**********第二空**********/if(a[i]!=0)二、改错题:给定程序MODI1.C中函数fun的功能是:为ー个偶数寻找两个素数,这两个素数之和等丁•该偶数,并将这两个素数通过形参指针传回主函数。请改正函数fun中指定部位的错误,使它能得出IE确的结注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!给定源程序:#include#includevoidfun(intajnl*bjnt*c){intij,d,y;for(i=3;i<=a/2;i=i+2){Y=l;for(j=2;j<=sqrt((double)i);j++)if(i%j==O)y=0;if(y==l){d==a-i;for(j=2;j<=sqrt((double)d);j++)if(d%j==O)y=0;if(y=D{*b=i;*c=d;}main(){inta,b,c;do{printf(M

678Inputa:");scanf(M%d",&a);}while(a%2);fun(a,&b,&c);printf(H

679

680%d=%d+%d

681",a,b,c);)解题答案:

682/**************found**************/y=l;/**************foun(j**************/d=a-i;******************************************三、程序题:请编写函数firn,它的功能是:计算并输出n(包括n)以内能被5或9整除的所有自然数的倒数之和。例如,在主函数中从键盘给n输入20后,输出为:s=0.583333o注意:要求n的值不大于100.部分源程序在文件PROG1.C中O请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。给定源程序:♦(includedoublefun(intn)NONOO{/・请在此函数内打开文件,输入测试数据,调用fun函数,输出数据,关闭文件。*/FILE*rf,*wf;intn,i;doubles;rf=fopen("in.dat","r");wf=fopen(“〇ut.dal","w");for(i=0;i<10;i++){fscanf(rf,"%d",&n);s=fun(n):fprintf(wf,"%lf

683",s);}fclose(rf);fclose(wf);)main(){intn;doubles;printf("

684lnputn:");scanf("%d",&n);s=fun(n);printf("

685

686s=%f

687",s);NONO();)参考答案:doublefun(intn)(inti;doublesum=0.0;for(i=l;i<=n;i++)if(i%5==0IIi%9==0)/・被5或9整除・/sum+=1.0/i;returnsum;)#################################第49套:ー、填空题:甲乙丙丁四人同时开始放鞭炮,甲毎隔”秒放一次,乙每隔t2秒放一次,丙每隔t3秒放一次,丁每隔t4秒放一次,每人各放n次。函数fun的功能是根据形参提供的值,求出总共听到多少次鞭炮声作为函数值返冋。注意,当几个鞭炮同时炸响,只算一次响声,第一次响声是在第。秒。例如,若tl=7,t2=5,t3=6,t4=4,n=10,则总共可听到28次鞭炮声。请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。注意:源程序存放在考生文件夹下BLANK1.C中。不得增行或删行,也不得更改程序的结构!给定源程序:#include/**********found**********/#defineOK(i,t,n)((—1—%t==0)&&(i/t

688",r);}解题答案:/**********found**********/

689for(t=l;t#includevoidfun(inta,intb,intc){if(a+b>c&&b+c>a&&a+c>b){if(a==b&&b=c)return3;elseif(a==bllb==clla=c)return2;/**************found**************/elsereturn1)elsereturn0;)main(){inta,b,c,shape;printf("

690lnputa,b,c:");scanf(M%d%d%dM,&a,&b,&c);printf("

691a=%d,b=%d,c=%d

692",a,b,c);shape=fun(a,b,c);printfC'XnXnTheshape:%d

693",shape);)解题答案:/**************found**************/intfun(inta,intb,intc)/**************found**************/elsereturn1;******************************************三、程序题:请编写函数fun,其功能是:计算并输出3到n之间(含3和n)所有素数的平方根之和。例如,在主函数中从键盘给n输入100后,输出为:sum=148.874270。注意:要求n的值大于2但不大于100。部分源程序在文件PROG1.C中。请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。给定源程序:#include#includedoublefun(intn)NONO(){/・请在此函数内打开文件,输入测试数据,调用fun函数,输出数据,关闭文件。*/FILE*rf,*wf;intn,i;doubles;rf=fopen(,,in.dat"/*rH);wf=fopen(,,out.dat,,,,'w,');for(i=0;i<10;i++){fscanf(rf,"%d\&n);s=fun(n);fprintf(wf,"%lf

694”,s);}fclose(rf);fclose(wf);}main(){intn;doublesum;printf("

695

696lnputn:'*);scanf("%d",&n);sum=fun(n);printf("

697

698sum=%f

699

700,',sum);NONO();)参考答案:doublefun(intn)(inti,j=0;doubles=0;fbr(i=3;i<=n;i++){for(j=2;j

701if(j==i)s=s+sqrt(i);)returns;)8#曲触####阴触####阴㈱######附###第50套:一、填空题:函数fun的功能是:从三个形参a,b,c中找出中间的那个数,作为函数值返回。例如,当a=3,b=5,c=4时,中数为4。请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。注意:源程序存放在考生文件夹下BLANK1.C中。不得增行或删行,也不得更改程序的结构!给定源程序:#includeintfiin(inta,intb,intc)(intt;t=(a>b)?(b>c?b:(a>c?c:1)):((a>c)?2:((b>c)?c:—3—));returnt;)main(){inta1=3,a2=5,a3=4,r;r=fun(al,a2,a3);printf("

702Themiddlenumberis:%d

703*',r);)解题答案:ttincludeくstdio.h>intfun(inta,intb,intc)(intt;/**********f、ound**********/t=(a>b)?(b>c?b:(a>c?c:1)):((a>c)?3:((b>c)?c:|));二、改错题:给定程序MODI1.C中函数fun的功能是:首先将大写字母转换为对应小写字母;若小写字母为a〜u,则将其转换为其后的第5个字母;若小写字母为v〜z,使其值减21。转换后的小写字母作为函数值返回。例如,若形参是字母A,则转换为小写字母f;若形参是字母W,则转换为小写字母b。请改正函数fun中指定部位的错误,使它能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!给定源程序:#include#includecharfun(charc){if(c>='A'&&c<=Z)/**************found**************/C=C+32;if(c>='a'&&c<=*u')c=c-5;elseif(c>='v'&&c<='z')c=c-21;returnc;}main(){charcl,c2;primf("

704Enieraletter(A-Z):M);cl=getchar();if(isupper(cl)){c2=fun(cl);printf("

705

706ThcletterV%cVchangetoV%c\*

707",cl,c2);)elseprintf("

708Enter(A-Z)!

709M);}解题答案:/**************found**************/c=c+32;/**************found**************/c=c+5;三、程序题:请编写函数fun,其功能是:计算并输出例如,在主函数中从键盘给n输入20后,输出为:s=534.188884。注意:要求n的值大于1但不大于100。部分源程序在文件PROG1.C中。请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。给定源程序:#include#includedoublefun(intn)(Jmain(){intn;doubles;

710printf("

711

712Inputn:");scanf("%d",&n);s=fun(n);printf("

713

714s=%f

715

716*\s);NONO();}NONO()レ・请在此函数内打开文件,输入测试数据,调用fun函数,输出数据,关闭文件。*/FILE*rf,*wf;intn,i;doubles;rf=fopen("in.dat",,'r");wf=fopen(',out.dat',,MwM);fbr(i=0;i<10;i++){fscanf(rf,"%d",&n);s=fun(n);fprintf(wf,M%lf

717M,s);)fclose(rf);fclose(wf);)参考答案:doublefun(intn)(inti;doublefac=1.0;doublesum=1.0;for(i=2;i<=n;i++){fac+=sqrt(i);sum+=fac;)returnsum;)##########################即###群升第51套:填空题:给定程序中,函数fun的功能是:找出100至x(xW999)之间各位上的数字之和为15的所有整数,然后输出:符合条件的整数个数作为函数值返回。例如,当n值为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个。请在程序的ド划线处填入正确的内容并把ド划线删除,使程序得出正确的结果。注意:源程序存放在考生文件夹下的BLANK1.C中。不得增行或删行,也不得更改程序的结构!给定源程序:#includeintfun(intx){inin,sLs2,s3,t;/**********ほund**********/n=1_;t=100;while(t<=_2){sl=t%10;s2=(t/10)%10;s3=t/100;if(sl+s2+s3=15){prinlf(H%d”,t);n++;)/**********f^)und**********/_3_;}returnn;}main(){intx="l;while(x>999llx<0){printf("Pleaseinput(0

718",fun(x));)解题答案:/**********fourid**********/n二〇;/**********found**********/while(t<=x)/**********found**********/t++;改错题:给定程序MODI1.C中函数fun的功能是:先将s所指字符串中的字符按逆序存放到t所指字符串中,然后把s所指串中的字符按正序连接到t所指串的后面。

719例如:当s所指的字符串为:"ABCDE"时,则t所指的字符串应为:"EDCBAABCDE”。请改正程序中的错误,使它能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!给定源程序:#include#includevoidfun(char*s,char*t){inti;si=strlen(s);for(i=0;i

720Pleaseenterstrings:");scanf("%s'\s);fun(s,t);prinlf("Theresultis:%s

721",t);}解题答案:/************found************/inti,si;/************fourid************/t[i]=s[sl-i-l];程序题:函数fun的功能是:将a、b中的两个两位正整数合并形成•个新的整数放在c中。合并的方式是:籽a中的十位和个位数依次放在变量c的百位和个位上,b中的卜位和个位数依次放在变量c的千位和ト位上。例如,当a=45,b=12=调用该函数后,c=1425。注意:部分源程序存在文件PR0G1.C中。数据文件1N.DAT中的数据不得修改。请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。给定源程序:#includevoidfun(inta,intb,long*c)main()/・主函数・/{inta,b;longc;voidNONO();printf("Inputa,b:");scanf(,,%d%d';&a,&b);fun(a,b,&c);printf(MTheresultis:%ld

722",c);NONO();}voidNONO(){/・本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。*/FILE*rf,*wf;inti,a,b;longc;rf=fopen("in.daf;"r");wf=fopen(,,out.dat',,"w");for(i=0;i<10;i++){fscanf(rf,”%d,%d",&a.&b);fun(a,b,&c);fprintf(wf,"a=%d,b=%d,c=%ld

723",a,b,c);)fclose(rf);fclose(wf);)参考答案:voidfiin(inta,intb,long*c){*c=(b/10)*1000+(a/10)*100+(b%10)*10+(a%10);}關################################第52套:ー、填空题:给定程序中,函数fun的功能是:找出10〇〜999之间(含100和999)所有整数中各位上数字之和为x(x为一正整数)的整数,然后输出:符合条件的整数个数作为函数值返回。例如,当x值为5时,10〇〜999之间各位上数字之和为5的整数有:104、113、122、131、140、203、212、221、230、302、311、320、401、410、500.共有15

724个。当x值为27时,各位数字之和为27的整数是:999»只有1个。请在程序的ド划线处填入正确的内容并把ド划线删除,使程序得出正确的结果。注意:源程序存放在考生文件夹下的BLANKLC中。不得增行或删行,也不得更改程序的结构!给定源程序:#includeintfiin(intx)(intn,si,s2,s3,t;n=0;t=100;/**********Fk)und**********/while(t<=_1_){sl=t%10;s2=(_2__)%10;s3=t/100;/**********^k)und**********/if(sl+s2+s3==_3__){printf("%d1);n++;)t++;)returnn;}main(){intx="l;while(x<0){printf(HPleaseinput(x>0):H);scanf("%d",&x);)printf("

725Theresultis:%d

726M,fun(x));)解题答案:/**********第—空**********/while(t<=999){/**********第二空**********/sl=t%10;s2=(t/10)%10;s3=t/100;/**********第三空**********/if(sl+s2+s3—x)二、改错题:给定程序MODI1.C中函数fun的功能是:从低位开始取出长整型变量s中偶数位上的数,依次构成一个新数放在t中。高位仍在高位,低位仍在低位。例如,当s中的数为:7654321时,I中的数为:642〇请改正程序中的错误,使它能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!给定源程序:#includevoidfun(longs,longt){longsl=10;s/=10;*t=s%10;/************知und************/while(s<0){s=s/100;*t=s%10*sl+*t;si=si*10;))main(){longs,t;printf(M

727Pleaseenterscanf(M%ld",&s);fun(s,&t);printf(HTheresultis:%ld

728",t);}解题答案:#includeくstdio.h>/************found************/voidfun(longs,long*t)/************found************/while(s>0)三、程序题:学生的记录由学号和成绩组成,N名学生的数据已在主函数中放入结构体数组s中,请编写函数fun,它的功能是:按分数的高低排列学生的记录,髙分在前。注意:部分源程序在文件PROG1.C文件中。请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。给定源程序:#include#defineN16typedefstruct{charnum[10];

729ints;)STREC;voidfun(STRECa[])(Jmain(){STRECs[N]={{"GA005\85},{nGA003",76),{MGA002\69},ゴGA004”,85},{“GA00ド,91},{“GA007”,72},|”GA008”,64},{"GA006",87},{"GA015”,85},{“GAO13”,91},{”GA012",64|,{HGA014H,91),{"GAO11",66),{HGAO17",64),{',GAO18",64),{"GAO16",72));inti;FILE*out;fun(s);printf("Thedataaftersorted:

730");for(i=0;i

731");printf("%s%4d",s[i].num,s[i].s);)printf("

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

733");fprintf(out,"%4d",s[i].s);)fprintf(out,"

734");fclose(out);]参考答案:#include#defineN16typedefstruct{charnum|10];ints;)STREC;inifun(STRECa[])(STRECtmp;intij;for(i=0;iunsignedlongfun(unsignedlongn){unsignedlongx=0,s,i;intt;s=n;/**********Cund**********//**********found**********/while(_2_){t=s%10;if(t%2=0){/**********found**********/x=x+t*i;i=_3_;)s=s/10;returnx;)main(){unsignedlongn=-l;while(n>99999999lln<0){printf("Pleaseinput(0

735Theresultis:%ld

736",fiin(n));)解题答案:/**********第一空**********/i=l;/**********第二空*********/while(s)/**********第二空**********/x=x+t*i;i=i*10;二、改错题:给定程序MOD11.C中函数fun的功能是:输出M行M列整数方阵,然后求两条对角线上元素之和,返回此和数。请改正程序中的错误,使它能得出正确的结果。

737注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!给定源程序:#include#defineM5/************found************/intfun(intn,intxx[][]){inti,j,sum=0;printf("

738The%dx%dmatrix:

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

740”);)fbr(i=0;ivoidfun(inta,intb,long*c)voidNONO(){/・本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。*/FILE*rf,*wf;inti,a,b;longc;rf=fopen("in.dat”,T);wf=fopen(',out.dat'\,'w");for(i=0;i<10;i++){fscanf(rf,”%d,%d”,&a,&b);fun(a,b,&c);fprintf(wf,”a=%d,b二%d,c=%ld

741",a,b,c);)fclose(rf);fclose(wf);)main(){inta.b;longc;voidNONO();printfC'Inputa,b:");scanf("%d%d';&a,&b);fun(a,b,&c);printf(HTheresultis:%ld

742",c);NONO();)参考答案:voidfun(inta,intb,long*c)(*c=(a/10)*1000+(b%10)*100+(a%10)*10+(b/l0);)第54套:ー、填空题:给定程序中,函数fun的功能是:将形参n中,各位上为偶数的数取出,并按原来从髙位到低位相反的顺序组成一个新的数,并作为函数值返冋。例如,输入ー个整数:27638496,函数返回值为:64862。请在程序的ド划线处填入正确的内容并把ド划线删除,使程序得出正确的结果。注意:源程序存放在考生文件夹ドBLANKLC中。不得增行或删行,也不得更改程序的结构!给定源程序:#includeunsignedlongfiin(unsignedlongn){unsignedlongx=0;intt;while(n){t=n%10;

743/**********Cund**********/if(t%2==_l__)/**********Cund**********/x=_2_+t;/**********Cund**********/returnx;)main(){unsignedlongn="l;while(n>99999999lln<0){printf("Pleaseinput(0

744Theresultis:%ld

745'\fun(n));)解题答案:/**********第一空**********/if(t%2==0)/**********第二空**********/x=10*x+t;/**********第三空*********/n=n/10;二、改错题:给定程序MODI1.C中函数fun的功能是:将长整型数中每一位上为奇数的数依次取出,构成一个新数放在t中。髙位仍在髙位,低位仍在低位。例如,当s中的数为:87653142时,t中的数为:7531。请改正程序中的错误,使它能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!给定源程序:#includevoidfun(longs,long*t){intd;longsl=l;t=0;while(s>0){d=s%10;/************Sund************/if(d%2==0){*t=d*si+*t;si*=10;)s/=10;}1main(){longs,t;printf(M

746Pleaseenters:H);scanf(H%ld",&s);fun(s,&t);printf(MTheresultis:%ld

747",t);)解题答案:/************found************/*t=0;/************found************/if(d%2!=0)三、程序题:编写ー个函数fun,它的功能是:实现两个字符申的连接(不使用库函数strcat),即把p2所指的字符串连接到p!所指的字符串后。例如,分别输入下面两个字符串:FirstString—SecondString程序输出:FirstString-SecondString注意:部分源程序在文件PROGLC文件中。请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干・语句。给定源程序:#includevoidfun(charpl[],charp2[])main(){charsl[80hs2[40|;voidNONO();printf(''Entersiands2:

748");scanf("%s%s,',si,s2);printf(,'sl=%s

749",si);printf(,'s2=%s

750",s2);printf("Invokefun(sl,s2):

751");fun(sl,s2);printf("Afterinvoking:

752");printf("%s

753",si);NONO();)voidNONO()

754{/・本函数用于打开文件,输入测试数据,调用fun函数,输出数据,关闭文件。・/inti;HLE*rf,*wf;charsi[80],s2[40];rf=fopen("in.dat",V);wf=fopen("out.dat","w");fbr(i=O;i<10;i++)(fscanf(rf,"%sH,si);fscanf(rf,"%s",s2);fun(sl,s2);fprintf(wf,"%s

755",si);fclose(rf);fclose(wf);)参考答案:voidfun(charpl[],charp2||)(char*p=pI;while(*p)p++;while(*p2)*p++=*p2++;*p=0;)讎####附##########################第55套ー、填空题:给定程序中,函数fun的功能是:将形参n所指变量中,各位上为偶数的数去除,剩余的数按原来从高位到低位的顺序组成一个新的数,并通过形参指针n传回所指变量。例如,输入ー个数:27638496.新的数:为739。请在程序的ド划线处填入正确的内容并把ド划线删除,使程序得出正确的结果。注意:源程序存放在考生文件夹下BLANK1.C中。不得增行或删行,也不得更改程序的结构!给定源程序:#includevoidfun(unsignedlong*n){unsignedlongx=0,i;intt;i=l;while(*n)/**********Sund**********/{t=*n%_1_;/**********Cund**********/if(t%2!=_2__){x=x+t*i;i=d*10;}*n=*n/10;}/**********nd**********/♦n=_3_;}main(){unsignedlongn="l;while(n>99999999lln<0){printRTleaseinput(0

756Theresultis:%ld

757'

758);)解题答案:/**********第一空**********/{t=*n%10;/**********第二空*********/if(t%2!=0)/**********第三空*********/*n=x;二、改错题:给定程序MODI1.C中函数fun的功能是:计算n!。例如,给n输入5,则输出120.000000。请改正程序中的错误,使程序能输出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!给定源程序:#includedoublefun(intn){doubleresult=1.0;/************found************/ifn==0return1.0;while(n>1&&n<170)/************found************/result*=n—returnresult;)main(){intn;

759printf("InputN:H);scanf(M%d",&n);printf(n

760

761%d!=%lf

762

763",n,fun(n));)解题答案:/***sic********found************/if(n==0)/************found************/result*=nーー;******************************************三、程序题:请编写・个函数fun,它的功能是:将・个数字字符串转换为ー个整数(不得调用C语言提供的将字符串转换为整数的函数)。例如I,若输入字符串"-1234",则函数把它转换为整数值7234。函数fun中给出的语句仅供参考。注意:部分源程序存在文件PROG1.C文件中。请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。给定源程序:#include#includelongfun(char*p)main()/・主函数・/{chars[6];voidNONO();longn;printf("Enterastring:

764n);gets(s);n=fiin(s);printf("%ld

765",n);NONO();}voidNONO(){/・本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。*/FILE*fp,*wf;inti;chars[20];longn;fp=fopen("in.datH,V);wf=fopen(,,out.dat'\,,w'');for(i=0;i<10;i++){fscanf(fp,"%s”,s);n=fun(s);fprintf(wf,"%ld

766”,n);}fclose(fp);fclose(wf);}参考答案:#include#includelongfun(char*p)(/*以下代码仅供参考・/inti,len,t;/*len为串长,t为正负标识*/longx=0;len=strlen(p);if(p[O]=='J){t=-l;len-;p++;)elset=l;/・以下完成数字字符串转换为ー个数字・/while(*p)x=x*IO-48+(*p++);returnx*t;}#阴触####阴秒####曲即####阴»######㈱##第56套:一、填空题:给定程序中,函数fiin的功能是:计算下式前n项的和作为函数值返回。例如,当形参n的值为10时,函数返回:9.6125580请在程序的ド划线处填入正确的内容并把ド划线删除,使程序得出正确的结果。注意:源程序存放在考生文件夹下BLANK1.C中。不得增行或删行,也不得更改程序的结构!给定源程序:#includedoublefun(intn)(inti;doubles,t;/**********Cund**********/s=_1_;/**********Cund**********/fbr(i=1;i<=2:i++){t=2.〇・i;

767/**********^^)und**********/s=s+(2.〇・i-1)*(2.〇・i+1)/__3__;)returns;)main(){intn="l;while(n<0){printf("Pleaseinput(n>0):H);scanf(1,%d",&n);)printf("

768Theresultis:%f

769H,fun(n));

770三、程序题:请编写ー个函数fun,它的功能是:根据以下公式求n的值(要求满足精度0.0005,即某项小于0.0005时停止迭代):兀.11x21x2x3Ix2x3x41x2x...xa—=1+-++++...+233x53x5x73x5x7x93x5x...x(2〃程序运行后,如果输入精度00005,则程序输出为3.14…。注意:部分源程序存在文件PROG1.C文件中。请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。给定源程序:#include#includedoublefun(doubleeps){)main(){doublex;voidNONO();printf("Inputeps:");scanf("%lf',&x);printf("

771eps=%lf,PI=%lf

772",x,fun(x));NONO();)voidNONO(){/・本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。*/FILE*fp,*wf;inti;doublex;fp=fopen("in.dat",“r");wf=fopen("out.dat"/'w");for(i=0;i<10;i++){fscanf(fp,&x);fprintf(wf,"%lf

773",fun(x));)fclose(fp);fclose(wf);)解题答案:(doubles;floatn,t,pi;解题答案:/**********第一空**********/s二〇;/**********第二空**********/for(i=l;i<=n;i++)/**********第三空**********/s=s+(2.0*i-l)*(2.O*i+l)/(t*t);******************************************二、改错题:给定程序MODI1.C中函数fun的功能是:统计substr所指子字符串在str所指字符串中出现的次数。例如,若字符串为aaasIkaaas,子字符串为as,则应输出2。请改正程序中的错误,使它能计算出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!给定源程序:#includeintfun(char*str,char*substr){inti,j,k,num=O;for(i=0,str[i],i++)fbr(j=i,k=O;substr|k]=str|j];k-H-,j++)/************^)und************/If(substr[k+l]=AO'){num++;break;)returnnum;)main()(charstr[8O],substr[8O];printf("Inputastring:");gets(str);printf("Inputasubstring:");gets(substr);printf("%d

774",fun(str,substr));)解题答案:/************fojjnd************/for(i=0;str[i];i++)/************founcl************/if(substr[k+l]==,\0*)******************************************

775t=l;pi=O;n=l.O;s=l.0;〃对各个累加项,累加积等赋初始化值while((fabs(s))>=eps)〃精度判断(pi+=s:〃pi存放累加和t=n/(2*n+l)I〃每ー项s*=tI〃累积n++;)pi=pi*2;〃求得五值returnpi;}讎####附###########################附####第5フ套:ー、填空题:给定程序中,函数fiin的功能是:计算下式前n项的和作为函数值返回。例如,当形参n的值为10时,函数返回:-0.204491.请在程序的ド划线处填入正确的内容并把ド划线删除,使程序得出正确的结果。注意:源程序存放在考生文件夹ドBLANK1.C中。不得增行或删行,也不得更改程序的结构!给定源程序:#includedoublefun(intn){inti,k;doubles,t;s=0;/**********f^)und**********/k=_1_;for(i=l;i<=n;i++){/**********Sund**********/t=__2_;s=s+k*(2*i-l)*(2*i+l)/(t*t);/**********found**********/k=k*_3_;)returns;)main(){intn=-l;while(n<0)(printf("Pleaseinput(n>0):");scanf("%d",&n);}printf("

776Theresultis:%f

777",fun(n));)解题答案:/**********第一空**********/k=l;/**********第二空**********/1=2*1;/**********第三空*********/k=k*(T);二、改错题:给定程序MODI1.C中函数fun的功能是:判断ー个整数是否是素数,若是返回1,否则返回。。在main。函数中,若fun返回1输出YES»若ftin返回〇输出NO!o请改正程序中的错误,使它能得出IE确的结果。注意:不要改动main函数。不得增行或删行,也不得更改程序的结构!给定源程序:#includeintfun(intm){intk=2;while(k<=m&&(m%k))/************found************/k++if(m=k)return1;elsereturn0;)main(){intn;printf("

778Pleaseentern:");scanf(H%d",&n);if(fun(n))printf("YES

779");elseprintf(HNO!

780M);}解题答案:/************found************/k-H-;/************found************/if(m==k)三、程序题:请编写ー个函数fun,它的功能是:找出ー维整型数组元素中最大的值和它所在的下标,最大的值和它所在的下标通过形参传回。数组元素中的值已在主函数中赋予。主函数中x是数组名,n是x中的数据个数,max存放最大值,index存放最大值所在元素的ド标。

781注意:部分源程序存在文件PROG1.C文件中。请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。给定源程序:#include#includevoidfun(inta[],intn,int*max,int*d)main(){inti,x[20]ymax,index,n=10;voidNONO();for(i=0;i

782",max,index);NONOO;)voidNONO(){/・本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。*/FILE*fp,*wf;inii,x[20],max,index,n=10,j;fp=fopen("in.dat",丁’);wf=fopen("ouLdar',"w");for(i=0;i<10;i++){for(j=0;j

783",max,index);}fclose(fp);fclose(wf);}参考答案:voidfiin(inta[],intn,int*max,int*d){inti;*max=a[0];*d=0;/・把数组的第1个元素值赋值给最大值变量*max*/for(i=1;idoublefun(doublee){inti,k;doubles,t,x;s=0;k=l;i=2;x=__l_/4;/**********^k)und**********/while(x_2_e){s=s+k*x;k=k*(-1);t=2*i;/****♦♦******♦♦*♦♦/x=_3_/(t*t);i++;Ireturns;)main(){doublee=le-3;printf("

784Theresultis:%f

785",fun(e));)解题答案:/**********第—空**********/x=3./4;/**********第二空*********/while(x>e)/**********第三空*********/x=(2*i+l)/(t*t);二、改错题:给定程序MODI1.C中函数fun的功能是:求出以下分数序列的前n项之和。和值通过函数值返冋到main函数。

786235813211235813例如,若n=5,则应输出:8.391667〇请改正程序中的错误,使它能计算出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!给定源程序:#includevoidfun(intn){inta,b,c,k;doubles;s=0.0;a=2;b=1;for(k=1;k<=n;k++){/************^)und************/s=s+(Double)a/b;c=a;a=a+b;b=c;)returns;}main(){intn=5;printf("

787Thevalueoffunctionis:%lf

788M,fun(n));}解题答案:/************fotind************/doub1efun(intn)/************found************/s=s+(doub1e)a/b;******************************************三、程序题:请编写ー个函数fun,它的功能是:求出ー个2xM整型二维数组中最大元素的值,并将此值返回调用函数。注意:部分源程序存在文件PROG1.C文件中。请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。给定源程序:#include#defineM4intfun(inta|)|M|)(Jmain(){intarr[2][M]={5,8,3,45,76,-4,12,82};voidNONO();printf("max=%d

789".fun(arr));NONO();)voidNONO(){/・本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。*/FILE*wf;intarrQ[M]={5,8,3,90,76,-4,12,82);wf=fopen(Hout.datM,"w");fprintf(wf,,'max=%d

790,\fun(arr));fclose(wf);)参考答案:fun(inta[][M])(inti,j,max=a[0][0];for(i=0;i<2;i++)for(j=0;jdoublefun(doublee){inti;doubles,x;s=0;i=_l_;x=1.0;while(x>e){_2_;x=(2.0*i-1)/((_3_)*(2.0*i));

791S=S+X;)returns;)main(){doublee=le-3;printf("

792Theresultis:%f

793'\fiin(e));)解题答案:/**********第一空**********/s二〇;i=0;/**********第二空**********/i++;/**********第三空**********/x=(2.0*i-l)/((2.0*i)*(2.0*i));******************************************二、改错题:给定程序MODI1.C中函数fun的功能是:将s所指字符串的正序和反序进行连接,形成一个新串放在t所指的数组中。例如,当s所指字符串为:"ABCD”时,则t所指字符串中的内容应为:"ABCDDCBA"。请改正程序中的错误,使它能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!给定源程序:#include#includevoidfun(chars,chart)(inti,d;d=strlen(s);for(i=0;i

794PleaseenterstringS:");scanf("%s'\s);fun(s,t);printf("

795Theresultis:%s

796'\t);)解题答案:/************found************/voidfun(char*s,char*t)/************foUnd************/t[2*d]=\0*;三、程序题:函数fun的功能是:将s所指字符串中除了下标为奇数、同时ASCII值也为奇数的字符之外,其余的所有字符都删除,串中剩余字符所形成的一个新串放在t所指的数组中。例如,若s所指字符串中的内容为:'ABCDEFGI2345”,其中字符A的ASCI!码值虽为奇数,但所在元素的ド标为偶数,因此必需删除:而字符1的ASCII码值为奇数,所在数组中的ド标也为奇数,因此不应当删除,其它依此类推。最后t所指的数组中的内容应是:“135”。注意:部分源程序存在文件PROG1.C中。请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。给定源程序:##include#includevoidfun(char*s,chart[]){)main()(chars[100],t[100];voidNONO();printf("

797PleaseenterstringS:");scanf(“%s“,s);fun(s,t);printf("

798Theresultis:%s

799",t);NONO();)voidNONO()1/・本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。*/chars[100],t[100];FILE*rf,*wf;inti;rf=fopen(Hin.datM,MrH);wf=fopen("out.datM,HwH);for(i=0;i<10;i++){fscanf(rf,H%sH,s);fun(s,t);

800fprintf(wf,M%s

801",t);)fclose(rf);fclose(wf);)参考答案:voidfun(char*s,chart||)(inti,j=0;for(i=1;i#include#includechar*fun(char*s){inti,j,k,n;char*p,*t;n=strlen(s)+l;t=(char*)malloc(n*sizeof(char));p=(char*)malloc(n*sizeof(char));j=0;k=0;fbr(i=O;i=,a')&&(s[i]<=,z'))ll((s[i]>='A')&&(s[i]<=,Z,))){t[j]=-1—;j++;)else{p[k]=s[i];k++;})/**********found**********/for(i=0;i<_2_;i++)t[j+i]=p[i];/**********匂und**********/t|j+k]=_3_;returnt;)main()(chars[80|;printf("Pleaseinput:");scanf("%s",s);printf("

802Theresultis:%s

803",fun(s));)解题答案:/**********第一空**********/t[j]=s[i];j++;}/**********第二空**********/for(i=0;i#includevoidfun(char*s,char*tl,char*t2,char*w)(char*p,*r,*a=s;strcpy(w,s);/************知und************/while(w){p=w;r=tl;while(*r)/************砧und************/IF(*r=*p){r++;p++;}elsebreak;

804if(*r==、〇')a=w;w++;)r=t2;while(*r){*a=*r;a++;r++;))main()(chars[100],tl[100],t2[100],w[100];printfC^PleaseenterstringS:");scanf("%sM,s);printf("

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

806Pleaseentersubstringt2:");scanf("%s",t2);if(strlen(tl)=strlen(t2)){fun(s,tl,t2,w);printf("

807Theresultis:%s

808",w);)elseprintf("

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

810M);}解题答案:/************fourid************/while(*w)/************fotind************/if(*r-*p)三、程序题:函数fun的功能是:将s所指字符串中ASCII值为奇数的字符删除,串屮剩余字符形成•个新串放在t所指的数组中。例如,若s所指字符串中的内容为:“ABCDEFG12345”,其中字符A的ASCI!码值为奇数、…、字符I的ASCII码值也为奇数、…都应当删除,其它依此类推。最t所指的数组中的内容应是:“BDF24”。注意:部分源程序存在文件PROG1.C中。请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。给定源程序:#include#includevoidfun(char*s,chart[])()main()(chars|l(X)|,t[IOO];voidNONO();printf("

811PleaseenterstringS:");scanf("%s",s);hin(s,t);printf("

812Theresultis:%s

813",t);NONO();)voidNONO(){/♦本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。*/chars[100],t[100];FILE*rf,*wf;inti;rf=fopen("in.dat"/'r");wf=fopen("out.dat","w");fbr(i=0;i<10;i++){fscanf(rf,"%s'\s);fun(s,t);fprintf(wf,"%s

814",t);)fclose(rf);fclose(wf);}参考答案:voidfun(char*s,chart[])(intij=0;for(i=0;i#include

815#include#includechar*fun(char*s){inti,j,k,n;char*p,*t;n=strlen(s)+l;t=(char*)malkx:(n*sizeof(char));p=(char*)malloc(n*sizeof(char));j=0;k=0;for(i=0;i

816Thcresultis:%s

817'\fun(s));)解题答案:/**********第一・空**********/p[j]=s[i];j++;)/**********第二空**********/for(i=0;i#includevoidfun(char*a,char*b,char*c){intiJ;charch;i=0;j=strlen(b)-1;/************found************/while(i>j){ch=b[i];b[i]=bUJ;bU]=ch;i++;j—;)while(*aII*b){/************found************/If(*a){*c=*a;C++;a++;}if(*b){*c=*b;C++;b++;|)*c=0;)main()(charsi[100],s2[10014200];printf("

818Entersistring:H);scanf(H%sH,sl);printf("

819Enters2string:");scanf("%s'',s2);fun(sl,s2,t);printf("

820Theresultis:%s

821",t);)解题答案:/************found************/while(i

822#include#includevoidfun(char*s,chart1])main(){chars[100],t[100];voidNONO();printf("

823PleaseenterstringS:'*);scanf(M%s",s);fun(s,t);printf("

824Theresultis:%s

825",t);NONO();}voidNONO(){/・本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。*/chars[100],t[100];FILE*rf,*wf;inti;rf=fopenC'in.dafW);wf=fopen(,'out.dat',,',w");for(i=0;i<10;i++){fscanf(rf,H%sM,s);fun(s,t);fprintf(wf,H%s

826",t);}fclose(rf);fclose(wf);)参考答案:voidfun(char*s,chart[])(intiJ=0;fbr(i=0;i#include#defineN10doublefun(doublex[],double*y){intij;doubleav;/**********fQyj|J**********/av=_1_;/**********gund**********/fbr(i=O;iav)y[_3_]=x[i];yUl=-hreturnav;main(){inti;doublex[N],y[N];for(i=0;i

827H);printf("

828Theaverageis:%f

829",fun(x,y));for(i=0;y[i]>=0;i++)primf(”%5.1fprintf(',

830H);)解题答案:/**********第一空**********/av=0;/**********第二空**********/for(i=0;iav)y[j++]=x[i];二、改错题:给定程序MODI1.C中函数fun的功能是:根据整型形参m,计算如下公式的值。1111y=++++100*100200*200300*300m*m例如,若m=2000,则应输出:0.0001600请改正程序中的语法错误,使它能计算出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更

831改程序的结构!给定源程序:#include/************found************/fun(intm){doubley=0,d;inti;/***********************/for(i=100,i<=m,i+=100){d=(double)i*(double)i;y+=1.0/d;)retum(y);)main(){intn=2000;printf("

832Theresultis%lf

833",fun(n));)解题答案:/************found************/doublefun(intm)/************foun(j************/for(i=100;iく=m;i+=100)三、程序题:已知学生的记录由学号和学习成绩构成,N名学生的数据已存入a结构体数组中。请编写函数fun,函数的功能是:找出成绩最低的学生记录,通过形参返回主函数(规定只有一个最低分)。注意:部分源程序存在文件PROG1.C文件中。请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编叼的若干语句。给定源程序:#include#include#defineN10typedefstructss{charnum[10|;ints;)STU;voidfun(STUa[],STU*s)main(){STUa[N]={{”A01’,81},{“A02”,89},{“A03”,66},{"A04",87),ドA05”,77),{“A06”,90},{"A07,',79),{"A08",61),{“A09”,80},{“A10”,71}},m;inti;voidNONO();printf(H*****Theoriginaldata*****

834H);for(i=0;i

835”,a[i].num,ali].s);fun(a,&m);printf(*******THERESULT*****

836M);printf("Thelowest:%s,%d

837”,m.num,m.s);NONO();}voidNONO(){/・本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。*/FILE*rf,*wf;STUa[N],m;inti;rf=fopen("in.dat";,rH);wf=fopen("out.dat","w");for(i=0;i<10;i++)fscanf(rf,"%s%dM,a[i].num,&a[i].s);fun(a,&m);fprintf(wf,"Thelowest:%s,%d

838",m.num,m.s);fclose(rf);fclose(wf);}参考答案:fun(STUa[],STU*s)(inti,min=a[0].s,j=0;for(i=1;ia[i].s){/・如果最低分min仍大于当前分・/j=i;/・记住位置*/min=a[i].s;/・把当前分赋值给min*/)*s=a[j];)肘####附##########################第63套:ー、填空题:给定程序中,函数fun的功能是:计算x所指数组中N个数的平均值(规定所有数均为正数),平均值通过形参返回主函数,将小于平均值且最接近平均值的数作为函数值返回,在主函数中输出。例如,有10个正数:4630324061745154826,平均值为:30.500000主函数中输出:m=30.0请在程序的下划线处填入正确的内容并把下划线删除,使程

839序得出正确的结果。注意:源程序存放在考生文件夹下BLANK1.C中。不得増行或删行,也不得更改程序的结构!给定源程序:#include#include#defineN10doublefun(doublex[],double*av){inti,j;doubled,s;s=0;for(i=0;i

840Theaverageis:%f

841",av);printf(',m=%5.1f,,,m);printf("

842");)解题答案:/*********第一空**********/*av=s/N;/**********第二空**********/d=*av-x[i];j=i;}/**********第三空**********/returnx[j];二、改错题:给定程序MOD11.C中函数fun的功能是:根据整型形参n,计算如下公式的值。例如,若n=10,则应输出:0.617977〇请改正程序中的语法错误,使它能得出正确结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!给定源程序:#include/************found************/intfun(intn){floatA=l;inti;/************found************/for(i=2;i

843Pleaseentern:");scanf("%d”,&n);printf(MA%d=%f

844n,fiin(n));)解题答案:/************found************/floatfun(intn)/************foun(j************/for(i=2;i<=n;i++)******************************************三、程序题:程序定义了NxN的:维数组,并在主函数中自动赋值。请编写函数fun,函数的功能是:使数组右上三角元素中的值乘以m。例如:若m的值为2,a数组中的值为II9711218141a=l238l则返回主程序后a数组中的值应为12616114561145121注意:部分源程序存在文件PROG1.C文件中。请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。给定源程序:#include#include#defineN5voidfun(inta[][N],intm)main(){inta[N][N],m,i,j;voidNONO();printf("*****Thearray*****

845");for(i=0;i=3);printf("m=%4d

846",m);fun(a,m);

847printf(nTHERESULTXn');for(i=0;i

848n);)NONO();)voidNONO(){/・本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。*/FILE*rf,*wf;inti,j,n,a⑸[5];rf=fopen("in.dat',,"rH);wf=fopen(Hout.datM,MwM);fbr(i=0;i<5;i++)fbr(j=0;j<5;j++)fscanf(rf,H%dヽ&a[i]UD;fscanf(rf,"%d",&n);fun(a,n);for(i=0;i<5;i++){for(j=0;j<5;j++)fprintf(wf,"%4d”,a[i皿);tprinlf(wf,"

849");)fclose(rf);fclose(wf);)参考答案:intfun(inta[][N],intm)(intij;for(i=0;i^include#defineN10doublefun(double*x){inti,j;doubles,av,y[N];s二。;for(i=0;iav){/**********found**********/y[_2_]=x[i];x[i]=-l;}for(i=0;i

850*);printf(*

851Theaverageis:%f

852*,fun(x));printf(*

853Theresult:

854",fun(x));for(i=0;i

855*);}解题答案:/*********第一空**********/av=s/N;/**********第二空**********/y[j++]=x[i];x[i]=-l;}/**********第二空**********/if(x[i]!=-1)y[j++]=x[i];二、改错题:给定程序MODH.C的功能是:读入ー个英文文本行,将其中每个单词的第一个字母改成大写,然后输出此文本行(这里的“单词”是指由空格隔开的字符串)。

856例如,若输入:Iamastudenttotaketheexamination.,则应输出:IAmAStudentToTakeTheExamination,〇请改正程序中的错误,使程序能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!给定源程序:#include#include/************found************/include/************found************/upfst(charp)(intk=0;for(;*p;p++)if(k){if(*p='')k=0;)elseif(*p!=''){k二1;*p=toupper(*p);})mainO{charchrstr[81];printf(*

857PleaseenteranEnglishtextline:");gets(chrstr);printf(*

858

859Beforechanging:

860%s”,chrstr);upfst(chrstr);printf(*

861Afterchanging:

862%s

863”,chrstr);)解题答案:/************found************/#include/************found************/upfst(char*p)三、程序题:程序定义了NxN的二维数组,并在主函数中赋值。请编写函数fun,函数的功能是:求出数组周边元素的平均值并作为函数值返给主函数中的So例如:a数组中的值为1012791II97451a=l2383II145682115914II则返回主程序后s的值应为:3.375。注意:部分源程序存在文件PROG1.C文件中。请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。给定源程序:#include^include^defineN5doublefun(intw[][N])main(){inta[N][N]={0,1,2,7,9,1,9,7,4,5,2,3,8,3,1,4,5,6,8,2,5,9,1,4,1);inti,j;voidNONO0;doubles;printf(******Thearray*****

864*);for(i二〇;i

865");)s=fun(a);printfC*****THERESULT*****

866*);printf(*Thesumis:%lf

867,s);NONO();}voidNONO(){/・本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。*/FILE*rf,*wf;inti,j,a[5][5];doubles;rf=fopen(*in.dat","r");wf=fopen("out.dat","w");for(i=0;i<5;i++)for(j=0;j<5;j++)fscanf(rf,"%d",&a[i][j]);s=fun(a);fprintf(wf,"%lf

868*,s);fclose(rf);fclose(wf);)参考答案:doublefun(intw[][N])inti,j,n=0;doublesum=0;for(i=0;i

869sum+=w[0][i]+w[N-l][i];n+=2;)for(i=l;i^include^defineN10doublefun(double*x){inti,j;doubleav,y[N];av=0;/**********fcunei**********/for(i=0;i

870*);printf(*

871Theaverageis:%f

872*,fun(x));printf(*

873Theresult:

874",fun(x));for(i=0;i

875*);}解题答案:/*********第一空**********/for(i=0;ivoidfun(char*s,intnum[5]){intk,i=5;for(k=0;k

876if(i>=0)num[i]++;})mainO{charsi[81];intnuml[5],i;printf(*

877Pleaseenterastring:つ;gets(si);fun(si,numl);for(i=0;i<5;i++)printf(*%d*,numl[i]);printf("

878");)解题答案:/**********found**********/num[k]二。;/**********found**********/switch(*s)三、程序题:请编写函数fun,函数的功能是求出ニ维数组周边元素之和,作为函数值返回。二维数组中的值在主函数中赋予。例如:二维数组中的值为13579299946999813570则函数值为61o注意:部分源程序存在文件PROG1.C文件中。请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。给定源程序:^includeくstdio.h>ttdefineM4ttdefineN5intfun(inta[M][N])(}main(){intaa[M][N]={{l,3,5,7,9),{2,9,9,9,4},{6,9,9,9,8),{1,3,5,7,0}):inti,j,y;voidNONO();printf("Theoriginaldatais:

879");for(i=0;i

880");}y=fun(aa);printf(*

881Thesum:%d

882*,y);printf("

883");NONO();}voidNONO(){/・请在此函数内打开文件,输入测试数据,调用fun函数,输出数据,关闭文件。*/inti,j,y,k,aa[M][N];FILE*rf,*wf;rf=fopen("in.dat","r");wf=fopen("out.dat","w");for(k=0;k<10;k++){for(i=0;i

884",y);}fclose(rf);fclose(wf);)参考答案:intfun(inta[M][N])(inttot=0,1,j;for(i=0;i

885指的两个字符串转换成面值相同的整数,并进行相加作为函数值返回,规定字符串中只含9个以下数字字符。例如,主函数中输入字符串:32486和12345,在主函数中输出的函数值为:44831.请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。注意:源程序存放在考生文件夹下BLANK1.C中。不得增行或删行,也不得更改程序的结构!给定源程序:ttinclude^include^include#defineN9longctod(char*s)(longd=0;while(*s)if(isdigit(*s)){/**********found**********/d=d*10+*s-_1_;/**********found**********/_2_;}returnd;}longfun(char*a,char*b){/**********found**********/return_3_;)main(){charsi[N],s2[N];do{printf("Inputstringsi:");gets(sl);)while(strlen(sl)>N);do{printf("Inputstrings2:");gets(s2);}while(strlen(s2)>N);printf("Theresultis:%ld

886",fun(si,s2));解题答案:/**********第一空**********/d=d*10+*s」0';/**********^^■^^**********/s++;}/**********^^ーセ了**********/returnctod(a)+ctod(b);二、改错题:给定程序MODI1.C中fun函数的功能是:分别统计字符串中大写字母和小写字母的个数。例如,给字符串s输入:AAaaBBbl23CCccccd,则应输出结果:upper=6,lower=8。清改正程序中的错误,使它能计算出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!给定源程序:#include/**********found**********/voidfun(char*s,inta,intb)(while(*s){if(*s>='A'&&*s<='Z')/**********found**********/*a=a+l;if(*s>=*a&&*s<='z')/**********found**********/*b=b+l;s++;})main(){chars[100];intupper=0,lower=0;printf(*

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

888upper=%dlower=%d

889”,upper,lower);)解题答案:/**********found**********/voidfun(char*s,int*a,int*b)/**********found**********/*a二*a+1;/**********found**********/*b=*b+l;******************************************三、程序题:请编ー个函数ftm,函数的功能是使实型数保留2位小数,并对第三位进行四舍五入(规定实型数为正数)。例如:实型数为1234.567,则函数返回!234.570000;实型数为1234.564,则函数返回1234.560000。注意:部分源程序存在文件PROG1.C文件中。请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。给定源程序:^include

890floatfun(floath)main(){floata;voidNONO();printf("Entera:");scanf("%f",&a);printf("Theoriginaldatais:*);printf("%f

891

892",a);printf("Theresult:%f

893",fun(a));N0N0();)voidNONO(){/・请在此函数内打开文件,输入测试数据,调用fun函数,输出数据,关闭文件。・/inti;floata;FILE*rf,*wf;rf=fopen("in.dat","r");wf=fopen("out.dat","w");for(i=0;i<20;i++){fscanf(rf,"%f",&a);fprintf(wf,"%f

894",fun(a));}fclose(rf);fclose(wf);}参考答案:floatfun(floath){longw;w=h*100+0.5;return(float)w/100;)阴####肘########的####附#####肘#第67套:ー、填空题:给定程序中,函数ftm的功能是:调用随机函数产生20个互不相同的整数放在形参a所指数组中(此数组在主函数中已置0)。请在程序的卜.划线处填入正确的内容并把ド划线删除,使程序得出正确的结果。注意:源程序存放在考生文件夹トBLANK1.C中。不得增行或删行,也不得更改程序的结构!给定源程序:^include#include^defineN20voidfun(int*a){inti,x,n=0;x=rand()%20;/**********found**********/while(n<_1_){for(i=0;i

895");for(i=0;i

896*);)printf(*

897

898*);)解题答案:/**********第一空**********/while(n#include

899voidfun()(inta[3][3],sum;inti,j;/*********found**********/printf(*Inputdata:");for(i=。;iく3;i++){for(j=0:j<3:j++)/*********found**********/scanf("%d",a[i][j]);)for(i=0;i<3;i++)sum=sum+a[i][i];printfiSum二%d

900”,sum);)main(){fun();)解题答案:/*********found**********/sum二。;5/*********found**********/scanf("%d,",&a[i][j]);}******************************************三、程序题:编写程序,实现矩阵(3行3歹リ)的转置(即行列互换)例如,输入下面的矩阵:100200300400500600700800900程序输出:100400700200500800300600900注意:部分源程序在文件PROG1.C中。请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。给定源程序:#includevoidfun(intarray[3][3])main()(inti,j;voidNONO();intarray[3][3]={{100,200,300},{400,500,600},(700,800,900}};for(i=0;i<3;i++){for(j=0;j<3;j++)printf(*%7d*,arrayti][j]);printf(*

901*);)fun(array);printf("Convertedarray:

902");for(i=0;i<3;i++){for(j=0;j<3;j++)printf("%7d",array[i][j]);printf("

903");)NONO();)voidNONO()(/・请在此函数内打开文件,输入测试数据,调用fun函数,输出数据,关闭文件。*/inti,j,array[3][3];FILE*rf,*wf;rf=fopen("in.dat","r");wf=fopen("out.dat","w");for(i=0;i<3;i++)for(j=0;j<3;j++)fscanf(rf,"%d",&array[i][j]);fun(array);for(i=0;iく3;i++){for(j=0;j<3;j++)fprintf(wf,"%7d",array[i][j]);fprintf(wf,"

904");}fclose(rf);fclose(wf);)参考答案:intfun(intarray[3][3]){inti,j,arr[3][3];memcpy(arr,array,9*sizeof(int));for(i=0;i<3;i++)for(j=0;j<3;j++)array[i]U]=arrU][i];}#########################卅######

905第68套:ー、填空题:给定程序中,函数fun的功能是:找出NxN矩阵中每列元素中的最大值,并按顺序依次存放于形参b所指的ー维数组中。请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。注意:源程序存放在考生文件夹下BLANK1.C中。不得增行或删行,也不得更改程序的结构!给定源程序:^includeくstdio.h>ttdefineN4voidfun(int(*a)[N],int*b){inti,j;for(i=0;i

906Thematrix:

907*);for(i=0;i

908*);)/**********found**********/fun(_3_);printf(*

909Theresultis:");for(i=0;i

910");}解题答案:^include/**********第一空**********/b[i]=a[0][i];/**********第二空**********/if(b[i]/*********found**********/voidfun(intx,inty)(intt;/*********found**********/t=x;x=y;y=t;}mainO(inta,b;a=8;b=3;fun(&a,&b);printf(*%d,%d

911",a,b);)解题答案:/*********found**********/voidfun(int*x,int*y)/*********found**********/t=*x;*x=*y;*y=t;三、程序题:编写函数fun,函数的功能是求出小于或等于lim的所有素数并放在aa数组中,函数返回所求出的素数的个数。函数fun中给出的语句仅供参考。注意:部分源程序在文件PROG1.C中。请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。给定源程序:^include#defineMAX100intfun(intlim,intaa[MAX])()

912main(){int1imit,i,sum;voidNONO();intaa[MAX];printf("输入ー个整数”);scanf("%d",ftlimit);sum=fun(1imit,aa);for(i=0;i

913");printf("%5d",aa[i]);)NONOO;)voidNONO()(/・请在此函数内打开文件,输入测试数据,调用fun函数,输出数据,关闭文件。*/FILE*rf,*wf;int1imit,i,sum,aa[MAX];rf=fopen("in.dat","r");wf=fopen(*out.dat","w");fscanf(rf,"%d",&1imit);sum=fun(limit,aa);for(i=0;i

914*,aa[i]);fclose(rf);fclose(wf);}参考答案:intfun(intlim,intaa|MAX|)(inti,j,k=O;/*其中变量k用于统计素数个数・/fbr(i=2;i<=lim;i++)(/・以下完成判断aa数组中小于或等于lim的素数并统计个数・/for(j=2;j<=(i/2);j++)if(i%j==0)break;if(j>(i/2))aa|k++]=i;)returnk;}#################################第69套:ー、填空题:给定程序屮,函数fun的功能是建立一个NxN的矩阵。矩阵元素的构成规律是:最外层元素的值全部为1;从外向内第2层元素的值全部为2;第3层元素的值全部为3,…依次类推。例如,若N=5,生成的矩阵为:1111112221123211222111111请在程序的下划线处壊入正确的内容并把下划线删除,使程序得出正确的结果。注意:源程序存放在考生文件夹下BLANK1.C中。不得增行或删行,也不得更改程序的结构!给定源程序:#include^defineN7/**********found**********/voidfun(int(*a)[N])(inti,j,k,m;if(N%2=0)dfN/2;elsem=N/2+1;for(i=0;i

915Theresultis:

916");for(i=0;i

917");)

918)解题答案:/**********第一空**********/voidfun(int(*a)[N])/**********第二空**********/for(j=i;jvoidfun(intm,intk)intaa[20],i;for(i=0;m;i++)/**********found**********/aa[i]=m/k;m/=k;)for(;i;i-)/**********found**********/printf(*%d*,aa[i]);}main()(intb,n;printf(*

919Pleaseenteranumberandabase:

920*);scanf("%d%d”,&n,&b);fun(n,b);printf("

921");}解题答案:/**********found**********/aa[i]=m%k;/**********found**********/printf(*%d*,aa[i-l]);三、程序题:编写一个函数,从num个字符串中找出最长的一个字符串,并通过形参指针max传回该串地址。(注意:主函数中用****作为结束输入的标志,函数fun中给出的语句仅供参考。)注意:部分源程序在文件PROG1.C中。请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。给定源程序:#include#includeくstring.h>voidfun(char(*a)[81],intnum,char**max)main(){charss[10][81],*ps;voidNONO();intn,i=0;printf("输入若干个字符串:”);gets(ss[i]);puts(ss[i]);while(!strcmp(ss[i],"****")==0)(i++;gets(ss[i]);puts(ss[i]);}n=i;fun(ss,n,&ps);printf("

922max=%s

923",ps);NONO();}voidNONO()(/・请在此函数内打开文件,输入测试数据,调用fun函数,输出数据,关闭文件。*/charss[20][81],*ps;intn,i=0;FILE*rf,*wf;rf=fopen("in.dat","r");wf=fopen("out.dat","w");fgets(ss[i],81,rf);while(!strncmp(ss[i],******,4)=0)(fgets(ss[i],81,rf);

924)n=i;fun(ss,n,&ps);fprintf(wf,"%s",ps);fclose(rf);fclose(wf);)参考答案:fun(char(*a)[81],intnum,char**max)(/*以下代码仅供参考*/inti,k=O,maxlen;/*k为a数组中最长串所在元素的下标,初始为〇,maxlen为其串长・/maxlen=strlen(a[k]);fbr(i=l;imaxlen)(maxlen=strlen(a[i]);*max=a|k|;1〃〃〃〃〃““〃〃〃〃〃〃〃“〃〃〃〃〃〃“〃〃〃〃〃〃〃“〃〃)ttitttttit"ff""ff"ffff"""""ff"""ff第70套:一、填空题:给定程序中,函数fun的功能是:判定形参a所指的NxN(规定N为奇数)的矩阵是否是"幻方",若是,函数返冋值为1;不是,函数返回值为0。"幻方"的判定条件是:矩阵每行、毎列、主对角线及反对角线匕元素之和都相等。例如,以下3x3的矩阵就是ー个"幻方":492357816请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。注意:源程序存放在考生文件夹下BLANK1.C中。不得增行或删行,也不得更改程序的结构!给定源程序:Sinclude#defineN3intfun(int(*a)[N]){inti,j,ml,m2,row,colum;ml=m2=0;for(i=0;i

925*);for(i=0;i

926*);for(i=0;i

927");}if(fun(x))printf("TheArrayisamagicsquare.

928");elseprintf("TheArrayisn'tamagicsquare.

929");}解题答案:/**********第一空**********/row=colurn=0;/**********第二空*********/if((row!=colum)i|(row!=ml))return0;/**********第三空**********/return1;二、改错题:给定程序MODI1.C中fun函数的功能是:根据整型形参m,计算如下公式的值。111t=I23m例如,若主函数中输入5,则应输出ー。。283333。请改正函数fun中的错误或在横线处填上适当的内容并把横线删除,使它能计算出正确的结果。

930注意:不要改动main函数,不得増行或删行,也不得更改程序的结构!给定源程序:ttincludedoublefun(intm){doublet=1.0;inti;for(i=2;i<=m;i++)/**********found**********/t=1.0-1/i;/**********found**********/main()intm;printf(*

931Pleaseenter1integernumbers:

932*);scanf&m);printf(*

933

934Theresultis%lf

935*,fun(m));}解题答案:/**********found**********/t=t-l.0/i;/**********found**********/returnt;三.程序题:请编写一个函数,函数的功能是删除字符串中的所有空格。例如,主函数中输入"asdafaaz67",则输出为"asdafaaz67"«注意:部分源程序在文件PR0G1.C中。请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。给定源程序:#include#includevoidfun(char*str)mainO(charstr[81];voidNONO();printf(*Inputastring:*);gets(str);puts(str);fun(str);printf(****str:%s

936”,str);NONO();}voidNONO(){/・请在此函数内打开文件,输入调试数据,调用fun函数,输出数据,关闭文件。*/charstr[81];intn=0;FILE*rf,*wf;rf=fopen("in.dat","r");wf=fopen("out.dat*,,w");while(n<10){fgets(str,80,rf);fun(str);fprintf(wf,"%s”,str);n++;}fclose(rf);fclose(wf);)参考答案:intfun(char*str)(char*p=str;inti=0;while(*p){if(*p!='*)str[i++]=*p;P++;)str[i]=0;)###############################師#第71套:ー、填空题:给定程序屮,函数fun的功能是:籽a所指4x3矩阵中第k行的元素与第0行元素交换。例如,有下列矩阵:123456789101112若k为2,程序执行结果为:789456123101112请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。注意:源程序存放在考生文件夹下BLANK1.C屮。不得增行或删行,也不得更改程序的结构!给定源程序:#includeくstdio.h>#defineN3#defineM4/**********foiind**********/

937voidfun(int(*a)[N],int_1_){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,11,12}printf(*Thearraybeforemoving:

938

939*);for(i=0;i

940");)fun(x,2);printf(*Thearrayaftermoving:

941

942*);for(i=0;i

943

944");)}解题答案:/**********第・空**********/voidfun(int(*a)[N],intk)/**********第二空**********/for(i=0;i^includevoidfun(chart[])(charc;inti,j;/**********found***********/for(i=strlen(t);i;i-)for(j=0;j

945Pleaseenteracharacterstring:");gets(s);printf(*

946

947Beforesorting:

948ヽ"%s\,s);fun(s);printf("

949Aftersortingdecendingly:

950ヽ‘%s\,s);)解题答案:/**********found***********/for(i=strlen(t)-l;i;i一)/**********found***********/if(t[j]>t[j+l])三、程序题:请编写・个函数fun,其功能是:将ss所指字符串中所有下标为奇数位置上的字母转换为大写(若该位置上不是字母,则不转换)。例如,若输入"abc4EFg",则应输出“aBc4EFg”.注意:部分源程序在文件PROGLC文件中。请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。给定源程序:^includeくstdio.h>ttincludevoidfun(char*ss)voidmain(void){

951chartt[51];voidNONO();printf(*

952Pleaseenterancharacterstringwithin50characters:

953*);gets(tt);printf(*

954

955Afterchanging,thestring

956ヽ%、”“,tt);fun(tt);printf(*

957becomes

958\"%s\**,tt);NONO();}voidNONO(){/・请在此函数内打开文件,输入测试数据,调用fun函数,输出数据,关闭文件。*/chartt[51],ch;FILE*rf,*wf;intlen,i=0;rf=fopen("in.dat","r");wf=fopen("out.dat","w");while(i<10){fgets(tt,50,rf);len=strlen(tt)-1;ch=tt[len];if(ch=>

959*IIch==Oxla)tt[len]=0;fun(tt);fprintf(wf,"%s

960",tt);i++;)fclose(rf);fclose(wf);)参考答案:voidfun(char*ss)(char*p=ss;inti=0;while(*p){if((i%2)&&(*p>='a'&&*p<='z'))*p-=32;p++;i++;}returnss;)##抑悔####阴期####曲######和#####第72套:ー、填空题:给定程序中,函数fun的功能是:将a所指3x5矩阵中第k列的元素左移到第0列,第k列以后的毎列元素行依次左移,原来左边的各列依次绕到右边。例如,有下列矩阵:123451234512345若k为2,程序执行结果为345123451234512请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。注意:源程序存放在考生文件夹下BLANK1.C中。不得增行或删行,也不得更改程序的结构!给定源程序:^include#defineM3#defineN5voidfun(int(*a)[N],intk){inti,j,p,temp;/**********found**********/for(p=l;p<=1_;p++)for(i=0;i

961

962*);for(i=0;i

963");)

964fun(x,2);printf(*Thearrayaftermoving:

965

966*);for(i=0;i

967");)}解题答案:/亠亠亠亠亠ユ亠亠亠亠_ヮヾ、レ.レ・一—-1——レZfor(p=l;p<=k;p++)/**********第二空**********/for(j=0;j#includeくstdio.h>^defineM10inta[M][M]={0);/**************found**************/voidfun(int**a,intm){intj,k;for(j=0;j

968");}}解题答案:/**************found**************/voidfun(inta[][M],intm)/**************found**************/a[j][k]=(k+l)*(j+l);三、程序题:函数fun的功能是:将a、b中的两个两位正整数合并形成一个新的整数放在c中。合并的方式是:将a中的十位和个位数依次放在变量c的十位和千位上,b中的十位和个位数依次放在变量c的个位和百位上。例如,当a=45,b=12。调用该函数后,c=5241o注意:部分源程序存在文件PROG1.C中。数据文件IN.DAT中的数据不得修改。请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。给定源程序:4includevoidfun(inta,intb,long*c)main(){inta,b;longc;voidNONO();printf(*Inputa,b:');scanf("%d%d”,&a,&b);fun(a,b,&c);printf(*Theresultis:%ld

969*,c);NONOO;)voidNONO(){/・本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。*/FILE*rf,*wf;inti,a,b;longc;rf=fopen(*in.dat*,*r*);wf=fopen(*out.dat","w");for(i=0;i<10;i++){fscanf(rf,*%d,%d*,&a,&b);fun(a,b,&c);fprintf(wf,*a=%d,b=%d,c=%ld

970*,a,b,c);)fclose(rf);fclose(wf);

971}参考答案:voidfun(inta,intb,long*c)(*c=(a%10)*1000+(b%10)*100+(a/10)*10+(b/l0);)期##############################第73套一、填空题:给定程序中,函数fun的功能是:在3x4的矩阵中找出在行上最大、在列上最小的那个元素,若没有符合条件的元素则输出相应信息。例如,有下列矩阵:12134781063597程序执行结果为:find:a[2][2]=9请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。注意:源程序存放在考生文件夹下BLANK1.C中。不得增行或删行,也不得更改程序的结构!给定源程序:#include^defineM3#defineN4voidfun(int(*a)[N]){inti=0,j,find=0,rmax,c,k;while((i

972*,i,c,a[i][c]);/**********fourid**********/一3一:)if(Ifind)printf(*notfound!

973*);)main(){intx[M][N],i,j;printf(*Enternumberforarray:

974*);for(i=0;i

975*);for(i=0;i

976

977");}fun(x);)解题答案:/**********第一空d**********/rmax=a[i][j];c=j;}/**********第二空*********/if(k!=i&&a[k][c]<=rmax)find=0;/**********第三空*********/i++;******************************************二、改错题:给定程序MODI1.C中函数fun的功能是:根据整型形参m的值,计算如下公式的值。111t=]一....._......••••••———,2*23*3m*m例如,若m中的值为:5,则应输出:0.536389。请改正程序中的错误,使它能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!给定源程序:^includedoublefun(intm){doubley=1.0;inti;/**************found**************/for(i=2;i

978Theresultis%lf

979*,fun(n));}解题答案:

980/**************found**************/for(i=2;i<=m;i++)/**************found**************/y-=1.0/(i*i);三、程序题:m个人的成绩存放在score数组中,请编写函数fun,它的功能是:将低于平均分的人数作为函数值返回,将低于平均分的分数放在below所指的数组中。例如,当score数组中的数据为:10、20、30、40、50、60、70、80、90时,函数返回的人数应该是4,below中的数据应为:10、20、30、40〇注意:部分源程序在文件PROG1.C文件中。请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。给定源程序:#include#includeくstring.h>intfun(intscore[],intm,intbelow[])main(){inti,n,below[9];voidNONO();intscore[9]={10,20,30,40,50,60,70,80,90);n=fun(score,9,be1ow);printf(*

981Belowtheaveragescoreare:);for(i=0;i

982");}fclose(rf);fclose(wf);)参考答案:intfiin(intscore|],intm,intbelow|]){floatav=0.0;intiJ=0;fbr(i=O;iscore[i])below[j++]=score[i];returnj;)第74套ー、填空题:给定程序屮,函数fun的功能是:把形参s所指字符串中最右边的n个字符复制到形参t所指字符数组中,形成一个新串。若s所指字符串的长度小于n,则将整个字符串复制到形参t所指字符数组中。例如,形参s所指的字符串为:abcdefgh,n的值为5,程序执行后t所指字符数组中的字符串应为:defgh。请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。注意:源程序存放在考生文件夹下BLANK1.C中。不得増行或删行,也不得更改程序的结构!给定源程序:^include#include#defineN80voidfun(char*s,intn,char*t){intlen,i,j=0;len=strlen(s);/**********found**********/if(n>=len)strcpy(_1—);else{/**********found**********/for(i=len-n;i<=len-l;i++)t[j++]=_2_;/**********found**********/t[j]=_3_;)}main(){chars[N],t[N];intn;printf(*Enterastring:*);gets(s);printf(*Entern:");scanf("%d",&n);fun(s,n,t);printf(*Thestringt:;puts(t);

983I解题答案:/亠亠亠亠亠亠亠亠亠亠_ッく/if(n>=len)strcpy(t,s);/土ル土よ•土よ土。ル^sリ〈。ル亠。シどど亠2ルZfor(i=len-n;i<=len-l:i++)t[j++]=s[i];/**********第三空**********/t[j]=0;二、改错题:给定程序MODI1.C中函数fun的功能是:找出ー个大于形参m且紧随m的素数,并作为函数值返回。请改正程序中的错误,使它能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!给定源程序:^includeintfun(intm){inti,k;for(i=m+1;;i++){for(k=2;k

984”,n);)解题答案:/**************found**************/if(i%k==0)/**************found**************/if(k>=i)三、程序题:请编写函数fun,它的功能是:求出能整除形参x且不是偶数的各整数,并按从小到大的顺序放在pp所指的数组中,这些除数的个数通过形参n返回。例如,若x中的值为:35,则有4个数符合要求,它们是:1,5,7,35。注意:部分源程序在文件PROGLC文件屮。请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。给定源程序:#includevoidfun(intx,intppロ,int*n)main(){intx,aa[1000],n,i;voidNONO();printf(*

985Pleaseenteranintegernumber:

986*);scanf(*%d*,&x);fun(x,aa,&n);for(i=0;i

987");NONOO;voidNONO0{/・本函数用于打开文件,输入测试数据,调用fun函数,输出数据,关闭文件。*/intx,aa[1000],n,i,j;FILE*fp;fp=fopen(*out.dal","w");for(j=0;j<10;j++){x=30+j;fun(x,aa,&n);for(i=0;i

988");)fclose(fp);}参考答案:voidfun(intx,intpp[],int*n)(inti;*n=0;for(i=l:i<=x;i++)if((x%i=0)&&(i%2))pp[(*n)++]=i;)#################################第フ5套:ー、填空题:给定程序中,函数fun的功能是:判断形参s所指字符串是否是"回文"(Palindrome),若是,函数返回值为1i不是,函数返回值为〇。"回文"是正读和反读都一样的字符串(不区分大小写字母)。例如,LEVEL和Level是"回文",而LEVLEV不是"回文"。

989请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。注意:源程序存放在考生文件夹下BLANK1.C中。不得增行或删行,也不得更改程序的结构!给定源程序:#includeくstdio.h>#include#includeintfun(char*s){char*lp,*rp;/**********found**********/1P=_1_;rp=s+strlen(s)-l;while((toupper(*1p)=toupper(*rp))&&(lp

990\*%s\*isaPalindrome.

991

992*,s);elseprintf('

993\'%s\isn,taPalindrome.

994

995*,s);)解题答案:/**********第一空**********/lp=s;/**********第二空**********/lp++;rp-;}/**********第二空**********/if(lp/**************found**************/fun(intn){inta=2,b=1,c,k;doubles=0.0;for(k=1;k<=n;k++){s=s+l.0*a/b;/**************found**************/c=a;a+=b;b+=c;return(s);}main(){intn=5;printf(*

996Thevalueoffunctionis:%lf

997*,fun(n));}解题答案:/**************found**************/doublefun(intn)/**************found**************/c=a;a+=b;b=c;三、程序题:请编写函数fun,函数的功能是:将大于形参m且紧靠m的k个素数存入xx所指的数组中•例如,若输入!7,5,则应输出:19,23,29,31,37.函数fun中给出的语句仅供参考。注意:部分源程序在文件PROG1.C文件中.请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中壊入你编写的若干语句.给定源程序:^includevoidfun(intm,intk,intxx[])main()(intm,n,zz[1000];voidNONO();printf(*

998Pleaseentertwointegers:*);scanf(*%d%d",&m,&n);fun(m,n,zz);for(m=0;m

999");NONO();)voidNONO()

1000{/・本函数用于打开文件,输入测试数据,调用fun函数,输出数据,关闭文件。*/intm,n,zz[1000],i;FILE*rf,*wf;rf=fopen("in.dat",r");wf=fopen(*out.dat","w");for(i=0;i<10;i++){fscanf(rf,"%d%d",&m,&n);fun(m,n,zz);for(m=0;m

1001");)fclose(rf);fclose(wf);)参考答案:voidfun(intm,intk,intxx[])(intij=l,t=m+l;while(j<=k){/・以下完成判断素数,并存放到数组xx中*/for(i=2;iintfun(char*s){intn=0,flag=O;while(*s!=,\0*){if(*s!=,'&&flag==O){/**********found**********/_1_;flag=l;}/**********fotind**********/if(*s==,')flag=_2_;/**********fotind**********/―3—;)returnn;}main(){charstr[81];intn;printf(*

1002Enteralinetext:

1003*);gets(str);n=fun(str);printf(*

1004Thereare%dwordsinthistext.

1005

1006,n);I解题答案:/*********第一•空**********/n++;flag=l;}/**********,y**********/if(*s==,')flag=0;/**********第三空**********/s++;二、改错题:给定程序MODH.C中函数fun的功能是:从n(形参)个学生的成绩中统计出低于平均分的学生人数,此人数由函数值返回,平均分存放在形参aver所指的存储单元中。例如,若输入8名学生的成绩:80.5607290.59851.58864则低于平均分的学生人数为:4(平均分为:75.5625).请改正程序中的错误,使它能统计出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!给定源程序:

1007^include#defineN20intfun(float*s,intn,float*aver){floatave,t=0.0;intcount=0,k,i;for(k=0;k

1008Pleaseenterm:つ;scanf("%d",&m);printf(

1009Pleaseenter%dmark:

1010*,m);for(i=0;i

1011Thenumberofstudents:%d

1012”,fun(s,m,&aver));printf(*Ave=%f

1013”,aver);)解题答案:/**************found**************/t+=s[k];/***********ound**************/*aver=ave;三、程序题:请编写函数firn,其功能是求出数组的最大元素在数组中的下标并存放在k所指的存储单元中・例如,输入如下整数:876675896101301401980431451777则输出结果为:6,980注意:部分源程序在文件PROG1.C文件中。请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。给定源程序:^includevoidfun(int*s,intt,int*k)main(){inta[10]={876,675,896,101,301,401,980,431,451,777},k;voidNONO();fun(a,10,&k);printf(*%d,%d

1014”,k,a[k]);NONOO;}voidNONO0{/・本函数用于打开文件,输入测试数据,调用fun函数,输出数据,关闭文件。*/inta[10],i,k,j;FILE*rf,*wf;rf=fopen(*in.dat*,*r*);wf=fopen(*out.dat","w");for(i=0;i<10;i++){for(j=0;j<10;j++)fscanf(rf,"观",&a[j]);fun(a,10,&k);fprintf(wf,"%d,%d

1015",k,a[k]);)fclose(rf);fclose(wf);参考答案:intfun(int*s,intt,int*k)(inti,pos=0,max=*s;for(i=1;i

1016不得増行或删行,也不得更改程序的结构!给定源程序:ttincludeintfun(char*s,char*t)(intn=0;while(*s){if(*sく97){/**********found**********/*(t+n)=_1_;n-H-;}/**********f()und**********/」一;}*(t+n)=0;/**********found**********/return_3_;)main(){chars[81],t[81];intn;printf("

1017Enterastring:

1018");gets(s);n=fun(s,t);printf("

1019Thereare%dletterwhichASCIIcodeislessthan97:%s

1020",n,t);)解题答案:/*********第一空*********/*(t+n)=*s;n++;}/**********第二空**********/s++;/**********第三空**********/returnn;二、改错题:给定程序MODI1.C中函数fun的功能是:由形参给定n个实数,输出平均值,并统计在平均值以上(含平均值)的实数个数。例如,n=8时,输入:193.199,195,673,195.757,196.051,196.092,196.596,196.579,196.763所得平均值为:195.838745,在平均值以上的实数个数应为:5请改正程序屮的错误,使程序能输出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!给定源程序:4includeintfun(doublexロ,intn)(/************found************/intj,c=。,doublexa=0.0;for(j=0;j

1021”,xa);for(j=。;jxa)c++;returnc;}main()(doublex[100]={193.199,195.673,195.757,196.051,196.092,196.596,196.579,196.763};printf("%d

1022”,fun(x,8));I解题答案:/************found************/intj,c=0;doublexa=0.0;/************found************/if(x[j]>=xa)三、程序题:编写函数fun,其功能是:根据以下公式求P的值,结果由函数值带回。m与n为两个正整数且要求m>n。m!P=n!(m-n)!例如:m=12,n=8时,运行结果为495.00000〇。注意:部分源程序在文件PROG1.C文件中。请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。给定源程序:^includeくstdio.h>floatfun(intm,intn)main()/・主函数・/{voidNONO();printf(*P=%f

1023*,fun(12,8));NONOO;)voidNONO(){/・本函数用于打开文件,输入数据,调用函数,输出数据,

1024关闭文件。*/FILE*fp,*wf;inti,m,n;floats;fp=fopen("in.dat","r");wf二fopen(*out.dat","w");for(i=0;i<10;i++){fscanf(fp,"%d,%d",&m,&n);s=fun(m,n);fprintf(wf,*%f

1025*,s);}fclose(fp);fclose(wf);)参考答案:#includelongjc(intm)(longs=l;inti;for(i=l;i<=m;i-H-)s=s*i;returns;)floatfun(intm,intn)(floatp;p=1.0*jc(m)/jc(n)/jc(m-n);returnp;)#################################第78套:一.填空题:给定程序中,函数fun的功能是:将形参s所指字符串中的数字字符转换成对应的数值,计算出这些数值的累加和作为函数值返回。例如,形参s所指的字符串为:abs5defl26jkm8,程序执行后的输出结果为:22。请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。注意:源程序存放在考生文件夹下BLANK1.C中。不得增行或删行,也不得更改程序的结构!给定源程序:^include^include#includeintfun(char*s){intsumニ〇;while(*s){/**********fotind**********/if(isdigit(*s))sum+=*s-1.;/**********found**********/_2_;)/**********found**********/return_3_;}main(){chars[81];intn;printf(*

1026Enterastring:

1027

1028*);gets(s);n=fun(s);printf(*

1029Theresultis:%d

1030

1031",n);}解题答案:/**********第一空**********/if(isdigit(*s))sum+=・s-48;/**********第二空**********/s++;/**********第三空**********/returnsum;二、改错题:给定程序MODI1.C中函数fun的功能是:计算小于形参k的最大的10个能被!3或17整除的自然数之和。k的值由主函数传入,若k的值为500,则函数值为4622。请改正程序中的错误,使程序能输出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!给定源程序:#includeintfun(intk){intm=0,mc=0;while((k>=2)&&(meく10))(/************found************/if((k%13=0)11(k%17=0)){m=m+k;mc++;}k~;)returnm;/************found************/main0

1032(printf(飞d

1033”,fun(500));)解题答案:/************found************/if((k%13==0)II(k%17==0))/************found************/)三、程序题:编写函数fun,它的功能是:求小于形参n同时能被3与7整除的所有自然数之和的平方根,并作为函数值返回。例如若n为1000时,程序输出应为:s=153.909064。注意:部分源程序在文件PROG1.C文件中。请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。给定源程序:#include^includedoublefun(intn)mainO/・主函数・/{voidNONO();printf("s二%f

1034”,fun(1000));NONO();)voidNONO(){/・本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。*/FILE*fp,*wf;inti,n;doubles;fp=fopen("in.dat","r");wf=fopen(*out.dal","w");for(i=0:i<10;i++){fscanf(fp,"%d",&n);s=fun(n);fprintf(wf,"%f

1035",s);)fclose(fp);fclose(wf);}参考答案:doublefun(intn)(doublesum=0.0;inti;for(i=21;i<=n;i++)if((i%3==0)&&(i%7==0))sum+=i;returnsqrt(sum);}###########################第79套:一、填空题:给定程序中,函数fun的功能是:找出形参s所指字符串中出现频率最高的字母(不区分大小写),并统计出其出现的次数。例如,形参s所指的字符串为:abcAbsmaxless,程序执行后的输出结果为:letter'a':3timesletter's':3times请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。注意:源程序存放在考生文件夹下BLANK1.C中。不得增行或删行,也不得更改程序的结构!给定源程序:#include#include#includevoidfun(char*s){intk[26]={0},n,i,max=0;charch;while(*s){if(isalpha(*s)){/**********found**********/ch=tolower(_1_);n=ch-'a';/**********found**********/k[n]+=_2_;)S-H-;/**********found**********/if(max

1036printf(*

1037Aftercount:

1038");for(i=0;i<26;i++)if(k[i]==max)printf(*

1039letterヽ'%c\':%dtimes

1040*,i+,a',k[i]);)main(){chars[81];printf(*

1041Enterastring:

1042

1043*);gets(s);fun(s);)解题答案:/**********第一空**********/ch=tolower(*s);/**********第二空**********/k[n]+=1;/**********第三空**********/if(max#include/************found************/voidfun(intk){intn;doubles,w,p,q;n=1;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************/returnsImain(){printf(飞f

1044”,fun(10));}解题答案:/************found************/doublefun(intk)/************found************/returns;三、程序题:编写函数fun,它的功能是:计算并输出下列级数和:111S=++,,,+1x22x3n(n+l)例如,当n=10时,函数值为:0.909091。注意:部分源程序在文件PROGLC文件中。请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。给定源程序:#includedoublefun(intn)main()/・主函数・/{voidNONO();printf(*%f

1045*,fun(10));NONO();)voidNONO(){/・本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。*/FILE*fp,*wf;inti,n;doubles;fp=fopeniin.dat","r");wf=fopen(*out.dat","w");for(i=0;i<10;i++){fscanf(fp,"%d",&n);s=fun(n);fprintf(wf,*%f

1046*,s);)fclose(fp);fclose(wf);)参考答案:doublefun(intn)(doubles=0.0;inti;

1047for(i=1;i<=n;i++)s=s+1.0/(i♦(i+1));returns;)第80套:ー、填空题:给定程序中,函数fun的功能是:利用指针数组对形参ss所指字符串数组中的字符串按由长到短的顺序排序,并输出排序结果。ss所指字符串数组中共有N个字符串,且串长小于M。请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。注意:源程序存放在考生文件夹下BLANK1.C中。不得增行或删行,也不得更改程序的结构!给定源程序:ttincludeくstdio.h>#includettdefineN5紀efineM8voidfun(char(*ss)[M]){char*ps[N],*tp;inti,j,k;for(i=0;i

1048Thestringaftersortingbylength:

1049

1050*);for(i=0;i

1051Theoriginalstring

1052

1053");for(i=0;i

1054");fun(ch);}解题答案:/**********第一空**********/k=i;/**********第二空**********/if(strlen(ps[k])^include/************found************/fun(intn){doublesum,sO,si,s2,s;intk;sum=1.0;if(n<=2)sum=0.0;sO=0.0;si=0.0;s2=1.0;for(k=4;k<=n;k++){s=sO+si+s2;sum+=sqrt(s);sO=si;si=s2;s2=s;/************foun(]************/returnsum)main0{intn;printf("InputN=");scanf("%d",&n);printf("%f

1055",fun(n));)解题答案:/************found************/doublefun(intn)/************found************/returnsum;三、程序题:编写函数fiin,它的功能是计算下列级数和,和值由函数值返回。

1056例如,当n=10,x=0.3时,函数值为1.349859。注意:部分源程序在文件PROG1.C文件屮。请勿改动キ:函数main和其它函数中的任何内容,仅在函数fun的花括号屮填入你编写的若干语句。给定源程序:ffincludeftincludedoublefun(doublex,intn)main(){voidNONO();printf("%f

1057”,fun(0.3,10));NONO();]voidNONO(){/・本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。*/FILE*fp,*wf;inti,n;doubles,x;fp=fopen("in.dat","r");wf=fopen("out.dat","w");for(i=0;i<10;i++){fscanf(fp,"%lf,%d",&x,&n);s=fun(x,n);fprintf(wf»飞f

1058”,s);)fclose(fp);fclose(wf);}参考答案:#include#includelongjc(intn)(longs=1;inti;for(i=1;i<=n;i++)s*=i;returns;)doublefun(doublex,intn)(doubles=1.0,y=x;inti;for(i=1;i<=n;i++){s+=y/(double)jc(i);y*=x;}returns;}##############曲##################第81套:ー、填空题:给定程序中,函数fun的功能是:在形参ss所指字符串数组中查找与形参t所指字符串相同的串,找到后返回该串在字符串数组中的位置(下标值),未找到则返回ー1。ss所指字符串数组中共有N个内容不同的字符串,且串长小于M。请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。注意:源程序存放在考生文件夹下BLANK1.C中。不得增行或删行,也不得更改程序的结构!给定源程序:#includettinclude^defineN5#defineM8intfun(char(*ss)[M],char*t){inti;/**********found**********/for(i=0;i<_1_;i++)/**********found**********/if(strcmp(ss[i],t)==0)return2;return-1;)main(){charch[N][M]={"if","while","switch","int","for"},t[M];intn,i;printf("

1059Theoriginalstring

1060

1061");for(i=0;i

1062");printf("

1063Enterastringforsearch:");gets(t);n=fun(ch,t);/**********£ouncl**********/if(n==_3_)printf("

1064Don*tfound!

1065");elseprintf("

1066Thepositionis%d.

1067",n);)解题答案:/**********第一空**********/for(i=0;iワ、ヾ亠ルルユ・ルユ。・!if(strcmp(ss[i],t)==0)returni;/**********第三空**********/

1068if(n--l)printf("

1069Don,tfound!

1070");二、改错题:给定程序MODI1.C中函数fun的功能是:从整数1到55之间,选出能被3整除、且有一位上的数是5的那些数,并把这些数放在b所指的数组屮,这些数的个数作为函数值返回。规定,函数中al放个位数,a2放卜位数。请改正程序中的错误,使它能得出正确结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。给定源程序:^includeintfun(int*b){intk,al,a2,i=0;for(k=10;k<=55;k++){/************found************/a2=K/10;al=k-a2*10;if((k%3=0&&a2==5)|(k%3==0&&al==5)){b[i]=k;i++;)}/************found************/returnk;}main(){inta[100],k,m;m=fun(a);printf(*Theresultis:

1071");for(k=。;k

1072");}解题答案:/************found************/a2=k/10;/************found************/returni;三、程序题:假定输入的字符串中只包含字母和・号。请编写函数fun,它的功能是:将字符串尾部的・号全部删除,前面和中间的・号不删除。例如,字符串中的内容为:****A*BC*DEF*G*******,删除后,字符串中的内容应当是:****A*BC*DEF*G。在编写函数时,不得使用C语言提供的字符串函数。注意:部分源程序在文件PROG1.C文件中。请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。给定源程序:#includevoidfun(char*a)main(){chars[81];voidNONO();printf(*Enterastring:

1073*);gets(s);fun(s);printf(*Thestringafterdeleted:

1074*);puts(s);NONO();)voidNONO(){/・本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。*/FILE*in,*out;inti;chars[81];in=fopen(in.dat,r);out=fopenCout.dat,w);for(i=0:i<10;i++)(fscanf(in,"%s”,s);fun(s);fprintf(out,"%s

1075",s);}fclose(in);fclose(out);)参考答案:voidfun(char*a)(char*p=a;while(*p)p+4-;p-;while(*p=='*')p-;P++;*p=0;)8#阴触####阴触####曲######和附第82套:ー、壊空题:给定程序中,函数fiin的功能是:在形参ss所指字符串数组中,删除所有串长超过k的字符串,函数返回所剩字符串的个数。ss所指字符串数组中共有N个字符串,且串长小于M。

1076请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。注意:源程序存放在考生文件夹下BLANK1.C中。不得增行或删行,也不得更改程序的结构!给定源程序:ttinclude#includeftdefineN5ttdefineM10intfun(char(*ss)[M],intk)(inti,j=0,1en;/**********found**********/for(i=0;i<_1_;i++){len=strlen(ss[i]);/**********found**********/if(len<=_2_)/**********found**********/strcpy(ss[j++],_3_);)returnj;}main(){charx[N][M]:{"Beijing","Shanghai","Tianjing","Nanjing","Wuhan"};inti,f;printf("

1077Theoriginalstring

1078

1079");for(i=0;i

1080");f=fun(x,7);printf("Thestringwhichlengthislessthanorequalto7:

1081");for(i=0;i

1082");}解题答案:j**********—"々イ水ホホ・ホ・・比ホホ/for(i=0;i#includeくstring.h>voidfun(char*p,char*q,char*c)(/************foiirid************/intk=1;/************found************/while(*p!=*q){if(*p<*q)c[k]=*q;elsec[k]=*p;if(*p)p++;if(*q)q++;k++;))main(){chara[10]="aBCDeFgH",b[10]="ABcd",c[80]={‘、〇'};fun(a,b,c);printf("Thestringa:");puts(a);printf("Thestringb:");puts(b);printf("Theresult:");puts(c);)解题答案:/************found************/intk二。;/************foun(j************/while(*p||*q)三、程序题:假定输入的字符串中只包含字母和・号。请编写函数ftm,它的功能是:除了字符串前导的・号之外,将串中其它序号全部删除。在编写函数时,不得使用C语言提供的字符串函数。函数ftin中给出的语句仅供参考。例如,字符串中的内容为:****A*BC*DEF*G*******,删除后,字符串中的内容应当是:****ABCDEFG。注意:部分源程序在文件PROG1.C文件中。请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。给定源程序:/^include

1083voidfun(char*a)main(){chars[81];voidNONO();printf("Enterastring:

1084");gets(s);fun(s);printf(*Thestringafterdeleted:

1085");puts(s);NONO();)voidNONO(){/・木函数用了打开文件,输入数据,调用函数,输出数据,关闭文件。*/FILE*in,*out;inti;chars[81];in=fopen(in.dat,r);out=fopen(*out.dat*,w);for(i=0;i<10;i++){fscanf(in,,s);fun(s);fprintf(out,"%s

1086",s);)fclose(in);fclose(out);参考答案:voidfun(char*a)(/*以下代码仅供参考*/inti=0,k;while(a[i]='*')i++;k=i;whileCaliJJ^O')/・以ド程序段实现非・字符前移・/(if(a|il!=***)a[k++|=a[il;i++;}a[k]=MT;}###############################第83套:填空题:给定程序中,函数fun的功能是:在形参ss所指字符串数组中,査找含有形参substr所指子串的所有字符串并输出,若没找到则输出相应信息。ss所指字符串数组中共有N个字符串,且串长小于Mo程序中库函数strstr(sl,s2)的功能是在s!串中查找s2子串,若没有,函数值为0,若有,为非。.请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。注意:源程序存放在考生文件夹下BLANK1.C中。不得增行或删行,也不得更改程序的结构!给定源程序:^includettinclude^defineN5#defineM15voidfun(char(*ss)[M],char*substr)(inti,find=0;/**********found**********/for(i=0;i<_1__;i++)/**********f()und**********/if(strstr(ss[i],2)!=NULL){find=1;puts(ss[i]);printf(*

1087*);}/**********found**********/if(find——3_)printf("

1088Don'tfound!

1089*);)main(){charx[N][M]={*BASIC*,*Clangwage*,*Java*,*QBASIC*,*Access*},str[M];inti;printf("

1090Theoriginalstring

1091

1092*);for(i=0;i

1093");printf(*

1094Enterastringforsearch:*);gets(str);fun(x,str);)解题答案:/**********第一空**********/for(i=0;i

1095Don*tfound!

1096*);二、改错题:给定程序MODll.C中函数fun的功能是:求三个数的最小公倍数。例如,给主函数中的变量xl、x2、x3分别输入15112,则输出结果应当是:330〇清改正程序中的错误,使它能得出正确结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。给定源程序:

1097^includeくstdio.h>/************fotind************/fun(intx,y,z){intj,t,n,m;j=1;t=j%x;m=j%y;n=j%z;while(t!=O|im!=01n!=0){j=j+1;t=j%x;m=j%y;n=j%z;)/************foiind************/returni;)main(){intxl,x2,x3,j;printf(*Inputxlx2x3:");scanf(*%d%d%d*»&xl,&x2,&x3);printf(*xl=%d,x2=%d,x3=%d

1098*,xl,x2,x3);j=fun(xl,x2,x3);printf(*Theminimalcommonmultipleis:%d

1099*,j);}解题答案:/************fQUn(j************/intfun(intx,inty,intz)/************foun(j************/returnj;三、程序题:假定输入的字符串中只包含字母和・号。请编写函数fun,它的功能是:只删除字符串前导和尾部的・号,串中字母之间的・号都不删除。形参n给出了字符串的长度,形参h给出了字符串中前导・号的个数,形参e给出了字符申中最后・号的个数。在编写函数时,不得使用C语言提供的字符串函数。例如,字符串中的内容为:****a*bc*def*g*******,删除后,字符串中的内容应当是:A*BC*DEF*G。注意:部分源程序在文件PROG1.C文件中。请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。给定源程序:^includevoidfun(char*a,intn,inth,inte)mainO{chars[81],*t,*f;intm二。,tn二。,fn=0;voidNONO();printf(*Enterastring:

1100*);gets(s);t=f=s;while(*t){t++;m++;}t—;while(*t='*'){t-;tn++;)while(*f=**'){f++;fn++;}fun(s,m,fn,tn);printf(*Thestringafterdeleted:

1101*);puts(s);NONO();)voidNONO(){/・本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。*/FILE*in,*out;inti;chars[81],*t,*f;intm二。,tn二。,fn二。;in=Iopen(in.dat,r);out=fopen("out.dat,w);for(i=0;i<10:i++){fscanf(in,"%s”,s);t=f=s;m二。;tn二。;fn二。;while(*t){t++;m++;}t一;while(*t==,**){tー;tn++;}while(*f==*,){f++;fn++;}fun(s,m,fn,tn);fprintf(out,飞s

1102”,s);}fclose(in);fclose(out);)参考答案:voidfun(char*a,intn,inlhjnte)(char*p=a;intj=OJen=O;while(ヤ)(p++;len++;)while(j

1103j++;)aO]=0;)###############################第84套ー、填空题:给定程序中,函数fun的功能是:在形参ss所指字符串数组中,将所有串长超过k的字符串中右边的字符删除,只保留左边的k个字符。ss所指字符串数组中共有N个字符串,且串长小于M。请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。注意:源程序存放在考生文件夹下BLANK1.C中。不得增行或删行,也不得更改程序的结构!给定源程序:#include#includeMefineN5ftdefineM10/**********found**********/voidfun(char(*ss)_1,intk){inti=0;/**********f'ound**********/while(i<_2_){/**********found**********/ss[i][k]=_3_;i++;})main(){charx[N][M]={"Create","Modify","Sort","skip","Delete"};inti;printf("

1104Theoriginalstring

1105

1106");for(i=0;i

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

1108Thestringafterdeleted:

1109

1110");for(i=0;i

1111");}解题答案:本题是根据给定的字符串数组中删除串长大于某个值的右边字符串。/**********第・空**********/voidfun(char(*ss)[M],intk)/**********第二空**********/while(i^includedoublefun(doubleeps){doubles,t;intn=l;s=0.0;/************found************/t=0;while(t>eps){s+=t;t=t*n/(2*n+l);n++;)/************found************/return(s);)main(){doublex;printf("

1112Pleaseenteraprecision:");scanf("%lf",&x);printf("

1113eps=%lf,Pi=%lf

1114

1115",x,fun(x));)解题答案:/************found************/t=l;/************found************/return(2*s);三、程序题:假定输入的字符串中只包含字母和・号。请编写函数fun,它的功能是:使字符串的前导・号不得多于n个;

1116若多于n个,则删除多余的*号;若少于或等于n个,则什么也不做,字符串中间和尾部的・号不删除。函数fiin中给出的语句仅供参考。例如,字符串中的内容为:*******a*bc*def*g****,若n的值为4,删除后,字符串中的内容应当是:****A*BC*DEF*G****:若n的值为8,则字符串中的内容仍为:*******a*BC*DEF*G****。n的值在主函数中输入。在编写函数时,不得使用C语言提供的字符串函数。注意:部分源程序在文件PROGLC文件中。请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。给定源程序:ttincludevoidfun(char*a,intn)mainO{chars[81];intn;voidNONO0;printf("Enterastring:

1117");gets(s);printf("Entern:");scanf("%d",&n);fun(s,n);printf("Thestringafterdeleted:

1118");puts(s);NONOO;}voidNONO(){/・本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。*/FILE*in,*out;inti,n;chars[81];in=topen\m.dat,r);out=fopen(*out.dat*,w);for(i=0;i<10;i++){fscanf(in,"%s”,s);fscanf(in,"%d",&n);fun(s,n);fprintf(out,"%s

1119",s);)fclose(in);fclose(out);)参考答案:voidfbn(char*a,intn)/*以下代码仅供参考*/inti=O,j,k=O;while(a[k]==,*')k++;/*k为统计・字符个数・/if(k>n)(i=n;j=k;/・以下完成将下标为k至串尾的字符前移k-n个位置・/for(;a[j]!=0;j++)a[i++l=aU];a[i]=0;))##阴######曲期####阴######曲####第85套:一、填空题:程序通过定义学生结构体变量,存储了学生的学号、姓名和3门课的成绩。函数fun的功能是将形参a所指结构体变量中的数据赋给函数中的结构体变量b,并修改b中的学号和姓名,最后输出修改后的数据。例如:a所指变量中的学号、姓名、和三门课的成绩依次是:10001、"ZhangSan"、95、80、88,则修改后输出b中的数据应为:10002、"LiSi"、95、80、880请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。注意:源程序存放在考生文件夹下BLANK1.C中。不得增行或删行,也不得更改程序的结构!给定源程序:ttincludeくstdio.h>^includestructstudent{longsno;charname[10];floatscore[3];);voidfun(structstudenta){structstudentb;inti;/***sic******fotind**********/b=_1_;b.sno=10002;/**********fQund**********/strcpy(_2_,"LiSi");printf(*

1120Thedataaftermodified:

1121");printf(*

1122No:%ldName:%s

1123Scores:b.sno,b.name);/**********found**********/for(i=。;i<3;i++)printf(*%6.2f二b._3_);printf}main(){structstudents={10001,*ZhangSan*,95,80,88};

1124inti;printf(*

1125

1126Theoriginaldata八n");printf(*

1127No:%ldName:%s

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

1129");fun(s);}解题答案:/**********—^^**********/b=a;/**********第二空**********/strcpy(b.name,'TiSi");/**********^^ーセ了**********/for(i=0;i<3;i++)printf(*%6.2f",二、改错题:给定程序MODILC中函数fun的功能是:从s所指字符串中删除所有小写字母Co请改正程序中的错误,使它能计算出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!给定源程序:#includeくstdio.h〉voidfun(char*s){inti,j;for(i=j=0;s[i]!=\0*;i++)if(s[i]!二’ゼ)/************found************/s[j]=s[i];/************found************/s[i]=‘ゝ0’;)main(){chars[80];printf("Enterastring:");gets(s);printf("Theoriginalstring:");puts(s);fun(s);printf(*Thestringafterdeleted:");puts(s);printf("

1130

1131");)解题答案:/************found************/s[j++]=s[i];/************found************/s[j]=>\0';三、程序题:假定输入的字符串中只包含字母和・号。请编写函数fun,它的功能是:将字符串中的前导・号全部移到字符串的尾部。函数fun中给出的语句仅供参考。例如,字符串中的内容为:*******A*BC*DEF*G****,移动后,字符串中的内容应当是:A*BC*DEF*G***********O在编写函数时,不得使用C语言提供的字符串函数。注意:部分源程序在文件PROGI.C文件中。请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。给定源程序:^includevoidfun(char*a)()main(){chars[81];intn=0;voidNONO();printf("Enterastring:

1132");gets(s);fun(s);printf("Thestringaftermoveing:

1133");puts(s);NONOO;)voidNONO(){/・本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。*/FILE*in,*out;inti;chars[81];in=fopen(in.dat,r);out=fopen("out.dat","w");for(i=0;i<10;i++){fscanf(in,'%s,s);fun(s);fprintf(out,"%s

1134",s);fclose(in);fclose(out);参考答案:voidfiin(char*a){/*以下代码仅供参考*/char*p,*q;

1135intn=0;p=a;while(*p='*')/・统计串头中个数n*/{n++;p++;}q=a;/・向前复制字符串,请填写相应的语句完成其功能*/while(*p){*q=*p;p++;q++;}for(;n>0;n-)/・在串尾补n个'*'*/*q++=*';*q='\0';}###############################第86套:ー、填空题:程序通过定义学生结构体变量,存储了学生的学号、姓名和3门课的成绩。函数fun的功能是对形参b所指结构体变量中的数据进行修改,最后在主:函数中输出修改后的数据。例如:b所指变量t中的学号、姓名、和三门课的成绩依次是:10002、"ZhangQi"、93、85、87,修改后输岀t中的数据应为:10004、"LiJie93、85、87。请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。注意:源程序存放在考生文件夹下BLANK1.C中。不得增行或删行,也不得更改程序的结构!给定源程序:#include^includestructstudent{longsno;charname[10];floatscore[3];};voidfun(structstudent*b)(/**********found**********/b_l_=10004;/**********found**********/strcpy(b_2"Lijie");)mainO{structstudentt:{10002,“ZhangQi”,93,85,87};inti;prinlf('

1136

1137Theoriginaldata:

1138");printf(*

1139No:%ldName:%s

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

1141");/**********found**********/fun(_3_);printf("

1142Thedataaftermodified:

1143");printf("

1144No:%ldName:%s

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

1146");)解题答案:/**********第一»空**********/b->sno=10004;/**********第二空**********/strcpy(b->name,"LiJie");/**********第三空**********/fun(&t);二、改错题:给定程序MODI1.C中函数fun的功能是:应用递归算法求形参a的平方根。求平方根的迭代公式如下:1axl=—(x0+一)2x0例如,a为2时,平方根值为:1.414214。请改正程序中的错误,使它能得出正确结果。注意:不要改动main函数,不得増行或删行,也不得更改程序的结构。给定源程序:#include#include/**********found**********/doublefun(doublea,dounlexO){doublexl,y;xl=(xO+a/x0)/2.0;/**********found**********/if(fabs(xl-xo)>0.00001)y=fun(a,xl);elsey=xl;returny;}

1147main(){doublex;printf(*Enterx:つ;scanf&x);printf(*Thesquarerootof%lfis%lf

1148*,x,fun(x,1.0));}解题答案:/**********found**********/doublefun(doublea,doublexO)/**********found**********/if(fabs(xl-xO)>0.00001)三、程序题:学生的记录由学号和成绩组成,N名学生的数据已在主函数中放入结构体数组s中,请编写函数ftm,它的功能是:把高于等于平均分的学生数据放在b所指的数组中,高于等于平均分的学生人数通过形参n传回,平均分通过函数值返回。注意:部分源程序在文件PROG1.C文件中。请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。给定源程序:^includeくstdio.h>ftdefineN12typedefstruct{charnum[10];doubles;}STREC;doublefun(STREC*a,STREC*b,int*n)main0{STRECs[N]:{{"GA05",85},{"GA03",76},{*GA02*,69},rGA04\85),{"GA01”,91},{"GA07”,72},{"GA08",64},{"GA06”,87),{"GA09",60},{"GA11",79},{"GA12",73},{"GA10",90});STRECh[N],t;FILE*out;inti,j,n;doubleave;ave=fun(s,h,&n);printf("The%dstudentdatawhichishigherthan%7.3f:

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

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

1151");out=fopen("out.dat","w");fprintf(out,"%d

1152%7.3f

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

1154",h[i].s);fclose(out);参考答案:doublefun(STREC*a,STREC*b,int*n)(doublet=0;inti;*n=0;for(i=0;it)b[(*n)++]=a[i];returnt;)##師######師牌####曲期####報第87套:一、填空题:程序通过定义学生结构体变量,存储了学生的学号、姓名和3门课的成绩。函数fun的功能是将形参a中的数据进行修改,把修改后的数据作为函数值返回キ:函数进行输出O例如:传给形参a的数据中,学号、姓名、和三门课的成绩依次是:10001、"ZhangSan",95、80、88,修改后的数据应为:10002、"LiSi"、96、81、89。请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。注意:源程序存放在考生文件夹下BLANK1.C中。不得增行或删行,也不得更改程序的结构!给定源程序:^include#includestructstudent{longsno;charname[10];floatscore[3];};/**********found**********/_1_fun(structstudenta){inti;a.sno=10002;/**********found**********/strcpy(_2_,"LiSi");

1155/**********found**********/for(i=0;i<3;i++)_3_+=1;returna;}main(){structstudents={10001,*ZhangSan*,95,80,88},t;inti;printf(*

1156

1157Theoriginaldata八n");printf(*

1158No:%ldName:%s

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

1160");t=fun(s);printf("

1161Thedataaftermodified:

1162");printf("

1163No:%ldName:%s

1164Scores:",t.sno,t.name);for(i=0;i<3;i++)printf("%6.2f",t.scoreti]);printf("

1165");)解题答案:/**********第—空**********/structstudentfun(structstudenta)/**********第二空**********/strcpy(a.name,"LiSi");/**********第三空**********/for(i=0;i<3;i++)a.score[i]+=1;二、改错题:假定整数数列中的数不重复,并存放在数组中。给定程序MODI1.C中函数fun的功能是:删除数列中值为x的元素。n中存放的是数列中元素的个数。请改正程序中的错误,使它能得出正确结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。给定源程序:#include#defineN20intfun(int*a,intn,intx){intp二〇,i;a[n]=x;while(x!=a[p])p=p+l;/**********found**********/if(P==n)return-1;else(for(i=p;i

1166");for(i=0;i

1167lnputx(todelete):");scanf("%d",&x);printf("Delete:%d

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

1169

1170");else{printf("Thedataafterdeleted:

1171");for(i=0;i

1172

1173*);))解题答案:/**********found**********/if(pニニn)return-1;/**********found**********/a[i]=a[i+l];三、程序题:学生的记录由学号和成绩组成,N名学生的数据已在主函数中放入结构体数组s中,请编写函数fun,它的功能是:把分数最低的学生数据放在b所指的数组中,注意:分数最低的学生可能不止ー个,函数返回分数最低的学生的人数。注意:部分源程序在文件PROG1.C文件中。请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。给定源程序:^include#defineN16typedefstruct{charnum[10];ints;}STREC;intfun(STREC*a,STREC*b)main(){STRECs[N]={{*GA05",85},{"GA03”,76},{*GA02*,69}»{*GA04*,85},{*GA01*,91},{*GA07*,72),fGA08\64},{*GA06*,87},{"GA015”,85},{"GA013”,91),GGA012”,64},{"GA014”,91},{"GA011”,91},{"GA017”,64},{"GA018”,64},{"GA016”,72));STRECh[N];inti,n;FILE*out;

1174n二fun(s,h);printf(*The%dlowestscore:

1175",n);for(i二。;iくn;i++)printf(*%s%4d

1176”,h[i].num,h[i].s);printf('

1177");out=fopen("out.dat","w");fprintf(out,"%d

1178”,n);for(i=0;i

1179*»h[i].s);fclose(out);参考答案:intfiin(STREC*a,STREC*b)(intij=0,min=a[0].s;for(i=0;ia[i].s){j=0;b[j++]=a|i];min=a|i].s;)elseif(min==a|i|.s)b[j++]=a[i];)returnj;}曲曲就####阴秒####曲即####曲»###第88套:ー、填空题:程序通过定义学生结构体变量,存储了学生的学号、姓名和3门课的成绩。函数fun的功能是将形参a所指结构体变量s中的数据进行修改,并把a中地址作为函数值返回主函数,在主函数中输出修改后的数据O例如:a所指变量s中的学号、姓名、和三门课的成绩依次是:10001、"ZhangSan\95、80、88,修改后输出t中的数据应为:10002、"LiSi"、96、/・宏为世纪教育www.greatc.cn*/81、89.请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果.注意:源程序存放在考生文件夹下BLANK1.C中。不得增行或删行,也不得更改程序的结构!给定源程序:^includeくstdio.h>ttincludestructstudent{longsno;charname[10];floatscore[3];);/**********found**********/1fun(structstudent*a){inti;a->sno=10002;strcpy(a->name,"LiSi");/**********found**********/for(i=0;i<3;i++)_2_+=1;/**********found**********/return_3_;}main(){structstudents={10001,*ZhangSan*,95,80,88},*t;inti;printf(*

1180

1181Theoriginaldata:

1182);printf(*

1183No:%ldName:%s

1184Scores:*,s.sno,s.name);for(i=0;i<3;i++)printf(*%6.2f*,s.score[i]);printf(*

1185*);t=fun(&s);printf(*

1186Thedataaftermodified:

1187");printf(*

1188No:%ldName:%s

1189Scores:*,t->sno,t->name);for(i=0;i<3;i++)printf(*%6.2f*,t->score[i]);printf("

1190");}解题答案:/**********第一空*********/structstudent*fun(structstudent*a)/**********第二空**********/for(i=0;i<3;i++)a->score[i]+=1;/**********第三空**********/returna;******************************************二、改错题:给定程序MODII.C中函数fun的功能是:从N个字符串中找出最长的那个串,并将其地址作为函数值返回。各字符串在主函数中输入,并放入•个字符串数组中。请改正程序中的错误,使它能得出正确结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。给定源程序:#include#includeくstring.h>^defineN5

1191#defineM81/**********found**********/fun(char(*sq)[M]){inti;char*sp;sp=sq[0];for(i二〇;iくN;i++)if(strlen(sp)

1192*,N);for(i=0;i

1193TheNstring:

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

1195Thelongeststring:

1196");puts(longest);)解题答案:/**********found**********/char*fun(char(*sq)[M])/**********found**********/returnsp;三、程序题:函数fun的功能是:将a、b中的两个两位正整数合并形成一个新的整数放在c中。合并的方式是:将a中的十位和个位数依次放在变量c的百位和个位上,b中的十位和个位数依次放在变量c的十位和千位上。例如,当a=45,b=12o调用该函数后,¢=2415〇注意:部分源程序存在文件PROG1.C中。数据文件IN.DAT中的数据不得修改。请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。给定源程序:ttincludeくstdio.h>voidfun(inta,intb,long*c)main(){inta,b;longc;voidNONO();printf("Inputa,b:");scanf("%d%d”,&a,&b);fun(a,b,&c);printf(*Theresultis:%ld

1197,c);NONO();

1198voidNONO(){/・本函数用丁一打开文件,输入数据,调用函数,输出数据,关闭文件。*/FILE*rf,*wf;inti,a,b;longc;rf=fopentin.dat","r");wf=fopen(*out.dat*,"w");for(i=0;i<10;i++){fscanf(rf,*%d,%d*.&a,&b);fun(a,b,&c);fprintf(wf,*a=%d,b=%d,c=%ld

1199*,a,b,c);)fclose(rf);fclose(wf);}参考答案:voidfun(inta,intb,long*c)(*c=(b%10)*10()0+(a/10)*100+(b/l0)*10+a%10;}################################第89套:ー、填空题:程序通过定义学生结构体数组,存储了若干名学生的学号、姓名和3门课的成绩。函数fun的功能是将存放学生数据的结构体数组,按照姓名的字典序(从小到大)排序。请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。注意:源程序存放在考生文件夹下BLANK1.C中。不得增行或删行,也不得更改程序的结构!给定源程序:#includeくstdio.h>#includestructstudent{longsno;charname[10];floatscore[3];);voidfun(structstudenta[],intn)_1_t;inti,j;/**********found**********/for(i=0;i<_2_;i++)for(j=i+l:j0){t=a[i];a[i]=a[j];a[j]=t;})main(){structstudents[4]={{10001,*ZhangSan*,95,80,88},{10002,"LiSi”,85,70,78},{10003,"CaoKai”,75,60,88},“0004,“FangFang”,90,82,87)};inti,j;printf(*

1200

1201Theoriginaldata八n

1202");for(j=0;j<4;j++){printf("

1203No:%ldName:%-8sScores:*,s[j].sno,s[j].name);for(i=0;i<3;i++)printfC%6.2fらs[j].score[i]);printf('

1204");}fun(s,4);printf("

1205

1206Thedataaftersorting:

1207

1208");for(j=0;j<4:j++){printf("

1209No:%ldName:%-8sScores:s[j].sno,s[j].name);for(i=0;i<3;i++)printf("加•2f",s[j].score[i]);printf("

1210");})解题答案:/**********第一•空**********/structstudentt;/**********第二空**********/for(i=0;i0)/**********found**********/二、改错题:给定程序MODI1.C中函数fun的功能是:在P所指字符串中找出ASCI!码值最大的字符,将其放在第一个位置上;并将该字符前的原字符向后顺序移动。例如,调用fun函数之前给字符串输入:ABCDeFGH,调用后字符串中的内容为:eABCDFGHo请改正程序中的错误,使它能得出正确结果。注意:不要改动main函数,不得增行或删行,也不得更改

1211程序的结构。给定源程序:^includevoidfun(char*p){charmax,*q;inti=0;max=p[i];while(p[i]!=0){if(maxp){*q=*(q-l);q-;}p[0]二!nax;}mainO{charstr[80];printf(*Enterastring:つ;gets(str);printf(*

1212Theoriginalstring:*);puts(str);fun(str);printf(*

1213Thestringaftermoving:");puts(str);printf("

1214

1215");}解题答案:/米*********found**********/q=p+i;/**********found**********/while(q>p)三、程序题:学生的记录由学号和成绩组成,N名学生的数据已在主函数屮放入结构体数组s中,请编写函数fun,它的功能是:把指定分数范围内的学生数据放在b所指的数组中,分数范围内的学生人数由函数值返回。例如,输入的分数是6069,则应当把分数在60到69的学生数据进行输出,包含60分和69分的学生数据。主函数中将把60放在low中,把69放在heigh中。注意:部分源程序在文件PROGI.C文件中。请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。给定源程序:^includettdefineN16typedefstruct{charnum[10];ints;}STREC;intfun(STREC*a,STREC*b,int1,inth)mainO{STRECs[N]:{{"GA005”,85},{"GA003”,76},{*GA002*,69},{*GA004*,85},(*GA001*,96},KGA007*,72},{“GA008”,64},{"GA006”,87},{“GA015”,85},{"GA013”,94),rGA012*,64},{*GA014*»91},{*GA011*,90},{*GA017*,64},{*GA018*,64},{*GA016*,72}};STRECh[N],tt;FILE*out;inti,j,n,low,heigh,t;printf(*Enter2integernumberlow&heigh:");scanf(*%d%d*,&low,&heigh);if(heighくlow){t=heigh;heigh=Iow;low=t;}n=fun(s,h,low,heigh);printf(*Thestudent,sdatabetween%d—%d:

1216*,low,heigh);for(i=0;i

1217”,h[i].num,h[i].s);printf(>

1218*);out=fopen("out.dat,w);n=fun(s,h,80,98);fprintf(out,*%d

1219*,n);for(i=0;ih[j].s){tt=h[i];h[i]=h[j];h[j]=tt;}for(i=0;i

1220*,h[i].s);fprintf(out,"

1221");fclose(out);}参考答案:intfun(STREC*a,STREC*bjnt1,inth)(inti,j=0;for(i=0;i

1222if(a[i].s>=1&&a[i].s<=h)b[j++]=a[i];returnj;}的#############################第90套:ー、填空题:程序通过定义学生结构体变量,存储了学生的学号、姓名和3门课的成绩。所有学生数据均以二进制方式输出到student.dat文件中。函数fun的功能是从指定文件中找岀指定学号的学生数据,读入此学生数据,对该生的分数进行修改,使每门课的分数加3分,修改后重写文件中该学生的数据,即用该学生的新数据覆盖原数据,其它学生数据不变;若找不到,则什么都不做。请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。注意:源程序存放在考生文件夹下BLANK1.C中。不得增行或删行,也不得更改程序的结构!给定源程序:^include#defineN5typedefstructstudent{longsno;charname[10];floatscore[3];}STU;voidfun(char*fi1ename,longsno){FILE*fp;STUn;inti;fp=fopen(filename,*rb+');/**********found**********/while(!feof(_1_)){fread(&n,sizeof(STU),1,fp);/**********found**********/if(n.sno_2_sno)break;if(!feof(fp)){for(i=。;i<3;i++)n.score[i]+=3;/**********found**********/fseek(_3_,-(long)sizeof(STU),SEEK_CUR);fwrite(&n,sizeof(STU),1,fp);}fclose(fp);)main(){STUt[N]={{10001,*MaChao*,91,92,77},{10002,"CaoKai”,75,60,88},{10003,"LiSi”,85,70,78},{10004,"FangFang”,90,82,87},{10005,"ZhangSan”,95,80,88)},ss[N];inti,j;FILE*fp;fp=fopen(*student,dat*,"wb");fwrite(t,sizeof(STU),N,fp);fclose(fp);printf("

1223Theoriginaldata:

1224");fp=fopenCstudent.dat","rb");fread(ss,sizeof(STU),N,fp);fclose(fp);for(j=0;j

1225No:%ldName:%-8sScores:*,ss[j].sno,ss[j].name);for(i=0;i<3;i++)printf(*%6.2f*,ss[j].score[i]);printf("

1226");)fun(*student,dat”,10003);fp=fopenCstudent.dat,"rb");fread(ss,sizeof(STU),N,fp);fclose(fp);printf("

1227Thedataaftermodifing:

1228");for(j=0;j

1229No:%ldName:%-8sScores:",ss[j].sno,ss[j].name);for(i=0;i<3;i++)printf("%6.2f”,ss[j].score[i]);printf("

1230");))解题答案:/**********第—空**********/while(!feof(fp))/**********第二空**********/if(n.sno==sno)break;/**********第三空*********/fseek(fp,-(long)sizeof(STU),SEEK_CUR);二、改错题:给定程序MODILC中函数fun的功能是:利用插入排序法对字符串中的字符按从小到大的顺序进行排序。插入法的基本算法是:先对字符串中的头两个元素进行排序。然后把第三个字符插入到前两个字符中,插入后前三个字符依然有序;再把第四个字符插入到前三个字符中,……

1231〇待排序的字符串已在主函数中赋予。请改正程序中的错误,使它能得出正确结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。给定源程序:^include#include^defineN80voidinsert(char*aa){inti,j,n;charch;/**********found**********/n=strlen[aa];for(i=l;i=0)&&(ch

1232*,a);insert(a);printf(*Thestringaftersorting:%s

1233

1234,a);)解题答案:/**********found**********/n=strlen(aa);/**********found**********/ch=aa[i];三、程序题:N名学生的成绩已在主函数中放入ー个带头节点的链表结构中,h指向链表的头节点。请编写函数fun,它的功能是:找出学生的最高分,由函数值返回。注意:部分源程序在文件PROGI.C文件中。请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。给定源程序:#include^include^defineN8structslist{doubles;structslist*next;};typedefstructslistSTREC;doublefun(STREC*h)STREC*creat(double*s){STREC*h,*p,*q;inti=0;h=p=(STREC*)malloc(sizeof(STREC));p->s=0;while(is=s[i];i++;pー)next=q;p=q;)p->nextニ〇;returnh;)outlist(STREC*h){STREC*p;p=h->next;printf("head");do{printf("->%2.Of",p->s);p=p->next;}while(p!=0);printf("

1235

1236");)main(){doubles[N]={85,76,69,85,91,72,64,87},max;voidNONO();STREC*h;h=creat(s);outlist(h);max=fun(h);printf("max=%6.lf

1237",max);NONO();}voidNONO0{/・本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。*/FILE*in,*out;inti,j;doubles[N],max;STREC*h;in=fopenvin.dat,r);

1238out=fopen("out.dat","w");ford=0;i<10;i++){for(j=0;j

1239",max);)fclose(in);fclose(out);}参考答案:doublefun(STREC*h)(doublemax=h->s;STREC*p;p=h->next;while(p)(if(p->s>max)max=p->s;p=p->next;}returnmax;)STREC*creat(double*s){STREC*h,*p,*q;inti=0;h=p=(STREC*)malloc(sizeof(STREC));p->s=0;while(is=s[i];i++;p->next=q;p=q;}p->next=0;returnh;)outlisKSTREC*h){STREC*p;p=h->next;printf("head");do{printf(,,->%2.Of\p->s);p=p->next;Jwhile(p!=0);printf("

1240

1241M);)第91套:ー、填空题:给定程序中,函数fun的功能是用函数指针指向要调用的函数,并进行调用。规定在_2_处使f指向函数f1,在_3_处使f指向函数f2。当调用!E确时,程序输出:x1=5.000000,x2=3.OOOOOO,xl*xl+xl*x2=40.000000请在程序的ド划线处填入正确的内容并把下划线删除,使程序得出正确的结果。注意:源程序存放在考生文件夹下的BLANK1.C中。不得增行或删行,也不得更改程序的结构!给定源程序:^includedoublefl(doublex){returnx*x;}doub1ef2(doublex,doubley){returnx*y;}doublefun(doublea,doubleb){/**********found**********/_1_(*f)0:doublerl,r2;/**********found**********/f=_2_;/*pointfountionfl*/rl=f(a);/**********found**********/f=_3_;/*pointfountionf2*/r2=(*f)(a,b);returnrl+r2;)main(){doublexl=5,x2=3,r;r=fun(xl,x2);printf(*

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

1243”,xl,x2,r);}解题答案:/**********第一空**********/double(*f)();/**********第二空**********/f=fl;/*pointfountionfl*//**********第三空**********/f=f2;/*pointfountionf2*/二、改错题:给定程序MODH.C是建立一个带头结点的单

1244向链表,并用随机函数为各结点赋值。函数fun的功能是将单向链表结点(不包括头结点)数据域为偶数的值累加起来,并且作为函数值返回。请改正函数fun中指定部位的错误,使它能得出正确的结果。注意:不要改动main函数,不得増行或删行,也不得更改程序的结构!给定源程序:^includettincludetypedefstructaa{intdata;structaa*next;}NODE;intfun(NODE*h){intsum=0;NODE*p;/***********found**********/P=h;while(p){if(p->data%2==0)sum+=p->data;/***********found**********/p=h->next;}returnsum;)NODE*creat1ink(intn){NODE*h,*p,*s;inti;h=p=(NODE*)malloc(sizeof(NODE));for(i=l;i<=n;i++){s=(NODE*)malloc(sizeof(NODE));s->data=rand()%16;s->next=p->next;p->next=s;p=p-〉next;)pー〉next=NULL;returnh;)outlink(NODE*h,FILE*pf){NODE*p;p=h->next;fprintf(pf,*

1245

1246THELIST:

1247

1248HEADつ;while(p){fprintf(pf,"ー〉%d",p->data);p=p-〉next;}fprintf(pf,"

1249");)outresult(ints,FILE*pf){fprintf(pf,"

1250Thesumofevennumbers:%d

1251",s);}mainO{NODE*head;inteven;head=creatlink(12);head->data=9000;out1ink(head,stdout);even=fun(head);printf("

1252Theresult;

1253");outresult(even,stdout);)解题答案:/***********found**********/p=h->next;/***********found**********/p=p->next;三、程序题:请编写函数fun,函数的功能是:判断字符串是否为回文?若是,函数返回1,主:函数中输出:YES,否则返回0,主函数屮输出N0。回文是指顺读和倒读都一样的字符串。例如,字符串LEVEL是回文,而字符串123312就不是回文。注意:部分源程序在文件PROG1.C中。请勿改动主:函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。

1254给定源程序:#include^include^defineN80intfun(char*str)elseprintf(MNO

1255");NONO();)##附即####附######阴######附####main(){chars[N];voidNONO();printf(*Enterastring:つ;gets(s);printf("ヽn

1256");puts(s);if(fun(s))printf("YES

1257");elseprintf("NO

1258");NONOO;)voidNONO0{/・请在此函数内打开文件,输入测试数据,调用fun函数,输出数据,关闭文件。*/FILE*rf,*wf;inti;chars[N];rf=fopen("in.dat","r");wf=fopen(*out.dat","w");for(i=0;i<10;i++){fscanf(rf,"%s”,s);if(fun(s))fprintf(wf,"%sYES

1259",s);elsefprintf(wf,"%sN0

1260”,s);}fclose(rf);fclose(wf);)参考答案:intfun(char*str)(inti,j=strlen(str);for(i=0;i

1261

1262H);puts(s);if(fun(s))printffYESXn");第92套:一、填空题:给定程序中,函数fun的功能是将带头节点的单向链表结点数据域中的数据从小到大排序。即若原链表结点数据域从头至尾的数据为:10、4,2、8、6,排序后链表结点数据域从头至尾的数据为:2、4、6、8、10。请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。注意:源程序存放在考生文件夹下BLANK1.C中。不得增行或删行,也不得更改程序的结构!给定源程序:^include#includettdefineN6typedefstructnode{intdata;structnode*next;}NODE:voidfun(NODE*h){NODE*p,*q;intt;/**********found**********/P=_1_;while(p){/**********fQyncl**********/q=_2_;while(q){/**********found**********/if(p->data_3_q->data){t=pー〉data;p->data=qー〉data;q->data=t;}q=q->next;}p=p->next;)NODE*creatlist(inta口){NODE*h,*p,*q;inti;h=(NODE*)malloc(sizeof(NODE));h->next=NULL;for(i=0;idata=a[i];q->next=NULL;if(h->next==NULL)hー>next=p=q;else{p->next=q;p=q;})returnh;}voidoutlist(NODE*h){NODE*p;p=h->next;if(p==NULL)printf(*ThelistisNULL!

1263*);else

1264{printf(*

1265Headつ;do{printf(“ー)%d”,p->data);p=p->next;}while(p!=NULL);printf("->End

1266");)}main(){NODE*head;inta[N]={0,10,4,2,8,6};head=creat1ist(a);printf("

1267Theoriginallist:

1268");outlist(head);fun(head);printf("

1269Thelistaftersorting:

1270");outlist(head);}解题答案:/**********第・空**********/p=h->next;/**********第二空**********/q=p->next;/**********第1空**********/if(p->data>=q->data)二、改错题:给定程序MODH.C是建立一个带头结点的单向链表,并用随机函数为各结点数据域赋值。函数fun的作用是求出单向链表结点(不包括头结点)数据域屮的最大值,并且作为函数值返回。请改IE函数fun中指定部位的错误,使它能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!给定源程序:ttinclude^includetypedefstructaa{intdata;structaa*next;}NODE;intfun(NODE*h){intmax=-l;NODE*p;/***********found**********/P二h;while(p){if(p->data>max)max=p->data;/***********found**********/p=h->next;}returnmax;)outresult(ints,FILE*pf){fprintf(pf,*

1271Themaxinlink:%d

1272”,s);}NODE*creatlink(intn,intm){NODE*h,*p,*s;inti;h=p=(NODE*)malloc(sizeof(NODE));h->data=9999;for(i=l;i<=n;i++){s=(NODE*)malloc(sizeof(NODE));sー〉data=rand()%m;s->next=p->next;p->next=s;p=p->next;}p->next=NULL;returnh;)outlink(NODE*h,FILE*pf){NODE*p;p=h-〉next;fprintf(pf,*

1273THELIST:

1274

1275HEAD");whiIe(p){fprintf(pf,“ー〉%d”,p-〉data);p=p-〉next;}fprintf(pf,"

1276");}main(){NODE*head;intm;head=creatlink(12,100);outlink(head,stdout);m=fun(head);printf(*

1277THERESULT:

1278*);outresult(m,stdout);}解题答案:/***********found**********/p=h->next;/***********found**********/p=p->next;三、程序题:请编写函数fun,函数的功能是:将M行N列的二

1279维数组中的数据,按行的顺序依次放到ー维数组中,一维数组中数据的个数存放在形参n所指的存储单元中。例如,二维数组中的数据为:333333334444444455555555则一维数组中的内容应是:333333334444444455555555〇注意:部分源程序在文件PROG1.C中。请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。给定源程序:#includeくstdio.h>voidfun(int(*s)[10],int*b,int*n,intmm,intnn)main(){intw[10][10]={{33,33,33,33},{44,44,44,44},{55,55,55,55}},i,j;inta[100]={0),n=0;voidNONO();printf(*Thematrix:

1280*);for(i=0;i<3;i++){for(j=0;j<4;j++)printf(*%3d*,w[i][j]);printf("

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

1282*);for(i=0;i

1283

1284");NONOO;)voidNONO0{/・请在此函数内打开文件,输入测试数据,调用fun函数,输出数据,关闭文件。*/FILE*rf,*wf;inti,j,k;intw[10][10],a[100],n=0,mm,nn;rf=fopen("in.dat","r");wf=fopen("out.dat","w");for(k=0;k<5;k++){fscanf(rf,"%d%d",&mm,&nn);for(i=0;i

1285");)fclose(rf);fclose(wf);)参考答案:voidfun(int(*s)[10],int*b,int*n,intmm,intnn)(intij,k;for(i=0;i

1286");for(i=0;i<3;i++){fbr(j=0;j<4;j++)printf(,,%3dH,w[i][j]);printfCXn1');)fun(w,a,&n,3,4);printfC'TheAarray:

1287M);for(i=0;i

1288

1289H);NONO();第93套ー、填空题:给定程序中,函数fun的功能是将不带头结点的单向链表逆置。即若原链表中从头至尾结点数据域依次为:2、4、6、8、1(),逆置后,从头至尾结点数据域依次为:10、8、6、4、2〇请在程序的ド划线处填入正确的内容并把ド划线删除,使程序得出正确的结果。注意:源程序存放在考生文件夹トBLANKI.C中。不得増行或删行,也不得更改程序的结构!给定源程序:^include#include^defineN5typedefstructnode{

1290intdata;structnode*next;}NODE;/**********fQUn(j**********/_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;/**********found**********/q=_3_;)returnp;)NODE*creat1ist(inta[]){NODE*h,*p,*q;inti;h=NULL;for(i=0;idata=a[i];q->next=NULL;if(h==NULL)h=p=q;else{p->next=q;p=q;}}returnh;)voidoutlist(NODE*h){NODE*p;p=h;if(p==NULL)printf(*ThelistisNULL!

1291");else{printf(*

1292Head");do{printf("ー)%d”,p->data);p=pー〉next;}while(p!=NULL);printf("->End

1293");})main(){NODE*head;inta[N]={2,4,6,8,10);head=creatlist(a);printf("

1294Theoriginal1ist:

1295");outlist(head);head=fun(head);printf("

1296Thelistafterinverting:

1297");outlist(head);)解题答案:/**********第一•空**********/NODE*fun(NODE*h)/**********第二空**********/r=qー〉next;/**********第三空**********/q=r;二、改错题:给定程序MODI1.C中函数fun的功能是:将s所指字符串中位于奇数位置的字符或ASCI!码为偶数的字符放入t所指数组中(规定第・个字符放在第0位中)。例如,字符串中的数据为:AABBCCDDEEFF,则输出应当是:ABBCDDEFF«请改正函数fun中指定部位的错误,使它能得出正确的结果。注意:不耍改动main函数,不得增行或删行,也不得更改程序的结构!给定源程序:#include#include^defineN80voidfun(char*s,chart[]){inti,j=0;for(i=0;i<(int)strlen(s);i++)/***********found**********/if(i%2&&s[i]%2==0)t[j++]=s[i];/***********found**********/t⑴ハ。’;}

1298main(){chars[N],t[N];printf(*

1299Pleaseenterstrings:;gets(s);fun(s,t);printf(*

1300Theresultis:%s

1301”,t);)解题答案:/***********found**********/if(i%2||s[i]%2==0)/***********found**********/t[j]=‘、0';三、程序题:请编写函数fun,函数的功能是:籽M行N列的二维数组中的数据,按列的顺序依次放到・维数组中。函数fun中给出的语句仅供参考。例如,二维数组中的数据为:333333334444444455555555则一维数组中的内容应是:334455334455334455334455〇注意:部分源程序在文件PROG1.C中。请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。给定源程序:^includevoidfun(ints[][10],intb[],int*n,intmm,intnn)main()(intw[10][10]={{33,33,33,33},{44,44,44,44},(55,55,55,55}},i,j;inta[100]={0},n=0;voidNONO0;printf(*Thematrix:

1302*);for(i=0;i<3;i++)(for(j二〇;jく4;j++)printf(*%3d*,w[i][j]);printf("

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

1304");for(i=0;i

1305

1306");NONOO;)voidNONO0{/・请在此函数内打开文件,输入测试数据,调用fun函数,输出数据,关闭文件。*/FILE*rf,*wf;inti,j,k;intw[10][10],a[100],n=0,mm,nn;rf=fopen("in.dat","r");wf=fopen("out.dat","w");for(k=0;k<5;k++){fscanf(rf,"%d%d",&mm,&nn);for(i=0;i

1307");}fclose(rf);fclose(wf):)参考答案:voidfun(int(*s)[10],int*b,int*n,intmm.intnn)(/*以下代码仅供参考*/inli,j,np=O;/*np用作b数组下标・/for(i=0;i#include#defineN5typedefstructnode{intdata;structnode*next;

1308}NODE;voidfun(NODE*h){NODE*p,*q,*r;/**********found**********/P=/**********found**********/if(p=_2_)return;q=p->next;p->next=NULL;while(q){r=q->next;qー〉next=p;/**********found**********/P=q;q=_3_;}h->next=p;)NODE*creat1ist(inta[]){NODE*h,*p,*q;inti;h=(NODE*)malloc(sizeof(NODE));h->next=NULL;for(i=0;idata=a[i];q->next-NULL;if(h->next==NULL)h->next=p=q;else{p->next=q;p=q;}}returnh;)voidoutlist(NODE*h){NODE*p;p=h->next;if(p==NULL)printf(*ThelistisNULL!

1309*);else{printf(*

1310Head");do{printf(ー〉%d”,p->data);p=p->next;}while(p!=NULL);printf('ー〉End

1311");})main(){NODE*head;inta[N]={2,4,6,8,10};head=creatlist(a);printf("

1312Theoriginallist:

1313");outlist(head);fun(head);printf("

1314Thelistafterinverting:

1315");outlist(head);)解题答案:/*********・第・空**********/p=h->next;/**********第二空**********/if(p==0)return;/**********第二空**********/P=q;q=r;二、改错题:给定程序MODIl.C中函数fun的功能是:计算s所指字符串中含有t所指字符串的数目,并作为函数值返回。请改正函数fun中指定部位的错误,使它能得出正确的结果。注意:不要改动main函数,不得増行或删行,也不得更改程序的结构!给定源程序:^include#include^defineN80intfun(char*s,char*t){intn;char*p,*r;n二〇;while(*s){p=s;/*********foun(j**********/r=p;while(*r)if(*rニニ・p){r++;p++;}elsebreak;/*********found**********/if(*r=0)n++;s++;)returnn;)main()

1316{chara[N],b[N];intm;printf(*

1317Pleaseenterstringa:;gets(a);printf(*

1318Pleaseentersubstringb:;gets(b);m=fun(a,b);printf(*

1319Theresultis:m二%d

1320”,m);}解题答案:/*********found**********/r=t;/*********found**********/if(*r==O)三、程序题:请编写函数面n,函数的功能是:将放在字符串数组屮的M个字符串(每串的长度不超过N),按顺序合并组成个新的字符串。函数fun中给出的语句仅供参考。例如,字符串数组中的M个字符串为AAAABBBBBBBCC则合并后的字符串的内容应是:AAAABBBBBBBCCo提示:strcat(a,b)的功能是将字符串b复制到字符串a的串尾上,成为ー个新串。注意:部分源程序在文件PROG1.C中。请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。给定源程序:^include#includettdefineM3^defineN20voidfun(chara[M][N],char*b)mainO{charw[M][N]:{"AAAA","BBBBBBB","CC"},a[100];inti;voidNONO0;printf("Thestring:

1321");for(i=0;i

1322");fun(w,a);printf("TheAstring:

1323");printf("%s",a);printf('

1324

1325");NONO();)voidNONO(){/・请在此函数内打开文件,输入测试数据,调用fun函数,输出数据,关闭文件。*/FILE*rf,*wf;charw[M][N],a[100];inti;rf=fopen("in.dat","r");wf=fopen("out.dat","w");for(i=0;i<10;i++){fscanf(rf,"%s%s%s",w[0],w[l],w[2]);fun(w,a);fprintf(wf,"%s

1326",a);}fclose(rf);fclose(wf);

1327参考答案:#include#defineM3#defineN20voidfun(chara[M][N],char*b)(/*以下代码仅供参考*/inti;*b=0;for(i=0;i^include#defineN6typedefstructnode{intdata;structnode*next;}NODE:voidfun(NODE*h){NODE*p,*q;intt;p=h;while(p){/**********found**********/q=_1_;/**********found**********/while(_2_){if(p->data>q->data){t=p->data;p->data=q->data;qー〉data=t:}q-q->next;)/**********found**********/P=_3_;))NODE*creatlist(inta[]){NODE*h,*p,*q:inti;h二NULL;for(i=0;idata=a[i];q->next=NULL;if(h==NULL)h=p=q;else{p->next=q;p=q;})returnh;)voidoutlist(NODE*h){NODE*p;P=h;if(p==NULL)printf(*ThelistisNULL!

1328");else{printf("

1329Headつ;do{printf(“ー)%d”,p->data);p=p->next;}while(p!=NULL);printf("->End

1330");))main(){NODE*head;inta[N]={0,10,4,2,8,6};head=creat1ist(a);printf("

1331Theoriginallist:

1332");outlist(head);fun(head);printf(*

1333Thelistafterinverting:

1334");outlist(head);}解题答案:/**********第—空**********/q=p->next;/**********第二空**********/while(q)/**********第三空**********/

1335p=p->next;二、改错题:给定程序MODI1.C中函数fun的功能是:将s所指字符串中的字母转换为按字母序列的后续字母(但Z转换为A,z转换为a),其它字符不变。请改正函数fun中指定部位的错误,使它能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!给定源程序:#include#includevoidfun(char*s)(/**********fQUn(j***********/while(*s!=,@'){if(*s>=,A*&&*s<=,ZJII*s>=,a&&*s<=,z){if(*s=Z*)*s='A';elseif(*s==,z')*s='a';else*s+=1;)/**********found***********/(*s)++;))mainO{chars[80];printf(*

1336Enterastringwithlength<80.:

1337

1338");gets(s);printf(*

1339Thestring:

1340

1341つ;puts(s);fun(s);printf(*

1342

1343TheCords:

1344

1345");puts(s);}解题答案:/**********founci***********/while(*s)/**********founcl***********/s++;三、程序题:请编写函数fun,函数的功能是:移动一维数组中的内容;若数组中有n个整数,要求把下标从0到p(含p,p小于等于n-1)的数组元素平移到数组的最后。例如,・维数组中的原始内容为:1,2,345,678,9,10;p的值为3。移动后,一维数组中的内容应为:5,6,7,8,9,10,1,2,3,4。注意:部分源程序在文件PROG1.C中。请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。给定源程序:ttinclude#defineN80voidfun(int*w,intp,intn)main(){inta[N]={l,2,3,4,5,6,7,8,9,10,11,12,13,14,15);inti,p,n=15;voidNONO();printf(*Theoriginaldata:

1346*);for(i=0;i

1347

1348Enterp:");scanf("%d",&p);fun(a,p,n);printf(*

1349Thedataaftermoving:

1350*);for(i=0;i

1351

1352");NONO();)voidNONO(){/・请在此函数内打开文件,输入测试数据,调用fun函数,输出数据,关闭文件。・/FILE*rf,*wf;inta[N],i,j,p,n;rf=fopen("in.dat","r");wf=fopen("out.dat","w");for(i=0;i<5;i++){fscanf(rf,"%d%d”,&n,&p);for(j=0;j

1353");}fclose(rf);fclose(wf):)参考答案:voidfun(int*w,intp,intn)(intiJ=0,b[N];for(i=p+1;i

1354x1=5.000000,x2=3.OOOOOO,xl*xl+xl*x2=40.000000请在程序的ド划线处填入正确的内容并把ド划线删除,使程序得出正确的结果。注意:源程序存放在考生文件夹ドBLANK1.C中。不得增行或删行,也不得更改程序的结构!给定源程序:^includedoublefl(doublex){returnx*x;}doublef2(doublex,doubley){returnx*y;}/**********found**********/1fun(inti,doublex,doubley){if(i=l)/**********found**********/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(*

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

1356

1357*,xl,x2,r);}解题答案:/**********第♦空**********/doublefun(inti,doublex,doubley)/**********第二空**********/returnfl(x);/**********第ゴ空**********/returnf2(x,y);二.改错题:给定程序MODI1.C中函数fun的功能是:比较两个字符串,将长的那个字符串的首地址作为函数值返回。请改正函数fun中指定部位的错误,使它能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!给定源程序:^include/**********found**********/charfun(char*s,char*t){intsl=0,tl=0;char*ss,*tt;ss=s;tt=t;while(*ss){sl++;/**********found**********/(*ss)++;)while(*tt){tl++;/**********found**********/(*tt)++;)if(tl>sl)returnt;elsereturns;)main(){chara[80],b[80];printf(*

1358Enterastring:つ;gets(a);printf("

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

1360Thelongeris:

1361

1362\*%s\*

1363*,fun(a,b));)解题答案:/**********found**********/char*fun(char*s,char*t)/**********found**********/ss++;/**********found**********/tt++;三、程序题:请编写函数fun,函数的功能是:移动字符串中的内容,移动的规则如下:把第1到第m个字符,平移到字符串的最后,把第m+1到最后的字符移到字符串的前部。例如,字符串中原有的内容为:ABCDEFGHIJK,m的值为3,则移动后,字符串中的内容应该是:DEFGHIJKABC。注意:部分源程序在文件PROG1.C中。请勿改动主函数main和K它函数中的任何内容,仅在函数fun的花括号中壊入你编写的若干语句。给定源程序:♦♦include♦♦include♦♦defineN80voidfunl(char*w)/*本函数的功能是将字符串中字符

1364循环左移ー个位置・/inti:chart;t=w[0];for(i=0;i<(int)strlen(w)-l;i++)w[i]-w[i+l];w[strlen(w)}voidfun(char*w,intm)/・可调用fun!函数左移字符*/fclose(rf);fclose(wf);参考答案:voidfunI(char*w)/*本函数的功能是将字符串中字符循环左移ー个位置・/(inti;chart;t=w[0);for(i=0;i

1365*);puts(a);printf(*

1366

1367Enterm:つ;scanf("%d",&m);fun(a,m);printf("

1368Thestringaftermoving:

1369");puts(a);printf("

1370

1371");NONO();)voidNONO(){/・请在此函数内打开文件,输入测试数据,调用fun函数,输出数据,关闭文件。*/FILE*rf,*wf;chara[N];intm,i;rf=fopen("in.dai,r");wf=fopen(*out.dat","w");for(i=0;i<10;i++){fscanf(rf,"%d%s”,&m,a);fun(a,m);fprintf(wf,"%s

1372",a);}第97套:、填空题:给定程序中,函数fun的功能是将形参给定的字符串、整数、浮点数写到文本文件中,再用字符方式从此文本文件中逐个读入并显示在终端屏幕上。请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。注意:源程序存放在考生文件夹下BLANK1.C中。不得增行或删行,也不得更改程序的结构!给定源程序:ttincludeくstdio.h>voidfun(char*s,inta,doublef){/**********found**********/_1—fp;charch;fp=fopen("filel.txt","w");fprintf(fp,*%s%d%f

1373”,s,a,f);fclose(fp);fp=fopen("filel.txt","r");printf(*

1374Theresult:

1375

1376");ch=fgetc(fp);/**********found**********/while(!feof(_2_)){/**********found**********/putchar(_3_);ch=fgetc(fp);}putchar(*

1377);fclose(fp);}main(){chara[10]=*Hello!*;intb=12345;doublec=98.76;

1378fun(a,b,c);}解题答案:/**********第一空**********/FILE*fp;/**********第二空**********/while(!feof(fp)){/**********第三空**********/putchar(ch);ch=fgetc(fp);}二.改错题:给定程序M0DI1.C中函数fun的功能是:依次取出字符串中所有数字字符,形成新的字符串,并取代原字符串。请改正函数fun中指定部位的错误,使它能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!给定源程序:#includevoidfun(char*s){inti,j;for(i=0,j=0;s[i]!=\0*;i++)if(s[i]>=0r&&s[i]<=91)/**********found**********/s[j]=s[i];/**********found**********/s[j]一、〇";)mainO{charitem[80];printf("

1379Enterastring:);gets(item);printf(*

1380

1381Thestringis:ヽ"%s\"

1382”,item);fun(item);printf("

1383

1384Thestringofchangingis:\"%s\"

1385",item);)解题答案:/**********found**********/s[j++]=s[i];/**********found**********/s[j]=\0*;三、程序题:请编写函数fun,函数的功能是:将M行N列的二维数组中的字符数据,按列的顺序依次放到ー个字符串中。例如,二维数组中的数据为:WWWWSSSSHHHH则字符串中的内容应是:WSHWSHWSHo注意:部分源程序在文件PROG1.C中。请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。给定源程序:^include^defineM3#defineN4voidfun(chars[][N],char*b)(inti,j,n=O;for(i=0;i

1386");for(i=0;i

1387");)fun(w,a);printf("TheAstring:

1388");puts(a);

1389printf(*

1390

1391*);NONO();voidNONO(){/・请在此函数内打开文件,输入测试数据,调用fun函数,输出数据,关闭文件。*/FILE*rf,*wf;inti,j,k;chara[100],w[M][N],b;rf=fopen(*in.dat","r");wf=fopen(*out.dat","w");for(k=0;k<10;k++){for(i=0;i^includevoidfun(char*s,inta,doublef)(/**********fotind**********/_1_fp;charstr[100],strl[100],str2[100];intal;doublefl;fp=fopenCfilel.txt","w");fprintf(fp,"%s%d%f

1392”,s,a,f);/**********found**********/_2_;fp=fopenCfilel.txt","r");/**********found**********/fscanf(_3—,"%s%s%s”,str,strl,str2):fclose(fp);al=atoi(strl);fl=atof(str2);printf(*

1393Theresult:

1394

1395%s%d%f

1396*,str,al,fl);)mainO{chara[10]="Hello!”;intb=12345;doublec=98.76;fun(a,b,c);参考答案:voidfun(chars[][N],char*b)(intij,n=O;for(i=0;i^includevoidfun(char*s,inta,doublef){/**********found**********/_1_fp;charstr[100],strl[100],str2[100];intal;doublefl;fp=fopen("filel.txt","w");fprintf(fp,"%s%d%f

1397”,s,a,f);/**********found**********/_2_;fp=fopen("filel.txt","r");/**********foun(j**********/fscanf(_3_,*%s%s%s*,str,strl,str2);fclose(fp);

1398al=atoi(strl);fl=atof(str2);printf(*

1399Theresult:

1400

1401%s%d%f

1402*»str,al,fl);}main(){chara[10]=*Hello!*;intb=12345;doublec=98.76;fun(a,b,c);解题答案:/**********第一空**********/FILE*fp;/**********第二空**********/fclose(fp);/**********第三空**********/fscanf(fp,*%s%s%s*,str,strl,str2);二、改错题:给定程序M0DI1.C中函数fun的功能是:对N名学生的学习成绩,按从髙到低的顺序找出前m(mW10)名学生来,并将这些学生数据存放在一个动态分配的连续存储区中,此存储区的首地址作为函数值返回。请改正函数fun中指定部位的错误,使它能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!给定源程序:^include#include#include#defineN10typedefstructss{charnum[10];ints;}STU;STU*fun(STUa[],intm){STUb[N],*t;inti,j,k;/**********found**********/t=(STU*)calloc(sizeof(STU),m)for(i=0;ib[j].s)j=i;/**********found**********/t(k)=b(j);b[j].s=0;}returnt;)outresult(STUa[],FILE*pf){inti;for(i=0;i

1403*,a[i].num,a[i].s);fprintf(pf,'ヽn

1404");)main(){STUa[N]={{*A0r,81},{*A02*,89},{*A03*,66),{"A04”,87},{"A05”,77},{"A06”,90},{"A07”,79},{"A08",61},rA09\80),rA10\71});STU*p0rder;inti,m;printf(******TheOriginaldata*****

1405*);outresult(a,stdout);printf(*

1406Givethenumberofthestudentswhohavebetterscore:");scanf("%d",&m);while(m>10){printf(*

1407Givethenumberofthestudentswhohavebetterscore:つ;scanf(*%d*,&m);)pOrder=fun(a,m);printf(******THERESULT*****

1408*);printf(*Thetop:

1409*);for(i=0;i

1410*,pOrder[i].num,pOrder[i].s);free(pOrder);)解题答案:/**********f、ound**********/t=(STU*)calloc(sizeof(STU),m);/**********found**********/t[k]=b[j];三、程序题:请编写函数fun,函数的功能是:删去ー维数组中所有相同的数,使之只剩•个。数组中的数已按由小到大的顺序排列,函数返回删除后数组中数据的个数。例如,ー维数组中的数据是:2223445666677899101010。删除后,数组中的内容应该是:2345678910o注意:部分源程序在文件PROG1.C中。

1411请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。给定源程序:#includettdefineN80intfun(inta[],intn)intiJ=1,k=a[0];for(i=1;i

1412");for(i=0;i

1413

1414Thedataafterdeleted:

1415*);for(i=0:i

1416

1417*);NONOO;)voidNONO(){/・请在此函数内打开文件,输入测试数据,调用fun函数,输出数据,关闭文件。*/FILE*rf,*wf;inta[N],n,i,j;rf=fopen("in.dat","r");wf=fopen(*out.dat","w");for(i=0;i<5;i++){fscanf(rf,"机T,&n);for(j=0;j

1418");}fclose(rf);fclose(wf);)参考答案:intfun(inta口,intn)第99套:ー、填空题:给定程序的功能是:调用函数fun将指定源文件中的内容复制到指定的目标文件中,复制成功时函数返冋值为!,失败时返冋值为。。在复制的过程中,把复制的内容输出到终端屏幕。主函数中源文件名放在变量sfname中,目标文件名放在变量tfname中。请在程序下划线处填入正确的内容并把下划线删除,使程序得出正确结果。注意:源程序存放在考生文件夹ド的BLANK1.C中。不得增行或删行,也不得更改程序的结构!给定源程序:#include#includeintfun(char*source,char*target){FILE*fs,*ft;charch;/**********f、ound**********/if((fs=fopen(source,1))==NULL)return0;if((ft=fopen(target,"w"))ニニNULL)return0;printf(*

1419Thedatainfile:

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

1421

1422");

1423return1;main(){charsfname[20]=*myfilel*»tfname[20]=*myfile2*;FILE*myf;inti;charc;myf=fopen(sfname,"w");printf(*

1424Theoriginaldata:

1425");for(i=l;i<30;i++){c=,A>+rand()%25;fprintf(myf,*%c*»c);printf(飞c”,c);}fclose(myf);printf('

1426

1427");if(fun(sfname,tfname))printf("Succeed!”):elseprintf("Fail!");)解题答案:/**********第一空**********/if((fs=fopen(source,"r"))==NULL)/**********第二空**********/while(!feof(fs))/**********第三空**********/fputc(ch,ft);二、改错题:给定程序MODI1.C中函数fun的功能是:将长整型数中每一位上为偶数的数依次取出,构成一个新数放在I中。高位仍在高位,低位仍在低位。例如,当s中的数为:87653142时,I中的数为:8642〇请改正程序中的错误,使它能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!给定源程序:#includevoidfun(longs,long*t){intd;longsl=l;*t=0;while(s>0){d=s%10;/************foun(j************/if(d%2=0){*t=d*sl+*t;si*=10;)/************found************/s\=10;main(){longs,t;printf("

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

1429",t);}解题答案:/************founcl************/if(d%2=0)/************foun(l************/s/=10;三、程序题:函数fun的功能是:将两个两位数的正整数a、b合并形成一个整数放在c中。合并的方式是:将a数的十位和个位数依次放在c数的十位和千位上,b数的十位和个位数依次放在c数的百位和个位上。例如,当a=45,b=12时,调用该函数后,¢=5142。注意:部分源程序存在文件PROG1.C中。数据文件1N.DAT中的数据不得修改。请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。给定源程序:ttincludevoidfun(inta,intb,long*c)main(){inta,b;longc;voidNONO();printf("Inputa,b:");scanf("%d,%d",&a,&b);fun(a,b,&c);printf("Theresultis:%ld

1430",c);NONO();)voidNONO(){/・本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。*/FILE*rf,*wf;inti,a,b;longc;rf=fopen("in.dat","r");wf=fopen(*out.dal","w");for(i=0;i<10;i++){fscanf(rf,"%d,%d",&a,&b);fun(a,b,&c);fprintf(wf,"a=%d,b=%d,c=%ld

1431",a,b,c);)

1432fclose(rf);fclose(wf);)解题答案:(*c=(a%10)*1000+(b/l0)*100+(a/10)*10+(b%10);###############################第100套:、填空题:函数fun的功能是:把形参a所指数组中的最大值放在a[0]中,接着求出a所指数组中的最小值放在a[l]中;再把a所指数组元素中的次大值放在a[2]中,把a数组元素中的次小值放在a[3]屮;其余以此类推。例如:若a所指数组中的数据最初排列为:1、4、2、3、9、6、5、8、7I则按规则移动后,数据排列为:9、1、8、2、7、3、6、4、5。形参n中存放a所指数组中数据的个数。请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。注意:源程序存放在考生文件夹下BLANK1.C中。不得增行或删行,也不得更改程序的结构!给定源程序:#include#defincN9/**********JqupiJ**********/voidfiin(int1,intn){inti,j,max,min,px,pn,t;/*******************/for(i=0;ia[j]){min=a[j|;pn=j;})if(px!=i){t=a[i];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;))Jmain(){intb[N]={l,4,2,3,9,6,5,8,7},i;printf(n

1433Theoriginaldata:

1434M);for(i=0;i

1435,^);fun(b,N);printf("

1436Thedataaftermoving:

1437");for(i=0;i

1438M);)解题答案:/第・空/voidfun(int*a,intn)/第二空・/for(i=0;i#defineSIZE20fun(double*s,double*w){intkJ;doublesum;for(k=2J=0;i

1439sum=0.0;for(k=0J=0;i

1440H);for(i=0;i

1441");printf("%4.0f;a[i]);)printf("

1442

1443Theresult:

1444");for(i=0;i

1445

1446H);)解题答案:/**********found**********/sum=0.0;/**********found**********/if((i+l)%5==0)三、程序题:学生的记录由学号和成绩组成,N名学生的数据已在主函数中放入结构体数组s中,请编写函数fun,它的功能是:把低于平均分的学生数据放在b所指的数组中,低于平均分的学生人数通过形参n传回,平均分通过函数值返回。注意:部分源程序在文件PROG1.C中。请勿改动主函数main和其它函数屮的任何内容,仅在函数fun的花括号中填入你编写的若干语句。给定源程序:#include#defineN8typedefstruct{charnum[10];doubles;)STREC;doublefun(STREC*a,STREC*b.int*n)(此处填写答案)main(){STRECs[N]={{,'GA05H,85),{MGA03M,76},{KGA02",69),{"GA04H,85),{'•GAO1H,91),{"GA07H,72),{"GA08",64),{"GA06",87));STRECh[N],t;FILE*out;inti,j,n;doubleave;ave=fun(s,h,&n);printf(HThe%dstudentdatawhichislowerthan%7.3f:

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

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

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

1450%7.3f

1451",n,ave);for(i=0;ih[j].s){t=h[i];h[i]=h[jl;h[j]=t;}for(i=0;i

1452",h[i].s);fclose(out);)解题答案:(inti;doubleave=0.0;*n=0;for(i=0;i

1453returnave;/*返回平均值・/(本题库仅供参考)

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

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

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