版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
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+“);/**********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:\n\nM);for(j=0;jo{printf(M\nNo:%ldName:%-8sScores:H,ss[j].sno,ss[j].name);for(i=0;i<3;i-H-)printf("%6.2f”,ss[j].score[i]);printf("\nM);|fun("student.dat",n);printfi("\nThedataaftermodifing:\n\n");fp=fopen("student.dat","rb");fread(ss,sizeofifSTU),N,fp);fclose(fp);for(j=0;jo{printf("\nNo:%ldName:%-8sScores:",ss[j].sno,ss|j].name);for(i=0;i<3;i++)printf("%6.2fM,ss[j].score[i]);printfC'\nH);解题答案:/**********第—•空**********/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;p=(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;p->next=s;p=p->next;/*********************/returnp;outlink(NODE*h){NODE*p;p=h->next;printf(M\n\nTHELIST:\n\nHEADM);while(p)p=p->next;printff'n”);{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)main(){charline[N];intnum=0;voidNONO();printfif'Enterastring:\nM);gets(line);num=fun(line);printff'Thenumberofwordis:%d\n\n",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,*\n*);if(p!=NULL)*p=0;num=fun(line);fprintfl(wf,H%d\nM,num);|fclose(rf);fclose(wf);)参考答案:intfim(char*s){intk=1;while(*s){ifi[*s=**)k++;returnk;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){printグopenfail!!\nM);exit(O);}WriteText(fp);fclose(fp);if((fp=fdpen(,,myfile4.txt",,,r,,))=NULL){printffopenfail!!\nH);exit(O);)ReadText(fp);fclose(fp);voidWriteText(FILE 1 ){charstr[81];printfi("\nEnterstringwith-1toend:\nM);gets(str);while(strcmp(str,"-ln)!=0){fputs( 2 ,fw);fputs(H\nM,fw);gets(str);voidReadText(FILE*fr){charstr[81];printf("\nReadfileandoutputtoscreen:\n");fgets(str,81,fr);while(!feofi(fr)){printff%s”,3 );fgets(str,81,fr);解题答案:/********** —.jAr**********/voidWriteText(FILE*fw)/**********第一空**********/fputs(str,fw);fputs("\n",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){s=s/100;*t=s%10*si+*t;/************************/si=si*100;main(){longs,t;printf("\nPleaseenters:H);scanfifn%ldH,&s);fun(s,&t);printf("Theresultis:%ld\n",t);解题答案:/************^Qund************/voidfiin(longs,long*t)/************************/sl=sl*10;三、程序题:函数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\nM,c);NONO();voidNONO(){/・本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。*/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\nM,a,b,c);fclose(rf);fclose(wf);}解题答案:{*c=(b/10)*l000+(a%10)*100+(b%10)*10+(a/10);|201I年计算机等级考试二级C语言上机题库(3)ー、填空题:给定程序中,函数fun的功能是:将自然数1〜10以及它们的平方根写到名为myfile3.txt的文本文件中,然后再顺序读出显示在屏幕上。请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。注意:源程序存放在考牛.文件夹下的BLANK1.C中。不得增行或删行,也不得更改程序的结构!给定源程序:#include#includeintfim(char*fiiame){FILE*fp;inti,n;floatx;if((fp=fbpen(fname,HwM))=NULL)return0;/********************/fprintfif 1 ,M%d%f\n**,i,sqrt((double)i));printfC\nSucceed!!\nn);/**********f^jund**********/printf("\nThedatainfile:\nM);/**********^)und**********/if((fp=fbpen( 3 ,"r"))=NULL)return0;fscanf(fp,M%d%f,,&n,&x);while(!feof(fp)){priロ氓"%d%f\n",n,x);fscanR中,”%d%F,&n,&x);}fclose(fp);main(){charfiiame[]=Mmyfile3.txtM;fun(fhame);解题答案:fprintfi(fp,"%d%f\nM,i,sqrt((double)i));printfT\nSucceed!!\n”);fclose(fp);/**********第二月**********/if((fp=fopen(fhame,V))=NULL)二、改错题:给定程序MODILC中firn函数的功能是:将n个无序整数从小到大排序。请改正程序中的错误,使它能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!给定源程序:#include#includefun(intn,int*a){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;}putarr(intn,int*z){inti;for(i=1;i<=n;i++,z++){printf(M%4dM,*z);if(!(i%10))printff'n");}printf(M\nM);)main(){intaa[20]={9,3,0,4,1,2,5,6,8,10,7},n=ll;printft"\n\nBeforesorting%dnumbers:\nn,n);putarr(n,aa);fun(n,aa);printfi["\nAftersorting%dnumbers:\nM,n);putarr(n,aa);解题答案:#include#includefun(intn,int*a){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的花括号中填入你编写的若干语句。给定源程序:#inckidevoidfun(inta,intb,long*c)(|main(){inta,b;longc;voidNONO();printfflnputa,b:");scanff%d,%d”,&a,&b);fun(a,b,&c);printff'Theresultis:%ld\n",c);NONO();voidNONO(){/・本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。*/inti,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\nM,a,b,c);fclose(rf);fclose(wf);解题答案:*c=(b%10)*1000+(a%10)*100+(b/l0)*10+a/10;201I年计算机等级考试二级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;fread(s,sizeof(STU),N,fp);fclose(fp);/********************/if(s[i].sno 2 s[j].sno){t=s[i];s[i]=s[j];s[j]=t;}fp=fopen(filename,"wb");/**********^^und**********/二进制输出・/3_(s,sizeo二进制输出・/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);fclose(fp);prints"\n\nTheoriginaldata:\n\nu);for(j=0;jo{printf(TT\nNo:%ldName:%-8sScores:M,t[j].sno,t[j].name);for(i=0;i<3;i++)printf(H%6.2fn,t[j].score[i]);printf("\nM);}fun(nstudent.datM);print"へn'nThedataaftersorting:\n\n");fp=fopen(Mstudent.datM,"rb");frcad(ss,sizeofifSTU),5,fp);fclose(fp);for(j=0;j<>{printfi[n\nNo:%ldName:%-8sScores:M,ss[j].sno,ss[j].name);for(i=0;i<3;i++)printf("%6.2fss[j].score[i]);printf("\nH);解题答案:/**********第一空**********/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;fbr(i=O;i<a[i]=M*"i++)>{a[i]=*P;i++;/**********^Qund***********/while(*p++)a[i]=O;strcpy(s,a);main(){intn;chars[80];printf("\nEnterastring:");gets(s);printfi("\nThestringヽ"%s\”\n”,s);printff’ヽnEntern(numberof*):");scanf(M%d",&n);fun(s,n);printf("\nThestringafterinsert:ヽ"%s\”\nM,s);解题答案:/********** 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)doublemd(){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<p>printf("Theoriginaldata:\nH);fbr(i=O;iprintfC\n\nH);fun(age,d);fbr(i=0;i<10;i++)printf(,,%4d—%4d:%4d\nM,i*10,i*10+9,d[i]);printfif'Over100:%4d\nn,d[10]);NONO(d);}voidNONO(intd[M]){/・请在此函数内打开文件,输入测试数据,调用fun函数,输出数据,关闭文件。*/FILE*wf;inti;wf=fopen("out・dat"Jw");fbr(i=0;i<10;i-H-)巾rintRwf,"%4d—%4d:%4d\n",i*10,i*10+9,d[i]);fprintfifwf,HOver100:%4d\nn,d[10]);fclose(wf);}参考答案:voidfun(int*a,int*b){inti,j;fbr(i=0;i<M;i++)b[i]=0;for(i=0;i<N;i-H-){j=a[i]/10;if(j>10)b[M-1]-H-;elseb[j]-H-;doublemd(){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;}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){SLIST*h,*p,*q;inti;h=p=(SLIST*)malloc(sizeof(SLIST));fbr(i=O;i<p>{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\nThelistisNULL!也”);else{primR”\nHead”);do{printf(n->%d",p->data);p=p->next;}while(p!=NULL);printf("->End\nM);})main(){SLIST*head;intx;inta[N]={l1,12,15,1849,22,25,29};head=creatlist(a);printfif'^nThelistbeforeinserting:\nM);outlist(head);printf("\nEnteranumber:");scanff%d”,&x);fun(head,x);printナヘnThelistafterinserting:\n',);outlist(head);}解题答案:/********** —.jA:*********/s->daa=x;/**********第一空**********/q=p;/**********=**********/q->next=s;二、改错题:给定程序MODI1.C中函数fbn的功能是:计算正整数num的各位上的数字之积。例如,若输入:252,则输出应该是:20。若输入:202,则输出应该是:〇。请改正程序中的错误,使它能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!给定源程序:#includelongfun(longnum)/************^Qund************/longk;do{k*=num%10;/************^Qund************/num\=10;}while(num);return(k);|main(){longn;printf("\nPleaseenteranumber:n);scanグ%Id”,&n);printf("\n%ld\n",fiin(n));)解题答案:longk=l;num/=10;三、程序题:请编写ー个函数fun,它的功能是:计算n门课程的平均分,计算结果作为函数值返回。例如:若有5门课程的成绩是:90.5,72,80,61.5,55则函数的值为:71.80o注意:部分源程序存在文件PROG1.C中。请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。给定源程序:#includefloatfun(float*a,intn)(}main(){floatscore[30]={90.5,72,80,61.5,55},aver;voidNONO();aver=fiin(score,5);printflf'XnAveragescoreis:%5.2f\nH,aver);NONO();}voidNONO(){/・本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。*/FILE*fp,*wf;inti,j;floataver,score[5];fp=fbpen("in.dat“Jr");wf=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\nM,aver);fclose(fp);fclose(wf);解题答案:(inti;floatave=0.0;fbr(i=0;iave=ave/n;returnave;}201I年计算机等级考试二级C语言上机题库(6)ー、填空题给定程序中已建立一个带有头结点的单向链表,在main函数中将多次调用fun函数,每调用一次fun函数,输出链表尾部结点中的数据,并释放该结点,使链表缩短。请在程序的卜.划线处填入正确的内容并把下划线删除,使程序得出正确的结果。注意:源程序存放在考生文件夹下BLANK1.C中。不得增行或删行,也不得更改程序的结构!给定源程序://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/♦♦♦*******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<p>{q=(SLIST*)malloc(sizeof(SLIST));q->data=a[i];p->next=q;p=q;}p->next=0;returnh;voidoutlist(SLIST*h){SLIST*p;p=h->next;if(p==NULL)printf(M\nThelistisNULL!\n");else{printfi(,,\nHeadM);do{printff・>%d”p>data);p=p->next;}while(p!=NULL);printfC',->End\nn);}}main(){SLIST*head;inta[N]={ll,12,15,18,l9,22,25,29};head=creatlist(a);printfi[H\nOutputfromhead:\nM);outlist(head);printf("\nOutputfromtail:\nM);while(head->next!=NULL){fun(hcad);printf("\nOutputfromheadagain:\nH);outlist(head);解题答案:/**********第一空**********/t=t->next;printf("%d”ナ,data);/**********第二月**********/free(t);二、改错题:给定程序MODH.C中函数fim的功能是:将字符串中的字符按逆序输出,但不改变字符串中的内容。例如,若字符串为abed,则应输出:dcba«请改正程序中的错误,使它能计算出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!给定源程序:#include/************************/fiin(chara){if(*a){fiin(a+l);printf(',%cH*a);main(){chars[10]-,abcdH;printff处理前字符串=%s\n处理后字符串=",s);ftin(s);printfiTW");解题答案:/************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();printfif'Input1thstring:**);gets(a);printf("Input2thstring:**);gets(b);printfi('*%s\n**,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\n”,fun(a,b));|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的功能是:删除链表中数据域值相同的结点,使之只保留一个。请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。注意:源程序存放在考生文件夹的BLANK1.C中。不得增行或删行,也不得更改程序的结构!给定源程序:#include#include#defineN8typedefstructlist{intdata;structlist*next;}SLIST;voidfun(SLIST*h){SLIST*p,*q;p=h->next;if(p!=NULL){q=p->next;while(q!=NULL){if(p->data=q->data){p->next=q->next;/**********^)und**********/free(_1_);/**********^ound**********/else{p=q;q=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){SLIST*p;p=h->next;if(p==NULL)printfi(H\nThelistisNULL!\nM);else{printff\nHead”);do{printff・>%d”p>data);p=p->next;}while(p!=NULL);printf("->End\nM);I}main(){SLIST*head;inta[N]={1,2,2,3,4,445};head=creatlist(a);printf("\nThelistbeforedeleting:\n");outlist(head);fiin(head);printf("\nThelistafterdeleting:\n");outlist(head);解题答案:free(q);/**********found**********/q=p->next;/**********f^jund**********/q=q->next;二、改错题:给定程序M0DI1.C中函数fun的功能是:用选择法对数组中的n个元素按从小到大的顺序进行排序。请修改程序中的错误,使它能得出正确的结果。注意:不要改动main函数,不得增行和删行,也不得更改程序的结构!给定源程序:#include#defineN20voidfun(inta[],intn){inti,j,t,p;for(j=0J<n-1u++){for(i=j;i<n;i++)/************************/P=J;t=a[p];a[p]=a[j];a[j]=main()inta[N]={9,6,8,3,-l},i,m=5;printf("排序前的数据:");for(i=0;i<m;i++)printf(M%dM,a[i]);primff'n");printf("排序后的数据:");fbr(i=0;i<m;i++)printff'%d",a[i]);printf("\n");解题答案:P=i;三、程序题:请编写ー个函数fiin,它的功能是:求出1到m之间(含m)能被7或11整除的所有整数放在数组中,通过n返回这些数的个数。例如,若传送给m的值为50,则程序输出:711142122283335424449注意:部分源程序存在文件PROG1.C中。请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号屮填入你编写的若干语句。给定源程序:#inckide//defineM100voidfun(intm,int*a,int*n){}main(){intaa[M],n,k;voidNONO();fun(50,aa,&n);for(k=0;k<n;k卄)if((k+l)%20=0)printff'n”);elseprintグ%4d”,aa[k]);printfC'\nM);NONO();voidNONO(){/・本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。*/FILE*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<n;k-H-)sum+=aa[k];fprintfifwf,H%d\nM,sum);)fclose(fp);fclose(wf);参考答案:*n=0;fbr(i=7;i<=m;i-H-)if((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*);voidoutlist(SLIST*);intfun(SLIST*h,charch){SLIST*p;intn=0;p=h->next;/**********^)und**********/while(p!=_1_){n++;/**********^^und**********/if(p->data=ch)return 2 :elsep=p->next;return0;main(){SLIST*head;intk;charch;chara[N]=fm?p;g・ソw?x;T,d};head=creatlist(a);outlist(head);printfif'Enteraletter:H);scanfi(”%c”,&ch);/**********^)und**********/k=ftm(_3_);if(k==0)printf(H\nNotfbund!\nM);elseprintff'Thesequencenumberis:%d\nn,k);SLIS
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025-2026年社区工作者社区服务评估能力测试题
- 2025-2026年生物多样性保护法规模拟试卷
- 2025-2026年医学考研眼科学重点知识巩固习题
- 某食品集团人事管理制度的
- 关于口腔医院诊疗的实习总结
- 文旅IP打造分析方案
- 事故隐患排查治理档案表
- 统编版语文八年级上册第4课《“飞天”凌空》练习题(含答案)
- 隐匿阴茎健康宣教方案
- 陇南市消防安全知识普及
- 员工转正、晋升、降级、调薪管理制度
- 深入浅出运动生理学全篇课件
- 带音标单词表(知识清单)-2024-2025学年外研版(三起)(2024)英语三年级上册
- DB44T 2400-2022中华穿山甲野外种群数量监测技术规程
- SH/T 0358-199510号航空液压油
- T-CARM 002-2023 康复医院建设标准
- 国立清华大学脑与心智第四讲(焦传金教授)
- 设备维保的预防性维护与维护计划
- 高级微观经济学
- QGIS软件及其应用教程
- NB-T31022-2012风电达标投产验收规程1-风电发电场工程达标投产验收专用
评论
0/150
提交评论