2011年计算机等级考试二级C语言上机题库

2011年计算机等级考试二级C语言上机题库

ID:82949197

大小:72.84 KB

页数:120页

时间: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语言上机题库》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

201I年计算机等级考试二级C语言上机题库(1)ー、填空题:程序通过定义学生结构体变量,存储了学生的学号、姓名和3门课的成绩。所有学生数据均以二进制方式输出到文件中。函数fun的功能是重写形参filename所指文件中最后ー个学生的数据,即用新的学生数据覆盖该学生原来的数据,其它学生的数据不变。请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。注意:源程序存放在考生文件夹下BLANK1.C中。不得增行或删行,也不得更改程序的结构!给定源程序:#include#defineN5typcdcfstructstudent{longsno;charname[10];floatscore[3];}STU;voidfun(char*filename,STUn){FILE*fp;fp=fbpen(_l_,ケb+“);

1/**********found**********/fseek(_2_,-(long)sizeofi[STU),SEEKEND);/**********f^jund**********/fwrite(&n,sizeof(STU),1,3_);fclose(fp);}main(){STUt[N]={{10001,HMaChaoM,91,92,77},{10002,MCaoKaiM,75,60,88},{10003,MLiSi",85,70,78},{10004,“FangFang”,90,82,87},{10005,“ZhangSan”,95,80,88}};STUn={10006,”ZhaoSi”,55,70,68},ss[N];intij;FILE*fp;fp=fbpen(nstudent.datM,"wbM);fwrite(t,sizeof(STU),N,fp);fclose(fp);fp=fbpen(Mstudent.daf,"rbH);frcad(ss,sizeofKSTU),N,fp);fclose(fp);printfC'XnTheoriginaldata:

2

3M);

4for(j=0;jo{printf(M

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

6M);|fun("student.dat",n);printfi("

7Thedataaftermodifing:

8

9");fp=fopen("student.dat","rb");fread(ss,sizeofifSTU),N,fp);fclose(fp);for(j=0;jo{printf("

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

11H);解题答案:

12/**********第—•空**********/fp=fopen(filename,Mrb+H);/**********第一空**********/fseek(fp,-(long)sizeof(STU),SEEKEND);fwrite(&n,sizeof(STU),1,fp);二、改错题:给定程序MODILC中的函数Creatlink的功能是创建带头结点的单向链表,并为各结点数据域赋〇到m-1的值。请改正函数Creatlink中指定部位的错误,使它能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!给定源程序:#inckide#includctypedefstructaa{intdata;structaa*next;}NODE;NODE*Creatlink(intn,intm){NODE*h=NULL,*p,*s;inti;

13p=(NODE)malloc(sizeofi(NODE));h=p;p->next=NULL;fbr(i=l;i<=n;i-H-){s=(NODE*)malloc(sizeof(NODE));s->data=rand()%m;s->next=p->next;

14p->next=s;p=p->next;/*********************/returnp;outlink(NODE*h){NODE*p;p=h->next;printf(M

15

16THELIST:

17

18HEADM);while(p)p=p->next;printff'n”);

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

20main(){charline[N];intnum=0;voidNONO();printfif'Enterastring:

21M);gets(line);num=fun(line);printff'Thenumberofwordis:%d

22

23",num);NONO();voidNONO(){/・请在此函数内打开文件,输入测试数据,调用fun函数,输出数据,关闭文件。*/FILE*rf,*wf;inti,num;charline[N],*p;rf=fbpen(,,in.datM;,rH);wf=fopen(”〇ut.dat",“w”);fbr(i=0;i<10;i-H-){fgets(line,N,rf);p=strchr(line,*

24*);if(p!=NULL)*p=0;num=fun(line);

25fprintfl(wf,H%d

26M,num);|fclose(rf);fclose(wf);)参考答案:intfim(char*s){intk=1;while(*s){ifi[*s=**)k++;

27returnk;2011年计算机等级考试二级C语言上机题库(2)一、填空题:给定程序的功能是:从键盘输入若干行文本(每行不超过80个字符),写到文件myfile4.txt中,用ー1作为字符串输入结束的标志。然后将文件的内容读出显示在屏幕上。文件的读写分别由自定义函数ReadText和WriteText实现。请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。注意:源程序存放在考生文件夹下BLANK1.C中。不得增行或删行,也不得更改程序的结构!给定源程序:#include#include#includevoidWriteText(FILE*);voidReadText(FILE*);main(){FILE*fp;if((fp=fbpenC,myfile4.txtM,"w,,))=NULL)

28{printグopenfail!!

29M);exit(O);}WriteText(fp);fclose(fp);if((fp=fdpen(,,myfile4.txt",,,r,,))=NULL){printffopenfail!!

30H);exit(O);)ReadText(fp);fclose(fp);voidWriteText(FILE1){charstr[81];printfi("

31Enterstringwith-1toend:

32M);gets(str);while(strcmp(str,"-ln)!=0){

33fputs(2,fw);fputs(H

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

35Readfileandoutputtoscreen:

36");fgets(str,81,fr);while(!feofi(fr)){printff%s”,3);fgets(str,81,fr);解题答案:/**********—.jAr**********/

37voidWriteText(FILE*fw)/**********第一空**********/fputs(str,fw);fputs("

38",fw);/**********=**********/printf("%s",str);二、改错题:给定程序MODI1.C中函数fUn的功能是:从低位开始取出长整型变量s中奇数位上的数,依次构成一个新数放在t中。高位仍在高位,低位仍在低位。例如,当s中的数为:7654321时,I中的数为:7531。请改正程序中的错误,使它能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!给定源程序:#include/************************/voidfun(longs,longt){longsl=10;*t=s%10;while(s>0)

39{s=s/100;*t=s%10*si+*t;/************************/si=si*100;main(){longs,t;printf("

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

41",t);解题答案:/************^Qund************/voidfiin(longs,long*t)/************************/sl=sl*10;

42三、程序题:函数fiin的功能是:将两个两位数的正整数a、b合并形成一个整数放在c中。合并的方式是:将a数的十位和个位数依次放在c数的个位和百位上,b数的十位和个位数依次放在c数的千位和十位匕例如,当a=45,b=12时,调用该函数后,c=1524。注意:部分源程序存在文件PROG1.C中。数据文件IN.DAT中的数据不得修改。请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。给定源程序://includevoidfun(inta,intb,long*c)main(){inta,b;longc;voidNONO();prin氓"Inputa,b:");scanf(M%d,%dH,&a,&b);fiin(a,b,&c);printfi(*'Theresultis:%ld

43M,c);NONO();

44voidNONO(){/・本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。*/FILE*rf,*wf;inti,a,b;longc;rf=fbpen("in.daロケ”);wf=fbpen(,,out.dat,,,MwM);fbr(i=0;i<10;i-H-){fscanffrf,"%d,%dn,&a,&b);fun(a,b,&c);fprintfifwf,"a=%d,b=%d,c=%ld

45M,a,b,c);fclose(rf);fclose(wf);}解题答案:{*c=(b/10)*l000+(a%10)*100+(b%10)*10+(a/10);

46|201I年计算机等级考试二级C语言上机题库(3)ー、填空题:给定程序中,函数fun的功能是:将自然数1〜10以及它们的平方根写到名为myfile3.txt的文本文件中,然后再顺序读出显示在屏幕上。请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。注意:源程序存放在考牛.文件夹下的BLANK1.C中。不得增行或删行,也不得更改程序的结构!给定源程序:#include#includeintfim(char*fiiame){FILE*fp;inti,n;floatx;

47if((fp=fbpen(fname,HwM))=NULL)return0;/********************/fprintfif1,M%d%f

48**,i,sqrt((double)i));printfC

49Succeed!!

50n);/**********f^jund**********/printf("

51Thedatainfile:

52M);/**********^)und**********/if((fp=fbpen(3,"r"))=NULL)return0;fscanf(fp,M%d%f,,&n,&x);while(!feof(fp)){priロ氓"%d%f

53",n,x);fscanR中,”%d%F,&n,&x);}fclose(fp);

54main(){charfiiame[]=Mmyfile3.txtM;fun(fhame);解题答案:fprintfi(fp,"%d%f

55M,i,sqrt((double)i));printfT

56Succeed!!

57”);fclose(fp);/**********第二月**********/if((fp=fopen(fhame,V))=NULL)二、改错题:给定程序MODILC中firn函数的功能是:将n个无序整数从小到大排序。请改正程序中的错误,使它能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!给定源程序:#include#includefun(intn,int*a)

58{inti,j,p,t;for(j=0;jo(P=j;/************************/for(冃+1;ioif(a[p]>a[i])/************d************/t=i;if(p!=j){t=a[j];a[j]=a[p];a[p]=t;}

59putarr(intn,int*z){inti;for(i=1;i<=n;i++,z++){printf(M%4dM,*z);if(!(i%10))printff'n");}printf(M

60M);)main(){intaa[20]={9,3,0,4,1,2,5,6,8,10,7},n=ll;printft"

61

62Beforesorting%dnumbers:

63n,n);putarr(n,aa);fun(n,aa);printfi["

64Aftersorting%dnumbers:

65M,n);putarr(n,aa);解题答案:#include#includefun(intn,int*a)

66{inti,j,p,t;for(j=0;jo(P=j;/************************//************f^)und************/P=i;三、程序题:函数fim的功能是:将两个两位数的正整数a、b合并形成一个整数放在c中。合并的方式是:将a数的十位和个位数依次放在c数的个位和百位上,b数的十位和个位数依次放在c数的十位和千位上。例如,当a=45,例如时,调用该函数后,¢=2514.注意:部分源程序存在文件PROG1.C屮。数据文件IN.DAT中的数据不得修改。请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。给定源程序:

67#inckidevoidfun(inta,intb,long*c)(|main(){inta,b;longc;voidNONO();printfflnputa,b:");scanff%d,%d”,&a,&b);fun(a,b,&c);printff'Theresultis:%ld

68",c);NONO();voidNONO(){/・本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。*/

69inti,a,b;longc;rf=fopen("in.dat",nrM);wf=fopen(”〇ut.dat”,W);fbr(i=0;i<10;i-H-){fscanfifrf,,,%d,%d,\&a,&b);fun(a,b,&c);fprintfifwf,Ma=%d,b=%d,c=%ld

70M,a,b,c);fclose(rf);fclose(wf);解题答案:*c=(b%10)*1000+(a%10)*100+(b/l0)*10+a/10;

71201I年计算机等级考试二级C语言上机题库(4)一、填空题:程序通过定义学生结构体变量,存储了学生的学号、姓名和3门课的成绩。所有学生数据均以二进制方式输出到文件中。函数fun的功能是从形参filename所指的文件中读入学生数据,并按照学号从小到大排序后,再用二进制方式把排序后的学生数据输出到filename所指的文件中,覆盖原来的文件内容。请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。注意:源程序存放在考生文件夹下BLANK1.C中。不得增行或删行,也不得更改程序的结构!给定源程序:#include#defineN5typedefstructstudent{longsno;charname[10];floatscore[3];}STU;voidfun(char*filename){FILE*fp;inti,j;STUs[N],t;fp=fbpen(filename,_1_J;

72fread(s,sizeof(STU),N,fp);fclose(fp);/********************/if(s[i].sno2s[j].sno){t=s[i];s[i]=s[j];s[j]=t;}fp=fopen(filename,"wb");/**********^^und**********/二进制输出・/3_(s,sizeo出STU),N,fp);fclose(fp);main(){STUt[N]={{WOOS/ZhangSan11,95,80,88},{10003,"LiSi",85,70,78},{10002,nCaoKai",75,60,88},{lOOO^'TangFang'',90,82,87},{10001,"MaChao",91,92,77}},ss[N];inti,j;FILE*fp;fp=fopen(Mstudent.datn,"wbM);fwrite(t5sizeof(STU),5,fp);

73fclose(fp);prints"

74

75Theoriginaldata:

76

77u);for(j=0;jo{printf(TT

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

79M);}fun(nstudent.datM);print"へn'nThedataaftersorting:

80

81");fp=fopen(Mstudent.datM,"rb");frcad(ss,sizeofifSTU),5,fp);fclose(fp);for(j=0;j<>{printfi[n

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

83H);

84解题答案:/**********第一空**********/fp=fopen(filename,Mrbn);if(s[i].sno>s[j].sno)/**********第二月**********/fwrite(s,sizeofifSTU),N,fp);/・二进制输出・/二、改错题:给定程序MODI1.C中函数ftin的功能是:在字符串的最前端加入n个・号,形成新串,并且覆盖原串。注意:字符串的长度最长允许为79。请改正函数fun中指定部位的错误,使它能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!给定源程序:#include#includcvoidfun(chars[],intn)chara[80],*p;s=p;

85fbr(i=O;i{a[i]=*P;i++;/**********^Qund***********/while(*p++)a[i]=O;strcpy(s,a);main(){intn;chars[80];printf("

86Enterastring:");gets(s);printfi("

87Thestringヽ"%s\”

88”,s);printff’ヽnEntern(numberof*):");scanf(M%d",&n);fun(s,n);printf("

89Thestringafterinsert:ヽ"%s\”

90M,s);

91解题答案:/**********nd***********/P=s;/**********^Qund***********/while(*p++);三、程序题:请编写函数ftin,函数的功能是:统计各年龄段的人数。N个年龄通过调用随机函数获得,并放在主函数的age数组中;要求函数把0至9岁年龄段的人数放在d[0]中,把10至19岁年龄段的人数放在d[l]中,把20至29岁年龄段的人数放在d[2]中,其余依此类推,把100岁(含100)以上年龄的人数都放在d[10]中。结果在主函数中输出。注意:部分源程序在文件PR0G1.C中。请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。给定源程序:#include#defineN50#defineM11voidfun(int*a,int*b)

92doublemd(){statict=29,c=217,m=1024,r=0;r=(r*t+c)%m;rctum((double)r/m);main(){intage[N],i,d[M];voidNONO(intd[M]);fbr(i=O;i

printf("Theoriginaldata:

93H);fbr(i=O;iprintfC

94

95H);fun(age,d);fbr(i=0;i<10;i++)printf(,,%4d—%4d:%4d

96M,i*10,i*10+9,d[i]);printfif'Over100:%4d

97n,d[10]);NONO(d);}voidNONO(intd[M]){/・请在此函数内打开文件,输入测试数据,调用fun函数,输出数据,关闭文件。*/FILE*wf;inti;

98wf=fopen("out・dat"Jw");fbr(i=0;i<10;i-H-)巾rintRwf,"%4d—%4d:%4d

99",i*10,i*10+9,d[i]);fprintfifwf,HOver100:%4d

100n,d[10]);fclose(wf);}参考答案:voidfun(int*a,int*b){inti,j;fbr(i=0;i10)b[M-1]-H-;elseb[j]-H-;

101doublemd(){statict=29,c=217,m=1024,r=0;r=(r*t+c)%m;retum((double)r/m);}201I年计算机等级考试二级C语言上机题库(5)一、填空题:给定程序中已建立一个带有头结点的单向链表,链表中的各结点按结点数据域中的数据递增有序链接。函数fun的功能是:把形参x的值放入一个新结点并插入到链表中,插入后各结点数据域的值仍保持递增有序。请在程序的ド划线处填入正确的内容并把ド划线删除,使程序得出正确的结果。注意:源程序存放在考生文件夹的BLANK1.C中。不得增行或删行,也不得更改程序的结构!给定源程序:#include#include#defineN8typedefstructlist{intdata;structlist*next;

102}SLIST;voidfiin(SLIST*h,intx){SLIST*p,*q,*s;s=(SLIST*)malloc(sizeof(SLIST));/**********f^jund**********/s->data=1p=h->next;while(p!=NULL&&x>p->data){/**********^ound**********/q=一2.p=p->next;s->next=p;q->next=3SLIST*creatlist(int*a)

103{SLIST*h,*p,*q;inti;h=p=(SLIST*)malloc(sizeof(SLIST));fbr(i=O;i

{q=(SLIST*)malloc(sizeof(SLIST));q->data=a[i];p->next=q;p=q;}p->next=O;returnh;}voidoutlist(SLIST*h){SLIST*p;p=h->next;if(p==NULL)printff

104ThelistisNULL!也”);else{primR”

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

106M);

107})main(){SLIST*head;intx;inta[N]={l1,12,15,1849,22,25,29};head=creatlist(a);printfif'^nThelistbeforeinserting:

108M);outlist(head);printf("

109Enteranumber:");scanff%d”,&x);fun(head,x);printナヘnThelistafterinserting:

110',);outlist(head);}解题答案:/**********—.jA:*********/s->daa=x;/**********第一空**********/q=p;/**********=**********/q->next=s;

111二、改错题:给定程序MODI1.C中函数fbn的功能是:计算正整数num的各位上的数字之积。例如,若输入:252,则输出应该是:20。若输入:202,则输出应该是:〇。请改正程序中的错误,使它能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!给定源程序:#includelongfun(longnum)/************^Qund************/longk;do{k*=num%10;/************^Qund************/num\=10;}while(num);return(k);|

112main(){longn;printf("

113Pleaseenteranumber:n);scanグ%Id”,&n);printf("

114%ld

115",fiin(n));)解题答案:longk=l;num/=10;三、程序题:请编写ー个函数fun,它的功能是:计算n门课程的平均分,计算结果作为函数值返回。例如:若有5门课程的成绩是:90.5,72,80,61.5,55则函数的值为:71.80o注意:部分源程序存在文件PROG1.C中。请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。给定源程序:

116#includefloatfun(float*a,intn)(}main(){floatscore[30]={90.5,72,80,61.5,55},aver;voidNONO();aver=fiin(score,5);printflf'XnAveragescoreis:%5.2f

117H,aver);NONO();}voidNONO(){/・本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。*/FILE*fp,*wf;inti,j;floataver,score[5];fp=fbpen("in.dat“Jr");

118wf=fopen(”〇ut.dat",“w”);fbr(i=0;i<10;i-H-){for(j=0;j<5;j++)fscanf(mj%f,”,&score[jD;aver=fun(score,5);fprintfi(wf,M%5.2f

119M,aver);fclose(fp);fclose(wf);解题答案:(inti;floatave=0.0;fbr(i=0;iave=ave/n;returnave;}

120201I年计算机等级考试二级C语言上机题库(6)ー、填空题给定程序中已建立一个带有头结点的单向链表,在main函数中将多次调用fun函数,每调用一次fun函数,输出链表尾部结点中的数据,并释放该结点,使链表缩短。请在程序的卜.划线处填入正确的内容并把下划线删除,使程序得出正确的结果。注意:源程序存放在考生文件夹下BLANK1.C中。不得增行或删行,也不得更改程序的结构!

121给定源程序://include#include#defineN8typedcfstructlist{intdata;structlist*next;}SL1ST;voidfun(SLIST*p){SLIST*t,*s;t=p->next;s=p;while(t->next!=NULL){s=t;/********************/t=t->1

122/♦♦♦*******Cund**********/printff%d",—2_);s->next=NULL;/**********found**********/free(3);)SLIST*creatlist(int*a){SLIST*h,*p,*q;inti;h=p=(SLIST*)malloc(sizeof(SLIST));fdr(i=0;i

{q=(SLIST*)malloc(sizeof(SLIST));q->data=a[i];p->next=q;p=q;}p->next=0;returnh;voidoutlist(SLIST*h)

123{SLIST*p;p=h->next;if(p==NULL)printf(M

124ThelistisNULL!

125");else{printfi(,,

126HeadM);do{printff・>%d”p>data);p=p->next;}while(p!=NULL);printfC',->End

127n);}}main(){SLIST*head;inta[N]={ll,12,15,18,l9,22,25,29};head=creatlist(a);printfi[H

128Outputfromhead:

129M);outlist(head);printf("

130Outputfromtail:

131M);

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

133Outputfromheadagain:

134H);outlist(head);解题答案:/**********第一空**********/t=t->next;printf("%d”ナ,data);/**********第二月**********/free(t);二、改错题:给定程序MODH.C中函数fim的功能是:将字符串中的字符按逆序输出,但不改变字符串中的内容。

135例如,若字符串为abed,则应输出:dcba«请改正程序中的错误,使它能计算出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!给定源程序:#include/************************/fiin(chara){if(*a){fiin(a+l);printf(',%cH*a);main(){chars[10]-,abcdH;printff处理前字符串=%s

136处理后字符串=",s);ftin(s);printfiTW");

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

138printfif'Input1thstring:**);gets(a);printf("Input2thstring:**);gets(b);printfi('*%s

139**,fun(a,b));NONO();}voidNONO(){/・本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。*/FILE*fp,*wf;inti;chara[20],b[20];fp=fbpen("in.dat"」ピ);wf=fopcn(Hout.datH,MwH);fbr(i=0;i<10;i++){fscanf(fp,0%s%sM,a,b);mrintRwf,"%s

140”,fun(a,b));

141|fclose(fp);fclose(wf);参考答案:{inti;char*p=s,*q=t;fbr(i=0;*P&&*q;i++){p-H-;q++;|ifi(*p=0&&*q=0)returns;elsereturnt;}201I年计算机等级考试二级C语言上机题库(7)ー、填空题:给定程序中已建立一个带有头结点的单向链表,链表中的各结点按数据域递增有序链接。函数fun的功能是:删除链表中数据域值相同的结点,使之只保留一个。

142请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。注意:源程序存放在考生文件夹的BLANK1.C中。不得增行或删行,也不得更改程序的结构!给定源程序:#include#include#defineN8typedefstructlist{intdata;structlist*next;}SLIST;

143voidfun(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;/**********^)und**********/free(_1_);/**********^ound**********/else{p=q;

144q=q->_3SLIST*creatlist(int*a){SLIST*h,*p,*q;inti;h=p=(SLIST*)malloc(sizeof(SLIST));fbr(i=O;io{q=(SLIST*)malloc(sizeofi(SLIST));q->data=a[i];p->next=q;p=q;p->next=0;returnh;voidoutlist(SLIST*h)

145{SLIST*p;p=h->next;if(p==NULL)printfi(H

146ThelistisNULL!

147M);else{printff

148Head”);do{printff・>%d”p>data);p=p->next;}while(p!=NULL);printf("->End

149M);I}main(){SLIST*head;inta[N]={1,2,2,3,4,445};head=creatlist(a);printf("

150Thelistbeforedeleting:

151");outlist(head);fiin(head);printf("

152Thelistafterdeleting:

153");outlist(head);解题答案:free(q);/**********found**********/

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

155main()inta[N]={9,6,8,3,-l},i,m=5;printf("排序前的数据:");for(i=0;i

156");解题答案:P=i;三、程序题:请编写ー个函数fiin,它的功能是:求出1到m之间(含m)能被7或11整除的所有整数放在数组中,通过n返回这些数的个数。例如,若传送给m的值为50,则程序输出:711142122283335424449注意:部分源程序存在文件PROG1.C中。请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号屮填入你编写的若干语句。

157给定源程序:#inckide//defineM100voidfun(intm,int*a,int*n){}main(){intaa[M],n,k;voidNONO();fun(50,aa,&n);for(k=0;k

158M);NONO();voidNONO(){/・本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。*/

159FILE*fp,*wf;inti,n,j,k,aa[M],sum;fp=fbpen(Min.datM,Mr,');wf=fopen(,,out.dat,,,MwM);fbr(i=0;i<10;i++){fscanf(巾,”%d,",&j);fun(j,aa,&n);sum=0;fbr(k=0;k

160M,sum);)fclose(fp);fclose(wf);参考答案:*n=0;fbr(i=7;i<=m;i-H-)

161if((i%7=0)||(i%11=0))a[(*n)++]=i;|201I年计算机等级考试二级C语言上机题库(8)一、填空题:给定程序中,函数fun的功能是:在带有头结点的单向链表中,查找数据域中值为ch的结点。找到后通过函数值返冋该结点在链表中所处的顺序号;若不存在值为ch的结点,函数返回。值。请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。注意:源程序存放在考生文件夹的BLANK1.C中。不得增行或删行,也不得更改程序的结构!给定源程序:#includeinclude#defineN8typedefstructlist{intdata;structlist*ncxt;}SLIST;SLIST*creatlist(char*);

162voidoutlist(SLIST*);intfun(SLIST*h,charch){SLIST*p;intn=0;p=h->next;/**********^)und**********/while(p!=_1_){n++;/**********^^und**********/if(p->data=ch)return2:elsep=p->next;return0;main(){SLIST*head;intk;charch;chara[N]=fm?p;g・ソw?x;T,d};head=creatlist(a);outlist(head);

163printfif'Enteraletter:H);scanfi(”%c”,&ch);/**********^)und**********/k=ftm(_3_);if(k==0)printf(H

164Notfbund!

165M);elseprintff'Thesequencenumberis:%d

166n,k);SLIST*creatlist(char*a){SLIST*h,*p,*q;inti;h=p=(SLIST*)malloc(sizeof(SLIST));fbr(i=O;io{q=(SLIST*)malloc(sizeof(SLIST));q->data=a[i];p->next=q;p=q;}p->next=0;returnh;)

167voidoutlist(SLIST*h){SLIST*p;p=h->next;if(p==NULL)printfif^nThelistisNULL!

168H);else{printfV'

169Head”);do{printffし>%c”,p・>data);p=p->next;}while(p!=NULL);printfif"->End

170M);解题答案:/**********第・一空**********/while(p!=O)if(p->data==ch)returnn;/**********第二ら**********/

171k=fun(head,ch);二、改错题:给定程序M0DI1.C中函数fun的功能是:删除p所指字符串中的所有空白字符(包括制表符、冋车符及换行符)。输入字符串时用‘#‘结束输入。请改正程序中的错误,使它能输出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!给定源程序:#include#inckide//includefun(char*p){inti,t;charc[80];/************************/For(i=0,t=0;p[i];i-H-)if(!isspace(*(p+i)))c[t++]=p[i];/************************/c[t]="\0M;strcpy(p,c);

172main(){charc,s[80];inti=0;printff'Inputastring:**);c=getchar();while(c!-#*){s[i]=c;i-H-;c=gctchar();)s[i]=へ。’;fun(s);puts(s);解题答案:/************************/fbr(i=O,t=O;p[i];i++)三、程序题:请编写ー个函数fun,它的功能是:将ss所指字符串中所有下标为奇数位置上的字母转换为大写(若该位置上不是字母,则不转换)。例如,若输入"abc4EFg”,则应输出"aBc4EFg"。注意:部分源程序存在文件PROG1.C中。

173请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。给定源程序:#includc#includevoidfun(char*ss)()main(){chartt[81];voidNONO();printff'VnPleaseenteranstringwithin80characters:

174M);gets(tt);printf("

175

176Afterchanging,thestring

177\"%s\,n,,tt);fun(tt);printf("

178becomes

179\"%s\H

180M,tt);NONO();voidNONO(){/・本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。*/

181FILE*fp,*wf;chartt[81];inti;fp=fbpcn(nin.dat,7,r,*);wf=fbpen(Mout.daf,MwM);fbr(i=0;i<10;i-H-){fscanf(fp,M%sH,tt);fiin(tt);fprintfifwf,M%s

182n,tt);)fclose(fp);fclose(wf);参考答案:fbr(i=1;i=R&&ss[i]<=N)ss[i]-=32;

183}}201I年计算机等级考试二级C语言上机题库(9)ー、填空题:给定程序中,函数fbn的功能是:统计出带有头结点的单向链表中结点的个数,存放在形参n所指的存储单元中。请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。注意:源程序存放在考生文件夹的BLANK1.C中。不得增行或删行,也不得更改程序的结构!给定源程序:#include#include#defineN8typedefstructlist{intdata;structlist*next;

184}SLIST;SLIST*creatlist(int*a);voidoutlist(SLIST*);voidfun(SLIST*h,int*n){SLIST*p;/**********f^jund**********/1=0;p=h->next;while(p){(*n)++;/**********^ound**********/P=P->_2一;main(){SLIST*head;

185inta[N]={12,87,45,32,91,16,20,48},num;hcad=creatlist(a);outlist(head);/********************/fiin(3,&num);printfi("

186number=%d

187n,num);SLIST*creatlist(inta[]){SLIST*h,*p,*q;inti;h=p=(SLIST*)malloc(sizeof(SLIST));for(i=0;io{q=(SLIST*)malloc(sizeofi(SLIST));q->data=a[i];p->next=q;p=q;p->next=0;returnh;voidoutlist(SLIST*h){SLIST*p;

188p=h->next;if(p==NULL)printffThelistisNULL!

189M);else{printftM

190HeadM);do{printfi(,,->%d,,,p->data);p=p->next;}while(p!=NULL);printf("->End

191M);))解题答案:*n=0;/**********•**********/p=p->next;/**********第二空**********/fun(head,&num);

192二、改错题:给定程序M0DI1.C中函数firn的功能是:求出s所指字符串中最后一次出现的t所指子字符串的地址,通过函数值返回,在主函数中输出从此地址开始的字符串;若未找到,则函数值为NULL。例如,当字符串中的内容为:"abcdabfabcdx",t中的内容为:"ab"时,输出结果应是:abcdx.当字符串中的内容为:"abcdabfabcdx",t中的内容为:"abd"时,则程序输出未找到信息:notbefound!〇请改正程序中的错误,使它能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!给定源程序:#include#includechar*fun(char*s,char*t)char*p,*r,*a;

193/************************/a=Null;while(*s){p=s;rwhile(*r)1************f^)und************/if(r=p){rH-;p++;}elsebreak;if(*r=へ〇')a=s;s++;returna;main()

194chars[100],t[100],*p;printflf^nPlcaseenterstringS:");scanf(H%sM,s);printffヘnPleaseentersubstringt:**);scanff'%s",t);P=ftin(s,t);if(p)printf('へnTheresultis:%s

195H,p);elseprintffへnNotfound!

196");解题答案:a=NULL;/************d************/******************************************三、程序题:函数fun的功能是:将s所指字符串中除了下标为偶数、同时ASCH值也为偶数的字符外,其余的全都删除;串中剩余字符所形成的一个新串放在t所指的数组中。例如,若s所指字符串中的内容为:"ABCDEFG123456"I其中字符A的ASCII码值为奇数,因此应当删除;其中字符B的ASCII码值为偶数,但在数组中的下标为奇数,因此也应当删除;而字符2的ASCH码值为偶数,所在数组中的下标也为偶数,因此不应当删除,其它依此类推。最后t所指的数组中的内容应是:"246"〇

197注意:部分源程序存在文件PROG1.C中。请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。给定源程序:#include//includevoidfun(char*s,chart[]){|main(){chars[100],t[100];voidNONO();printfi("

198PleaseenterstringS:H);scanff'%s",s);fun(s,t);

199printflf'XnTheresultis:%s

200f,,t);NONO();}voidNONO(){/・本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。*/chars[100],t[100];FILE*rf,*wf;inti;rf=fopen("m.dat",V);wf=fbpen(,,out.dat,,,MwM);fbr(i=0;i<10;i-H-){fscanf(rf,M%sH,s);fun(s,t);fprintfi(wf,,,%s

201,t,t);fclose(rf);fclose(wf);参考答案:

202voidfiin(char*s,chart[])inti,j=0;fbr(i=0;i

203#inckide//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

204P=P->_2一;}returns;|main(){SLIST*head;inta[N]={12,87,45,32,91,16,20,48};head=creatlist(a);outlist(head);/**********^)und**********/printf(”

205sum=%d

206”,fun(_3_));)SLIST*creatlist(inta[]){SLIST*h,*p,*q;inti;h=p=(SLIST*)malloc(sizeof(SLIST));fbr(i=0;i

{q=(SLIST*)malloc(sizeofi(SLIST));q->data=a[i];p->next=q;p=q;

207p->next=O;returnh;voidoutlist(SLIST*h){SLIST*p;p=h->next;if(p==NULL)printf(MThelistisNULL!

208M);else{printff

209Headり;do{printザL〉%d",p->data);p=p->next;}while(p!=NULL);printfi["->End

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

211/**********~**********/p=p->next;/**********4?^—・ジく**********Iprintf(,,

212sum=%d

213M,fun(head));二、改错题:给定程序MODI1.C中函数fun的功能是:将s所指字符串屮出现的与tl所指字符串相同的子串全部替换成t2所指字符串,所形成的新串放在w所指的数组中。在此处,要求tl和t2所指字符串的长度相同。例如,当s所指字符串中的内容为:"abcdabfab",tl所指子串中的内容为:"ab",t2所指子串中的内容为:"99"时,结果在w所指的数组中的内容应为:"99cd99f99"。请改正程序中的错误,使它能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!给定源程序:#include#inckidevoidfun(char*s,char*tl,char*t2,char*w)

214strcpy(w,s);while(*w){p=w;r=tl;/************************/while(r)if(*r=*p){rH-;p++;}elsebreak;if(*r==へ。'){a=w;r=t2;while(*r){/************^Qund************/♦a=*r;a-H-;r-H-w+=strlen(t2);elsew-H-;})

215main(){chars[100],tl[100],t2[100],w[100];printf("

216PleaseenterstringS:M);scanfi(”%s”,s);printf("

217Pleaseentersubstringtl:H);scanf(H%sn,tl);prints"

218Pleaseentersubstringt2:n);scanff'%s”,t2);if(strlen(tl)==strlen(t2)){fun(s,tl,t2,w);printffWTheresultis:%s

219M,w);elseprintfC'Error:strlen(tl)!=strlen(t2)

220M);解题答案:/************************/while(*r)/************************/*a=*r;a-H-;r-H-;

221三、程序题:函数fun的功能是:将s所指字符串中下标为偶数的字符删除,串中剩余字符形成的新串放在t所指数组中。例如,当s所指字符串中的内容为:"ABCDEFGHIJK”,在t所指数组中的内容应是:"BDFHJ"。注意:部分源程序存在文件PROG1.C中。请勿改动主函数main和其它函数中的任何内容,仅在函数ftm的花括号中填入你编写的若干语句。给定源程序:#include#inckidevoidfun(char*s,chart[])main()chars[100],t[100];voidNONO();printf("

222PleaseenterstringS:M);scanf(M%sM,s);fun(s,t);printff

223Theresultis:%s

224”,t);NONO();voidNONO()

225{/・本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。*/chars[100],t[100];FILE*rf,*wf;inti;rf=fopen("in.dat,,;,rn);

226wf=fopen(Hout.dat,,,MwM);fbr(i=0;i<10;i++){fscanf(rf,M%sM,s);fun(s,t);fprintfi(wf,H%s

227M,t);)fclose(rf);fclose(wf);}参考答案:voidfiin(char*s,chart[]){inti,j=0;fbr(i=1;i

228201I年计算机等级考试二级C语言上机题库(11)ー、填空题人员的记录由编号和出生年、月、H组成,N名人员的数据已在主函数中存入结构体数组std中,且编号唯一。函数fun的功能是:找出指定编号人员的数据,作为函数值返回,由主函数输出,若指定编号不存在,返回数据中的编号为空串。请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。注意:源程序存放在考生文件夹的BLANK1.C中。不得增行或删行,也不得更改程序的结构!给定源程序:#include#include#defineN8typedefstruct{charnum[10];intyear,month,day;}STU;fun(STU*std,char*num){inti;STUa={””,9999,99,99};

229for(i=0;i

/**********found**********/ifi(strcmp(2,num)==0)/**********f^jund**********/returna;}main(){STUstd[N]={{”11111ド,1984,2,15},{“222222”,1983,9,21},「333333”,1984,9,1},{“444444”,1983715},{“555555”,1984,9,28},{M666666H,1983,11,15},{“777777”,1983,6,22},{“888888”,1984,8,19}};STUp;charn[10]="666666”;p=fiin(std,n);if(p.num[0]=0)printf("

230Notfound!

231H);else{printグWSucceed!

232ツ;printf("%s%d-%d-%d

233",p.num,p.year,p.month,p.day);

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

235#inckide//includeintfun(char*s,char*t)intn;char*p,*r;n=0;while(*s){p=s;while(*r)if(*r=*p){/************f^Qund************/r-H-;p-H-elsebreak;/************f^und************/if(r=へ0')

236n-H-;returnn;main()(chars[100],t[100];intm;printf("

237PleaseenterstringS:M);scanf("%s”,s);printf("

238Pleaseentersubstringビリ;scanf(,,%sM,t);m=fiin(s,t);printff

239Theresultis:m=%d

240M,m);解题答案:r++;p-H-;i出・テ=,〇')

241三、程序题:函数fim的功能是:将s所指字符串中ASCH值为偶数的字符删除,串中剩余字符形成一个新串放在t所指的数组中。例如,若s所指字符串中的内容为:"ABCDEFG12345",其中字符B的ASCII码值为偶数字符2的ASCH码值为偶数、…都应当删除,其它依此类推。最后t所指的数组中的内容应是:"ACEG135"〇注意:部分源程序存在文件PROG1.C中。请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。给定源程序:#include#includevoidfun(char*s,chart[])main()chars[100],t[100];printfi(*'

242PleaseenterstringS:M);scanR"%s",s);fun(s,t);printf("

243Theresultis:%s

244”,t);

245NONO();)NONO(){/・本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。*/chars[100],t[100];FILE*rf,*wf;inti;rf=fbpen(”in.daピJr”);wf=fopen("〇ut.dat",“w”);fbr(i=0;i<10;i-H-){fscanf(rf,M%sM,s);fun(s,t);fprintf{wf,M%s

246M,t);fclose(rf);fclose(wf);参考答案:

247voidfun(char*s,chart[])inti,j=0;for(i=0;i

248intyear,month,day;}STU;intfun(STU*std,STU*k,intyear){inti,n=O;for(i=0;i

ifi(1==year)k[n++]=_2./♦♦♦*******Cund**********/return(main(){STUstd[N]={{1,1984,2,15},{2,1983,9,21},{3,1984,9,1},{4,1983,7,15},{5,1985,9,28},{6,1982,11,15},{7,1982,6,22},{8,1984,8,19}};STUk[N];inti,n,year;printflf'Enterayear:M);scanff'%d”,&year);n=fiin(std,k,year);

249if(n==O)printf("

250Nopersonwasbomin%d

251",year);else{printR"

252Thesepersonswerebomin%d

253”,year);fbr(i=O;i

printff'%d%d-%d-%d

254H,k[i].num,k[i].year,k[i].month,k[i].day);}解题答案:/*********—**********/ifl(std[i].year==year)k[n-H-]=std[i];/**********第二空**********/return(n);******************************************二、改错题:给定程序MODI1.C的功能是:读入•个整数k(2

255给定源程序:#includeIsPrime(intn);/・定义函数・/{inti,m;m=1;for(i=2;i

256

257Theprimefactor(s)of%dis(are):M,k);for(j=2;j<=k;j++)

258ifi((!(k%j))&&(IsPrime(j)))printfi(H

259%4dM,j);printff'n”);解题答案:/************************/IsPrime(intn)/・定义函数・//************^Qund************/三、程序题:一知学生的记录由学号和学习成绩构成,N名学生的数据己存入结构体数组a中。请编写函数fun,函数的功能是:找出成绩最高的学生记录,通过形参指针传回主函数(规定只有一个最高分)。已给出函数的首部,请完成该函数。注意:部分源程序存在文件PR0G1.C中。请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。给定源程序:#include#include#defineN10

260typedefstructss{charnum[10];ints;}STU;fun(STUa[],STU*s)main(){STUa[N]={{"A0じ81},{“A02”,89},{“A03”,66},{"A04M,87},{HA05H,77},{MA06,,,90},{,,A07M,79},{MA08,',61},{“A09”,80},{“A10*71}},m;inti;printf("*****Theoriginaldata*****

261H);for(i=0;i

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

263H);printf("Thetop:%s,%d

264",m.num,m.s);NONO();NONO(){/・本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。*/

265FILE*rf,*wf;STUa[N],m;inti;rf=fbpenC'in.dat'W);wf=fopen(”〇ut.daじ"w”);fbr(i=0;i<10;i++)fscanfi(rf,**%s%dM,a[i].num,&a[i].s);fun(a,&m);fprintf(wf,"Thetop:%s,%d

266",m.num,m.s);fclose(rf);fclose(wf);参考答案:fun(STUa[],STU*s){inti,max=a[0].s,j=0;fbr(i=1;i

267*s=a[j];}2011年计算机等级考试二级C语言上机题库(13)ー、填空题:给定程序通过定义并赋初值的方式,利用结构体变量存储了一名学生的学号、姓名和3门课的成绩。函数fim的功能是将该学生的各科成绩都乘以ー个系数ao请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。注意:源程序存放在考生文件夹的BLANK1.C中。不得增行或删行,也不得更改程序的结构!给定源程序:#includetypedefstruct{intnum;charname[9];floatscorc[3];

268}STU;voidshow(STUtt){inti;printf("%d%s:M,tt.num,tt.name);fbr(i=O;i<3;i++)printf("%5.1f\tt.score[i]);/**********^)und**********/voidmodify(1*ss,floata){inti;fbr(i=O;i<3;i++)ss->2*=a;

269{STUstd={1,nZhanghua\76.5,78.0,82.0};floata;printfi[*'

270Theoriginalnumberandnameandscores:

271H);show(std);printfC'Xnlnputanumber:”);scanff'%俨,&a);/**********f^jund**********/modify(3,a);prin氓”、nAresultofmodifying:、n");show(std);解题答案:/**********第—,空**********/voidmodify(STU*ss,floata)ss->score[i]*=a;/**********=jA:**********/modify(&std,a);

272二、改错题:给定程序MODI1.C中函数fun的功能是:求k!(k<13),所求阶乘的值作为函数值返冋。例如:若k=10,则应输出:3628800o请改正程序中的错误,使它能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!给定源程序:#includelongfun(intk)ifk>0return(k*fun(k-l));elseif(k=0)returnIL;main(){intk=10;printfC%d!=%ld

273",k,fun(k));解题答案:/************f^)und************/if(k>0)

274/************************/elseif(k==O)三、程序题:程序定义了NxN的二维数组,并在主函数中自动赋值。请编写函数ftm(inta[][N],intn),函数的功能是:使数组左下三角元素中的值乘以n〇例如:若n的值为3,a数组中的值为=I238I则返回主程序后a数组中的值应为|698||456||121518|注意:部分源程序存在文件PROG1.C中。请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号屮填入你编写的若干语句。给定源程序:#include#inckide//defineN5voidfun(inta[][N],intn)(}NONO()

275{/・本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。*/FILE*rf,*wf;inti,j,n,a[5][5];rf=fbpen("in.daロT);wf=fopen(nout.datM,W);fbr(i=0;i<5;i++)for(j=0;j<5;j-H-)fscanRrf,"%dゝ&a[i][j]);fscanf(rf,n%d",&n);fiin(a,n);fbr(i=0;i<5;i++){for(j=0;j<5;j-H-)fprintf(wf,M%4dw,a[i][j]);fprintf(wf,H

276M);}fclose(rf);fclose(wf);|

277main(){inta[N][N],n,i,j;printグ*****Thearray*****

278");fbr(i=0;i

{for(j=0;j<>{a[i][j]=rand()%10;printff%4d”,a口皿);}printffW”);don=rand()%10;while(n>=3);printfif'n=%4d

279n,n);fiin(a,n);printf('******THERESULT*****

280M);for(i=0;i

{for(j=0;j<>printf("

281w);)N0N0();

282}参考答案:intfun(inta[][N],intn){inti,j;fbr(i=0;i

283}PERSON;/********************/voidftin(PERSON_1_){/********************/_2_temp;if(std[O].num>std[1].num){temp=std[O];std[O]=std[l];std[l]=temp;}if(std[0].num>std[2].num){temp=std[O];std[0]=std[2];std[2]=temp;}if(std[l].num>std[2].num){temp=std[l];std[l]=std[2];std[2]=temp;}|main(){PERSONstd[]={5JZhanghu”,2JWangLi”,6,“LinMin”);inti;

284fun(3);printf("

285Theresultis:

286H);fbr(i=O;i<3;i++)printf("%d,%s

287H,std[i].num,std[i].name);解题答案:/**********第一空**********/voidfiin(PERSON*std)/**********~**********/PERSONtemp;/**********4?^—・ジく**********jfun(std);二、改错题:给定程序MODI1.C中函数ftm的功能是:将m(lSmWO)个字符串连接起来,组成一个新串,放入pt所指存储区中。例如:把3个串:"abc","CD","EF"连接起来,结果是"abcCDEF"。请改正程序中的错误,使它能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!

288给定源程序:#include#includevoidfun(charstr[][10],intm,char*pt)

289Intk,q,i;for(k=0;k

290Pleaseenterm:M);

291scanf(M%dM,&m);gets(s[O]);printflf^nPleaseenter%dstring:

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

293Theresultis:%s

294M,p);解题答案:/************************/intk,q,i;pt[i]=str[k][i];三.、程序题:程序定义了NxN的二维数组,并在主函数中自动赋值。请编写函数fun(inta[][N]),函数的功能是:使数组左下三角元素中的值全部置成〇。例如:a数组中的值为|197||097|a=|238I则返回主程序后a数组中的值应为100811456110001注意:部分源程序存在文件PROG1.C中。

295请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号屮填入你编写的若干语句。给定源程序:#include#includc#defineN5voidfun(inta[][N]){}NONO(){/・本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。*/FILE*rf,*wf;inti,j,a[5][5];rf=fbpen(,,in.datM;,rH);wf=fopen(nout.dat,,;,wM);

296for(j=0;j<5;j++)fscanf(rf,M%dn,&a[i][j]);fun(a);for(i=0;i<5;i++){for0=0;j<5;j++)巾rin氓wf,“%4d”,a[i][j]);fprintfifwf,M

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

298M);for(i=0;i

{for(j=0;j<>{a[i][j]=rand()%10;printff%4d",a[i]北);}fun(a);

299printf("THERESULTS");for(i=0;i

{for(j=0;j<>printf("

300");INONO();参考答案:intfun(inta[][N]){inti,j;fbr(i=0;i

301不得增行或删行,也不得更改程序的结构!给定源程序:#includetypedefstnict{charname[10];intage;}STD;STDfun(STDstd[],intn){STDmax;inti;/・キキ・东・东・辛・必und******歩***/max=1fbr(i=l;i

/♦♦♦*******Cund**********/if(max.age<2)max=std[i];returnmax;main()

302{STDstd[5]={,,aaan,17,Mbbbn,16,"cccH,18,Mdddn,17,"eeeM,15};STDmax;max=fun(std,5);printfi("

303Theresult:

304H);printfif'XnName:%s,Age:%d

305M,3,max.age);解题答案:max=*std;/**********•**********/ififmax.age/**********第二空**********/printfi[*'

306Name:%s.Age:%d

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

308//includevoidfiin(inta,b){intt;/********************/t=b;b=amain(){inta,b;printf("Entera,b:H);scanf("%d,%d”,&a,&b);fun(&a,&b);printf("a=%db=%d

309",a,b);解题答案:#include/********************/voidfun(int*a,int*b)t=*b;*b=*a;*a=t;

310三、程序题:请编ー个函数voidfun(inttt[M][N],intpp[N]),tt指向ー个M行N列的二维数组,求出ニ维数组每列中最小元素,并依次放入pp所指ー维数组中。二维数组中的数已在主函数中赋ア。注意:部分源程序存在文件PROG1.C中。请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。给定源程序:#includc#defineM3#defineN4voidfun(inttt[M][N],intpp[N]){}NONO(){/・请在此函数内打开文件,输入测试数据,调用fun函数,输出数据,关闭文件。*/inti,j,k,m,t[M][N],p[N];FILE*rf,*wf;rf=fbpen("in.dat”,ゲ);wf=fdpen(Mout.datH,MwM);

311fbr(m=0;m<10;m++){fbr(i=O;iofor(j=O;jofscanf(rf,n%6dH,&t[i][j]);fun(t,p);for(k=0;k

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

313");for(i=0;io

314for(j=0;joprintf("%6d",t[i][j]);fun(t,p);printf("

315Theresultis:

316M);fbr(k=0;k

317w);NONO();参考答案:voidfun(inttt[M][N],intpp[N]){inti,j,min,k;fbr(i=0;itt[j][i]){pp[i]=tt[k][i];

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

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

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