《2011年计算机二级c语言上机题库》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
main()2011全国计算机二级C语言上机参考题库注意:填空题填好答案要去掉下划线。改错题**found**下面的一行为错误地方,直接按答案更正即可。程序题答案只填在花括号中。(记得保存)第01套:•、填空题:程序通过定义学生结构体变量,存储了学生的学号、姓名和3门课的成绩。所有学生数据均以二进制方式输出到文件中。函数fun的功能是重写形参filename所指文件中最后ー个学生的数据,即用新的学生数据覆盖该学生原来的数据,其它学生的数据不变。请在程序的下划线处壊入正确的内容并把下划线删除,使程序得出正确的结果。注意:源程序存放在考生文件夹下BLANK1.C中。不得增行或删行,也不得更改程序的结构!给定源程序:^include 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 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 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 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 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中。不得增行或删行,也不得更改程序的结构!给定源程序:^include 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 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 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 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 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的花括号中填入你编写的若干语句。给定源程序:^include 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;i 81请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。注意:源程序存放在考生文件夹的BLANK1.C中。不得増行或删行,也不得更改程序的结构!给定源程序:#include 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函数,不得增行或删行,也不得更改程序的结构!给定源程序:#include 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的花括号中填入你编写的若干语句。给定源程序:#include 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 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 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语言提供的求字符串长度的函数),函数返回较长的字符串。若两个字符串长度相同,则返回第一个字符串。例如,输入beijing 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 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;i 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 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 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 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;i 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 136给定源程序:#include 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 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 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 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 162sum=%d 163,\fun(3));)SLIST*creatlist(inta||){SLIST*h,*p,*q;inti;h=p=(SLIST*)malloc(sizeof(SLIST));for(i=0;i 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 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 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 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 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 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函数,不得增行或删行,也不得更改程序的结构!给定源程序:#include 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 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;i 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 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中。不得增行或删行,也不得更改程序的结构!给定源程序:#include 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 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 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-不得增行或删行,也不得更改程序的结构!给定源程序:#include 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 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 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;i 250注意:源程序存放在考生文件夹的BLANK1.C中。不得增行或删行,也不得更改程序的结构!给定源程序:#include 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 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的花括号中填入你编写的若干语句。给定源程序:#include 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 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;j 268注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!给定源程序:#include 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 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 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函数,不得增行或删行,也不得更改程序的结构!给定源程序:#include 283 284%d!=%lg 285 286M,n,fun(n));}解题答案:/*********found*********/result*』一;/*********found*********/returnresult;三、程序题:编写函数fun,函数的功能是:从s所指的字符串中删除给定的字符。同一字母的大、小写按不同字符处理。若程序执行时输入字符串为:turbocandborlandC++从键盘上输入字符:n,则输出后变为:turbocadborladC++如果输入的字符在字符串中不存在,则字符串照原样输出。注意:部分源程序在文件PROG1.C中。请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。给定源程序:#include 287#include 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 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 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 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 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函数,不得增行或删行,也不得更改程序的结构!给定源程序:♦(include 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的花括号中填入你编写的若干语句。给定源程序:ttinclude 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个字符串,且串长 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 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 337*\s);fun(s);printf(M 338Theresultis:%s 339*\s);)解题答案:/**********第一空**********/t2[j]=s[i];j++;/**********第二空**********/for(i=0;i 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 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不得増行或删行,也不得更改程序的结构!给定源程序:#include 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函数,不得增行或删行,也不得更改程序的结构!给定源程序:#include 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的花括号中填入你编写的若干语句。给定源程序:#include 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中。不得增行或删行,也不得更改程序的结构!给定源程序:#include 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函数,不得增行或删行,也不得更改程序的结构!给定源程序:#include 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的花括号中填入你编写的若干语句。给定源程序:#include 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中。不得増行或删行,也不得更改程序的结构!给定源程序:#include 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函数,不得增行或删行,也不得更改程序的结构!给定源程序:#includc 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 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中。不得增行或删行,也不得更改程序的结构!给定源程序:#include 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 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 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#include 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函数,不得增行或删行,也不得更改程序的结构!给定源程序:#include 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的花括号中填入你编写的若干语句。给定源程序:#include 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 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 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 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 410");for(i=0;i 411H);fun(t);printf(" 412Theresultis: 413");for(i=0;i 414");))解题答案:/**********第一空**********/for(i=0;i 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 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 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 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 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 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 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的花括号中填入你编写的若干语句。给定源程序:#include 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 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;i 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的花括号中壊入你编写的若干语句。给定源程序:#include 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 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的花括号中填入你编写的若干语句。给定源程序:#include 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 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");)解题答案:^include 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 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 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函数,不得增行或删行,也不得更改程序的结构。给定源程序:#include 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的花括号中填入你编写的若干语句。给定源程序:#include 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 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函数,不得增行或删行,也不得更改程序的结构。给定源程序:#include 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 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;i 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 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的花括号中填入你编写的若干语句。给定源程序:^include 523程序得出正确的结果。注意:源程序存放在考生文件夹下的BLANKLC中。不得增行或删行,也不得更改程序的结构!给定源程序:#include 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函数,不得增行或删行,也不得更改程序的结构。给定源程序:#include 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 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;i 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 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 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 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函数,不得增行或删行,也不得更改程序的结构。给定源程序:#include 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 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 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 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 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的花括号中填入你编写的若干语句。给定源程序:#include 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 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 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函数,不得增行或删行,也不得更改程序的结构!给定源程序:#include 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 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中。不得增行或删行,也不得更改程序的结构!给定源程序:#include 608Theresultis: 609");printf(Hx=%-12.6fy=%-12.6f 610",x,y);)解题答案:/**********found**********/t=1;/**********found**********/for(i=l;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 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 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 629Entern(2 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 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中。不得增行或删行,也不得更改程序的结构!给定源程序:#include 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 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的花括号中填入你编写的若干语句。给定源程序:#include 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中。不得増行或删行,也不得更改程序的结构!给定源程序:#include 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函数,不得増行或删行,也不得更改程序的结构!给定源程序:#include 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的花括号中填入你编写的若干语句.给定源程序:#include 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中。不得增行或删行,也不得更改程序的结构!给定源程序:#include 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 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的花括号中填入你编写的若干语句。给定源程序:♦(include 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 688",r);}解题答案:/**********found**********/ 689for(t=l;t 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 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中。不得增行或删行,也不得更改程序的结构!给定源程序:#include 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 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 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中。不得增行或删行,也不得更改程序的结构!给定源程序:#include 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 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的花括号中填入你编写的若干语句。给定源程序:#include 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中。不得增行或删行,也不得更改程序的结构!给定源程序:#include 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函数,不得增行或删行,也不得更改程序的结构!给定源程序:#include 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 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