《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;
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;i
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 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;i
此文档下载收益归作者所有