2012三月计算机二级c语言上机题库_第1页
2012三月计算机二级c语言上机题库_第2页
2012三月计算机二级c语言上机题库_第3页
2012三月计算机二级c语言上机题库_第4页
免费预览已结束,剩余342页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

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

fclose(fp);printf(,z\nTheoriginaldata:\n\n");for(j=0;jくN;j++){printf('\nNo:%ldName:%-8sScores:",ss[j].sno,ss[j].name);for(i=0;i<3;i++)printf("%6.2f”,ss[j].score[i]);printf("\n");)fun("student,dat",n);printf("\nThedataaftermodifing:\n\n");fp=fopen("student,dat","rb");fread(ss,sizeof(STU),N,fp);fclose(fp);for(j=0;jくN;j++){printf("\nNo:%ldName:%-8sScores:",ss[j].sno,ss[j].name);for(i=0;i<3;i++)printf("%6.2f",ss[j].score[i]);printf("\n");fseek(fp,SEEK_END);-(long)sizeof(STU),解题答案:/**********第——fseek(fp,SEEK_END);-(long)sizeof(STU),fp=fopen(filename,"rb+");fwrite(&n,sizeof(STU),1,fp);二、改错题:给定程序M0DI1.C中的函数Creatlink的功能是创建带头结点的单向链表,并为各结点数据域赋。到m-1的值。请改正函数Creatlink中指定部位的错误,使它能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!给定源程序:ttinclude<stdio.h>#include<stdlib.h>typedefstructaa{intdata;}NODE;structaa*next;}NODE;NODE*Creatlink(intn,intm){NODE*h=NULL,*p,*s;inti;/**********found***********/p=(NODE)malloc(sizeof(NODE));h=p;p->next=NULL;for(i=l;i〈=n;i++){s=(NODE*)malloc(sizeof(NODE));s->data=rand()%m;s->next=pー〉next;p->next=s;p=p->next;)/**********found***********/returnp;)outlink(NODE*h){NODE*p;p=h->next;printf('\n\nTHELIST:\n\nHEAD、、while(p){printf("ー>%d",p-〉data);p=p->next;}printf("\n");main(){NODE*head;head=Creat1ink(8,22);outlink(head);)解题答案:/**********found***********/p=(NODE*)malloc(sizeof(NODE));/**********found***********/returnh;三、程序题:请编写函数fun,函数的功能是:统计一行字符串中单词的个数,作为函数值返回。一行字符串在主函数中输入,规定所有单词由小写字母组成,单词之间由若干个空格隔开,一行的开始没有空格。注意:部分源程序在文件PROG1.C中。请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。给定源程序:#include<stdio.h>

ttinclude<string.h>#defineN80intfun(char*s)main(){charline[N];intnum=0;voidNONO();printf("Enterastring:\n");gets(line);num=fun(line);printf("Thenumberofwordis:%d\n\n",num);N0N0();)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,'\n');if(p!=NULL)*p=0;num=fun(line);fprintf(wf,"%d\n",num);}fclose(rf);fclose(wf);}参考答案:intfun(char*s){intk=1;while(*s){if(*s==")k++;s++;)期################################第期################################第02套:ー、填空题:给定程序的功能是:从键盘输入若干行文本(每行不超过80个字符),写到文件myfile4.txt中,用T作为字符串输入结束的标志。然后将文件的内容读出显示在屏幕上。文件的读写分别由自定义函数ReadText和WriteText实现。请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。注意:源程序存放在考生文件夹下BLANK1.C中。不得增行或删行,也不得更改程序的结构!给定源程序:ttinclude<stdio.h>#include<string.h>ttinclude<stdlib.h>voidWriteText(FILE*);voidReadText(FILE*);main(){FILE*fp;if((fp=fopen("myfile4.txt,w))==NULL){printf("openfail!!\n");exit(0);}WriteText(fp);fclose(fp);if((fp=fopen("myfile4.txt,r))==NULL){printf("openfail!!\n");exit(0);}ReadText(fp);fclose(fp);)/**********found**********/voidWriteText(FILE1 ){charstr[81];printf(,z\nEnterstringwith-1toend:\n");gets(str);while(strcmp(str,"T")!=0){/**********found**********/fputs( 2 ,fw);fputs("\n,fw);gets(str);)}voidReadText(FILE*fr){charstr[81];printf(z/\nReadfileandoutputtoscreen:\n");fgets(str,81,fr);while(!feof(fr)){/**********found**********/给定源程序:printf('版”, 3 );ttinclude<stdio.h>fgets(str,81,fr);/************found************/}voidfun(longs,longt)}{longsl=10;解题答案:*t=s%10;/**********第一空**********/while(s>0)voidWriteText(FILE*fw){s=s/100;/**********第二空**********/*t=s%10*si+*t;fputs(str,fw);fputs("\n",fw);/************found************//**********第二本**********/si=sl*100;printf("%s",str);}************************************}******main()二、改错题:给定程序M0DI1.C中函数fun{longs,t;的功能是:从低位开始取出长整型变量s中printf("\nPlease enter s:")奇数位上的数,依次构成一个新数放在tscanf("%ld",&s);中。高位仍在高位,低位仍在低位。fun(s,&t);例如,当s中的数为:7654321时,t中的printf("Theresultis:%ld\n",t);数为:7531〇}请改正程序中的错误,使它能得出正确的解题答案:结果。/************fotind************/注意:不要改动main函数,不得增行或删voidfun(longs,long*t)行,也不得更改程序的结构!/************fotind************/sl=sl*10;三、程序题:函数fun的功能是:将两个两位数的正整数a、b合并形成一个整数放在c中。合并的方式是:将a数的十位和个位数依次放在c数的个位和百位上,b数的十位和个位数依次放在c数的千位和十位上。例如,当a=45,b=12时,调用该函数后,c=1524o注意:部分源程序存在文件PROG1.C中。数据文件IN.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\n",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,"%d,%d",&a,&b);fun(a,b,&c);fprintf(wf,"a=%d,b=%d,c=%ld\n",a,b,c);}fclose(rf);fclose(wf);)解题答案:*c=(b/10)*1000+(a%10)*100+(b%10)*10+(a/10);}####################################曲####第03套:ー、填空题:给定程序中,函数fun的功能是:将自然数1〜10以及它们的平方根写到名为myfile3.txt的文本文件中,然后再顺序读出显示在屏幕上。请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。注意:源程序存放在考生文件夹下的BLANK1.C中。不得增行或删行,也不得更改程序的结构!给定源程序:#include<math.h>ttinclude<stdio.h>intfun(char*fname){FILE*fp;inti,n;floatx;if((fp=fopen(fname,w))—NULL)return0;for(i=l;iく=10;i++)/**********found**********/fprintf( 1 ,"%d%f\n”,i,sqrt((double)i));printf('\nSucceed!!\n");/**********found**********/―2—;printf('\nThedatainfile:\n");/**********found**********/if((fp=fopen( 3 ,"r"))==NULL)return0;fscanf(fp,"%d%f”,&n,&x);while(!feof(fp)){printf(z,%d %f\n”,n,x);fscanf(fp,/,%d%f//,&n,&x);}fclose(fp);return1;}main(){charfname口="myfile3.txt;fun(fname);解题答案:/************found************//**********第一•空*********/for(i=j+l;i<n-l;i++)fprintf(fp,z,%dif(a[p]>a[i])%f\n”,i,sqrt((double)i));/************found************/printf('\nSucceed!!\n");t=i;/**********第二空**********/if(p!=j)fclose(fp);{t=a[j];a[j]=a[p];a[p]=t;}/**********第二空**********/}if((fp=fopen(fname,"r"))==NULL)}************************************putarr(intn,int*z)******{inti;改错题:给定程序M0DI1.C中fun函数的for(i=1;iく=n;i++,z++)功能是:将n个无序整数从小到大排序。请{printf("%4d”,*z);改正程序中的错误,使它能得出正确的结if(!(i%10))printf("\n");果。}printf("\n");注意:不要改动main函数,不得增行或删}行,也不得更改程序的结构!main()给定源程序:{intaa[20]={9,3,0,4,1,2,5,6,8,10,7},ttinclude<stdio.h>n=ll;#include<stdlib.h>printf("\n\nBeforesorting%dfun(intn,int*a)numbers:\n,n);putarr(n,aa);{inti,j,p,t;fun(n,aa);for(j=0;j<n-l;j++)printf('\nAtter sorting %d{p=j;numbers:\n,n);putarr(n,aa);解题答案:ttinclude<stdio.h>#include<stdlib.h>fun(intn,int*a){inti,j,p,t;for(j=0;j<n-l;j++){p=j;/************fotind************/for(i=j+l;i<n;i++)/************fourid************/P=i;三、程序题:函数fun的功能是:将两个两位数的正整数a、b合并形成一个整数放在c中。合并的方式是:将a数的十位和个位数依次放在c数的个位和百位上,b数的十位和个位数依次放在c数的十位和千位上。例如,当a=45,b=12时,调用该函数后,c=2514o注意:部分源程序存在文件PROG1.C中。数据文件IN.DAT中的数据不得修改。请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。给定源程序:ttinclude<stdio.h>voidfun(inta,intb,long*c)main(){inta,b;longc;voidNONO();printf("Inputa,b:");scanf("%d,%d",&a,&b);fun(a,b,&c);printf("Theresultis:%ld\n",c);N0N0();}voidNONO(){/・本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。*/FILE*rf,*wf;inti,a,b;longc;rf=fopen("in.dat","r");wf=fopen(“〇ut.dat,w);for(i=0;iく10;i++){fscanf(rf,“/d,%d”,&a,&b);fun(a,b,&c);fprintf(wf,“a=%d,b=%d,c=%ld\n”,a,b,c);)fclose(rf);fclose(wf);)解题答案:!*c=(b%10)*1000+(a%10)*100+(b/10)*10+a/10;)#########################################第04套:一、填空题:程序通过定义学生结构体变量,存储了学生的学号、姓名和3门课的成绩。所有学生数据均以二进制方式输出到文件中。函数fun的功能是从形参filename所指的文件中读入学生数据,并按照学号从小到大排序后,再用二进制方式把排序后的学生数据输出到filename所指的文件中,覆盖原来的文件内容。请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。注意:源程序存放在考生文件夹下BLANK1.C中。不得增行或删行,也不得更改程序的结构!给定源程序:#include<stdio.h>#defineN5typedefstructstudent{longsno;charname[10];floatscore[3];}STU;voidfun(char*filename){FILE*fp;inti,j;STUs[N],t;/**********found**********/fp=fopen(filename,_1_);fread(s,sizeof(STU),N,fp);fclose(fp);for(i=0;i<N-l;i++)for(j=i+l;j<N;j++)/**********found**********/if(s[i].sno_2_s[j].sno){t=s[i];s[i]-s[j];s[j]=t;}fp=fopen(filename,wb");/**********found**********/_3_(s,sizeof(STU),N,fp);/・二进制输出・/fclose(fp);}main()TOC\o"1-5"\h\z{STUt[N]={{10005,“ZhangSan”,95,80,88}, {10003,"LiSi",85, 70,78},{10002,"CaoKai”,75, 60, 88},{10004,"FangFang”,90, 82,87},{10001,“MaChao”,91,92,77}},ss[N];inti,j;FILE*fp;fp=fopen("student,dat,"wb");fwrite(t,sizeof(STU),5,fp);fclose(fp);printf("\n\nThe originaldata:\n\n");for(j=0;j<N;j++){printf("\nNo:%ldName:%-8sScores:",t[j].sno,t[j].name);for(i=0;i<3;i++)printf("%6.2f",t[j].scoreti]);printf("\n");}fun("student,dat");printf("\n\nThedataaftersorting:\n\n");fp=fopen("student,dat","rb");fread(ss,sizeof(STU),5,fp);fclose(fp);for(j=0;j<N;j++){printf("\nNo:%ldName:%-8sScores:",ss[j].sno,ss[j].name);for(i=0;i<3;i++)printf("%6.2f",ss[j].score[i]);printf("\n");解题答案:/*********・第一•空**********/fp=fopen(filename,"rb");/**********第二空**********/if(s[i].sno>s[j].sno)/**********第二空**********/fwrite(s,sizeof(STU),N,fp);/*进制输出・/改错题:给定程序M0DI1.C中函数fun的功能是:在字符串的最前端加入n个・号,形成二、新串,并且覆盖原串。注意:字符串的长度最长允许为79。请改正函数fun中指定部位的错误,使它能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!给定源程序:ttinclude<stdio.h>#include<string.h>voidfun(chars口,intn)chara[80],*p;inti;/**********found***********/s=p;for(i=0;i<n;i++)a[i]='*';do{a[i]=*p;i++;)/**********found***********/while(*p++)a[i]=0;strcpy(s,a);)main(){intn;chars[80];printf("\nEnterastring: ");gets(s);printf("\nThestringヽ'%s\'\n,s);printf("\nEntern(numberof*):");scanf(“/d”,&n);fun(s,n);printf("\nThestringafterinsert:ヽ"%s\"\n",s);ttinclude<stdio.h>ttdefineN50ttdefineM11voidfun(int*a,int*b)解题答案:/**********found***********/P二s;/**********found***********/while(*p++);三、程序题:请编写函数fun,函数的功能是:统计各年龄段的人数。N个年龄通过调用随机函数获得,并放在主函数的age数组中:要求函数把0至9岁年龄段的人数放在d[0]中,把!0至19岁年龄段的人数放在仇1]中,把20至29岁年龄段的人数放在d[2]中,其余依此类推,把100岁(含100)以上年龄的人数都放在仇10]中。结果在主函数中输出。注意:部分源程序在文件PROG1.C中。请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。给定源程序:doublernd(){statict=29,c=217,m=1024,r=0;r=(r*t+c)%m;return((double)r/m);)main(){intage[N],i,d[M];voidNONO(intd[M]);for(i=0;i<N;i++)age[i]=(int)(115*rnd());printf("Theoriginaldata:\n");for(i=0;i<N;i++)printf((i+l)/10==0?"%4d\n":"%4d”,age[i]);printf('\n\n");fun(age,d);for(i=0;iく10;i++)printf("%4d %4d:%4d\n”,i*10,i*10+9,d[i]);printf("〇ver100:%4d\n/z,d[10]);NONO(d);)voidNONO(intd[M]){/・请在此函数内打开文件,输入测试数据,调用fun函数,输出数据,关闭文件。*/FILE*wf;inti;wf=fopen(z,out.dat","w");for(i=0;i<10;i++)fprintf(wf,找4d-—%4d:%4d\n”,i*10,i*10+9,d[i]);fprintf(wf,"Over100:%4d\n”,d[10]);fclose(wf);}参考答案:voidfun(int*a,int*b)(inti,j;for(i=0;i<M;i++)b[i]=0;for(i=0;i<N;i++){j=a[i]/10;if(j>10)b[M-1]++;elseb[j]++;))doublernd(){statict=29,c=217,m=1024,r=0;r=(r*t+c)%m;return((double)r/m);)#################################第05套:一、填空题:给定程序中已建立一个带有头结点的单向链表,链表中的各结点按结点数据域中的数据递增有序链接。函数fun的功能是:把形参x的值放入一个新结点并插入到链表中,插入后各结点数据域的值仍保持递增有序。请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。注意:源程序存放在考生文件夹的BLANK1.C中。不得增行或删行,也不得更改程序的结构!给定源程序:#include<stdio.h>{SLIST*h,*p,*q;inti;#include<stdlib.h>h=p=(SLIST*)malloc(sizeof(SLIST));#defineN8for(i=0;i<N;i++)typedefstructlist{q=(SLIST*)malloc(sizeof(SLIST));{intdata;q->data=a[i];p->next=q;p=q;structlist*next;)}SLIST;p->next=0;voidfun(SLIST*h,intx)returnh;{SLIST*p,*q,*s;)s=(SLIST*)malloc(sizeof(SLIST));voidoutlist(SLIST*h)/**********found**********/{SLIST*p;s->data= 1 ;p=h->next;q=h;if(p==NULL)printf("\nThelistisp=h->next;NULL!\n");while(p!=NULL&&x>p->data){else/**********found**********/{printf("\nHead");q= 2 ;do{printf("->%d",p->data);p=p->next;}p=p->next;while(p!=NULL);)printf("->End\n");s->next=p;)/**********found**********/)q->next= 3 ;main()){SLIST*head;intx;SLIST*creatlist(int*a)inta[N]={ll,12,15,18,l9,22,25,29);

head=creatlist(a);注意:不要改动main函数,不得增行或删printf("\nThelistbeforeinserting:\n");行,也不得更改程序的结构!outlist(head);给定源程序:printf("\nEnteranumber: ");#include<stdio.h>scanf("%d",&x);longfun(longnum)fun(head,x);(printf("\nThelistafterinsertingAn");/************found************/outlist(head);longk;}解题答案:do/**********第——空*********/{k*=num%10;s->daa=x;/************found************//**********第二空**********/num\=10;q=P;}while(num);/**********第二空**********/return(k);q->next=s;)************************************main()******{longn;二、改错题:给定程序MODI1.C中函数funprintf("\nPleaseenteranumber:");的功能是:计算正整数num的各位上的数scanf("%ld",&n);字之积。printf("\n%ld\n",fun(n));例如,若输入:252,则输出应该是:200)若输入:202,则输出应该是:〇〇解题答案:请改正程序中的错误,使它能得出正确的/************found************/结果。longk=l;/************found************/num/=10;三、程序题:请编写ー个函数fun,它的功能是:计算n门课程的平均分,计算结果作为函数值返回。例如:若有5门课程的成绩是:90.5,72,80,61.5,55则函数的值为:71.800注意:部分源程序存在文件PROG1.C中。请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。给定源程序:#include<stdio.h>floatfun(float*a,intn)main(){floatscore[30]={90.5,72,80,61.5,55},aver;voidNONO();aver=fun(score,5);printf("\nAveragescoreis:%5.2f\n",aver);NONO();)voidNONO(){/・本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。*/FILE*fp,*wf;inti,j;floataver,score[5];fp=fopen("in.dat","r");wf=fopen("out.dat","w");for(i=0;i<10;i++){for(j= 0 ;j<5 ; j++)fscanf(fp,"%f,",&score[j]);aver=fun(score,5);fprintf(wf,"%5.2f\n",aver);}fclose(fp);fclose(wf);解题答案:{inti;structlist*next;}SLIST;voidfun(SLIST*p){SLIST*t,*s;t=p->next;s=p;while(t->next!=NULL){s=t;/**********found**********/t=t->1/**********found**********/printf("%d",—2—);s->next=NULL;structlist*next;}SLIST;voidfun(SLIST*p){SLIST*t,*s;t=p->next;s=p;while(t->next!=NULL){s=t;/**********found**********/t=t->1/**********found**********/printf("%d",—2—);s->next=NULL;/**********found**********/free(_3);SLIST*creatlist(int*a){SLIST*h,*p,*q;inti;h=p=(SLIST*)malloc(sizeof(SLIST));for(i=0;i<N;i++){q=(SLIST*)malloc(sizeof(SLIST));q->data=a[i];p->next=q;p=q;p->next=0;floatave=0.0;for(i=0;i<n;i++)ave=ave+a[i];ave=ave/n;returnave;I關########################################第06套:ー、给定程序中已建立一个带有头结点的单向链表,在main函数中将多次调用fun函数,每调用一次fun函数,输出链表尾部结点中的数据,并释放该结点,使链表缩短。请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。注意:源程序存放在考生文件夹下BLANK1.C中。不得增行或删行,也不得更改程序的结构!给定源程序:#include<stdio.h>#include<stdlib.h>#defineN8typedefstructlist{intdata;

returnh;printf("\nOutputfromheadagain:\n");)outlist(head);voidoutlist(SLIST*h)){SLIST*p;)p=h->next;解题答案:if(p==NULL)printf("\nThelistis/**********第一・空**********/NULL!\n");t=t->next;else/**********第二空**********/{printf("\nHead");printfC%d”,t->data);do{printf("->%d",p->data);p=p->next;}/**********第二空**********/while(p!=NULL);free(t);printf("->End\n");************************************)******)二、改错题:给定程序M0DI1.C中函数funmain()的功能是:将字符串中的字符按逆序输出,{SLIST*head;但不改变字符串中的内容。inta[N]={11,12,15,18,19,22,25,29);例如,若字符串为abed,则应输出:debaohead=creatlist(a);请改正程序中的错误,使它能计算出正确printf("\nOutput from head:\n");的结果。outlist(head);注意:不要改动main函数,不得增行或删printf("\nOutputfromtail:\n");行,也不得更改程序的结构!while(head->next!=NULL){给定源程序:fun(head);#include<stdio.h>printf("\n\n");/************found************/

fun(chara)回较长的字符串。若两个字符串长度相同,{if(*a)则返回第一个字符串。{fun(a+l);例如,输入beijing<CR>shanghai<CR>/************found************/(<CR>为回车键),函数将返回shanghai。printf("%c"*a);注意:部分源程序存在文件PROG1.C中。)请勿改动主函数main和其它函数中的任何)内容,仅在函数fun的花括号中填入你编写main()的若干语句。{chars[10]="abcd";给定源程序:printf("处理前字符串=%s\n处理后字符串#include<stdio.h>s);char*fun(char*s,char*t)fun(s);printf("\n");){解题答案:)/************found************/main()voidfun(char*a){chara[20],b[20];/************found************/voidNONO();printf*a);printf("Input1thstring:");************************************gets(a);******printf("Input2thstring:");三、程序题:请编写ー个函数fun,它的功gets(b);能是:比较两个字符串的长度,(不得调用Cprintf("%s\n",fun(a,b));语言提供的求字符串长度的函数),函数返NONO();}voidNONO(){/・本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。*/FILE*fp,*wf;inti;chara[20],b[20];fp=fopen("in.dat","r");wf=fopen("out.dat","w");for(i=0;i<10;i++){fscanf(fp,"%s%s",a,b);fprintf(wf,"%s\n",fun(a,b));)fclose(fp);fclose(wf);参考答案:(inti;char*p=s,*q=t;for(i=0;*p&&*q;i++){P++;q++;)if(*p==0&&*q==0)returns;if(*p)returns;elsereturnt;

期###############################第0フ套:一、填空题:给定程序中已建立一个带有头结点的单向链表,链表中的各结点按数据域递增有序链接。函数fun的功能是:删除链表中数据域值相同的结点,使之只保留一个。请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。注意:源程序存放在考生文件夹的BLANK1.C中。不得增行或删行,也不得更改程序的结构!给定源程序:#include<stdio.h>#include<stdlib.h>#defineN8typedefstructlist{intdata;structlist*next;}SLIST;voidfun(SLIST*h){SLIST*p,*q;{q=(SLIST*)malloc(sizeof(SLIST));p=h->next;q->data=a[i];p->next=q;p=q;if(p!=NULL)){q=p->next;p->next=0;while(q!=NULL)returnh;{if(p->data==q->data)){p->next=q->next;voidoutlist(SLIST*h)/**********found**********/{SLIST*p;free( 1 );p=h->next;/**********found**********/if(p==NULL)printf("\nThelistisq=p-> 2 ;NULL!\n");)elseelse{printf("\nHead");{p=q;do{printf("->%d",p->data);p=p->next;}/**********found**********/while(p!=NULL);q=q-> 3 ;$printf("->End\n");)}))main()){SLIST*head;inta[N]={1,2,2,34,4,4,5};SLIST*creatlist(int*a)head=creatlist(a);{SLIST*h,*p,*q;inti;printf("\nThelistbeforedeleting:\n");h=p=(SLIST*)malloc(sizeof(SLIST));outlist(head);for(i=0;i<N;i++)fun(head);

printf("\nThelistafterdeleting:\n");{inti,j,t,p;outlist(head);for(j=0;j<n-1;j++){)/************found************/解题答案:p=j/**********found**********/for(i=j;i<n;i++)free(q);if(a[i]<a[p])/**********found**********//************found************/q=p->next;p=j;t=a[p];a[p]=a[j];a[j]=t;/*

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论