C语言上机参考题库.docx
《C语言上机参考题库.docx》由会员分享,可在线阅读,更多相关《C语言上机参考题库.docx(58页珍藏版)》请在冰豆网上搜索。
C语言上机参考题库
注意:
填空题填好答案要去掉下划线。
改错题**found**下面的一行为错误地方,直接按答案更正即可。
程序题答案只填在花括号中。
(记得保存)
第01套:
一、填空题:
程序通过定义学生结构体变量,存储了学生的学号、姓名和3门课的成绩。
所有学生数据均以二进制方式输出到文件中。
函数fun的功能是重写形参filename所指文件中最后一个学生的数据,即用新的学生数据覆盖该学生原来的数据,其它学生的数据不变。
请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。
源程序存放在考生文件夹下BLANK1.C中。
不得增行或删行,也不得更改程序的结构!
给定源程序:
#include
#defineN5
typedefstructstudent{
longsno;
charname[10];
floatscore[3];
}STU;
voidfun(char*filename,STUn)
{FILE*fp;
/**********found**********/
fp=fopen(__1__,"rb+");
fseek(__2__,-(long)sizeof(STU),SEEK_END);
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);
fp=fopen("student.dat","rb");
fread(ss,sizeof(STU),N,fp);
printf("\nTheoriginaldata:
\n\n");
for(j=0;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 {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+");/**********第二空**********/ fseek(fp,-(long)sizeof(STU),SEEK_END);/**********第三空**********/ fwrite(&n,sizeof(STU),1,fp);******************************************二、改错题:给定程序MODI1.C中的函数Creatlink的功能是创建带头结点的单向链表,并为各结点数据域赋0到m-1的值。请改正函数Creatlink中指定部位的错误,使它能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!给定源程序:#include#includetypedefstructaa{intdata; 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=1;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=Creatlink(8,22); outlink(head);}解题答案:/**********found***********/ p=(NODE*)malloc(sizeof(NODE));/**********found***********/ returnh;三、程序题:请编写函数fun,函数的功能是:统计一行字符串中单词的个数,作为函数值返回。一行字符串在主函数中输入,规定所有单词由小写字母组成,单词之间由若干个空格隔开,一行的开始没有空格。注意:部分源程序在文件PROG1.C中。请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。给定源程序:#include#include#defineN80intfun(char*s){}main(){charline[N];intnum=0;voidNONO(); printf("Enterastring:\n");gets(line); num=fun(line); printf("Thenumberofwordis:%d\n\n",num); NONO();}voidNONO(){/*请在此函数内打开文件,输入测试数据,调用fun函数,输出数据,关闭文件。*/ FILE*rf,*wf;inti,num;charline[N],*p; rf=fopen("in.dat","r"); wf=fopen("out.dat","w"); for(i=0;i< 10;i++){ fgets(line,N,rf); p=strchr(line,'\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++;}returnk;} ##################################第02套:一、填空题:给定程序的功能是:从键盘输入若干行文本(每行不超过80个字符),写到文件myfile4.txt中,用-1作为字符串输入结束的标志。然后将文件的内容读出显示在屏幕上。文件的读写分别由自定义函数ReadText和WriteText实现。请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。注意:源程序存放在考生文件夹下BLANK1.C中。不得增行或删行,也不得更改程序的结构!给定源程序:#include#include#includevoidWriteText(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(FILE ___1___){charstr[81]; printf("\nEnterstringwith-1toend:\n"); gets(str); while(strcmp(str,"-1")!=0){/**********found**********/ fputs(___2___,fw);fputs("\n",fw); gets(str); }}voidReadText(FILE*fr){charstr[81]; printf("\nReadfileandoutputtoscreen:\n"); fgets(str,81,fr); while(!feof(fr)){/**********found**********/ printf("%s",___3___); fgets(str,81,fr); }}解题答案:/**********第一空**********/voidWriteText(FILE*fw)/**********第二空**********/ fputs(str,fw);fputs("\n",fw);/**********第三空**********/ printf("%s",str);******************************************二、改错题:给定程序MODI1.C中函数fun的功能是:从低位开始取出长整型变量s中奇数位上的数,依次构成一个新数放在t中。高位仍在高位,低位仍在低位。例如,当s中的数为:7654321时,t中的数为:7531。请改正程序中的错误,使它能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!给定源程序:#include/************found************/voidfun(longs,longt){longsl=10; *t=s%10; while(s> 0) {s=s/100; *t=s%10*sl+*t;/************found************/ sl=sl*100; }}main(){longs,t; printf("\nPleaseenters:");scanf("%ld",&s); fun(s,&t); printf("Theresultis:%ld\n",t);}解题答案:/************found************/voidfun(longs,long*t)/************found************/ sl=sl*10;******************************************三、程序题:函数fun的功能是:将两个两位数的正整数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(); 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#includeintfun(char*fname){FILE*fp;inti,n;floatx; if((fp=fopen(fname,"w"))==NULL)return0; for(i=1;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("%d%f\n",n,x);fscanf(fp,"%d%f",&n,&x);} fclose(fp); return1;}main(){charfname[]="myfile3.txt"; fun(fname);}解题答案:/**********第一空*********/ fprintf(fp,"%d%f\n",i,sqrt((double)i)); printf("\nSucceed!!\n");/**********第二空**********/ fclose(fp);/**********第三空**********/ if((fp=fopen(fname,"r"))==NULL)******************************************改错题:给定程序MODI1.C中fun函数的功能是:将n个无序整数从小到大排序。请改正程序中的错误,使它能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!给定源程序:#include#includefun(intn,int*a){inti,j,p,t; for(j=0;j {p=j;/************found************/ for(i=j+1;i if(a[p]>a[i])/************found************/ 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("%4d",*z); if(!(i%10))printf("\n"); }printf("\n");}main(){intaa[20]={9,3,0,4,1,2,5,6,8,10,7},n=11; printf("\n\nBeforesorting%dnumbers:\n",n);putarr(n,aa); fun(n,aa); printf("\nAftersorting%dnumbers:\n",n);putarr(n,aa);}解题答案:#include#includefun(intn,int*a){inti,j,p,t; for(j=0;j {p=j;/************found************/ for(i=j+1;i /************found************/ p=i;******************************************三、程序题:函数fun的功能是:将两个两位数的正整数a、b合并形成一个整数放在c中。合并的方式是:将a数的十位和个位数依次放在c数的个位和百位上,b数的十位和个位数依次放在c数的十位和千位上。例如,当a=45,b=12时,调用该函数后,c=2514。注意:部分源程序存在文件PROG1.C中。数据文件IN.DAT中的数据不得修改。请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。给定源程序:#includevoidfun(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;}######################################### 第04套:一、填空题:程序通过定义学生结构体变量,存储了学生的学号、姓名和3门课的成绩。所有学生数据均以二进制方式输出到文件中。函数fun的功能是从形参filename所指的文件中读入学生数据,并按照学号从小到大排序后,再用二进制方式把排序后的学生数据输出到filename所指的文件中,覆盖原来的文件内容。请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。注意:源程序存放在考生文件夹下BLANK1.C中。不得增行或删行,也不得更改程序的结构!给定源程序:#include #defineN5typedefstructstudent{ longsno; charname[10]; floatscore[3];}STU;voidfun(char*filename){
{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:
for(j=0;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+");/**********第二空**********/ fseek(fp,-(long)sizeof(STU),SEEK_END);/**********第三空**********/ fwrite(&n,sizeof(STU),1,fp);******************************************二、改错题:给定程序MODI1.C中的函数Creatlink的功能是创建带头结点的单向链表,并为各结点数据域赋0到m-1的值。请改正函数Creatlink中指定部位的错误,使它能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!给定源程序:#include#includetypedefstructaa{intdata; 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=1;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=Creatlink(8,22); outlink(head);}解题答案:/**********found***********/ p=(NODE*)malloc(sizeof(NODE));/**********found***********/ returnh;三、程序题:请编写函数fun,函数的功能是:统计一行字符串中单词的个数,作为函数值返回。一行字符串在主函数中输入,规定所有单词由小写字母组成,单词之间由若干个空格隔开,一行的开始没有空格。注意:部分源程序在文件PROG1.C中。请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。给定源程序:#include#include#defineN80intfun(char*s){}main(){charline[N];intnum=0;voidNONO(); printf("Enterastring:\n");gets(line); num=fun(line); printf("Thenumberofwordis:%d\n\n",num); NONO();}voidNONO(){/*请在此函数内打开文件,输入测试数据,调用fun函数,输出数据,关闭文件。*/ FILE*rf,*wf;inti,num;charline[N],*p; rf=fopen("in.dat","r"); wf=fopen("out.dat","w"); for(i=0;i< 10;i++){ fgets(line,N,rf); p=strchr(line,'\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++;}returnk;} ##################################第02套:一、填空题:给定程序的功能是:从键盘输入若干行文本(每行不超过80个字符),写到文件myfile4.txt中,用-1作为字符串输入结束的标志。然后将文件的内容读出显示在屏幕上。文件的读写分别由自定义函数ReadText和WriteText实现。请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。注意:源程序存放在考生文件夹下BLANK1.C中。不得增行或删行,也不得更改程序的结构!给定源程序:#include#include#includevoidWriteText(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(FILE ___1___){charstr[81]; printf("\nEnterstringwith-1toend:\n"); gets(str); while(strcmp(str,"-1")!=0){/**********found**********/ fputs(___2___,fw);fputs("\n",fw); gets(str); }}voidReadText(FILE*fr){charstr[81]; printf("\nReadfileandoutputtoscreen:\n"); fgets(str,81,fr); while(!feof(fr)){/**********found**********/ printf("%s",___3___); fgets(str,81,fr); }}解题答案:/**********第一空**********/voidWriteText(FILE*fw)/**********第二空**********/ fputs(str,fw);fputs("\n",fw);/**********第三空**********/ printf("%s",str);******************************************二、改错题:给定程序MODI1.C中函数fun的功能是:从低位开始取出长整型变量s中奇数位上的数,依次构成一个新数放在t中。高位仍在高位,低位仍在低位。例如,当s中的数为:7654321时,t中的数为:7531。请改正程序中的错误,使它能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!给定源程序:#include/************found************/voidfun(longs,longt){longsl=10; *t=s%10; while(s> 0) {s=s/100; *t=s%10*sl+*t;/************found************/ sl=sl*100; }}main(){longs,t; printf("\nPleaseenters:");scanf("%ld",&s); fun(s,&t); printf("Theresultis:%ld\n",t);}解题答案:/************found************/voidfun(longs,long*t)/************found************/ sl=sl*10;******************************************三、程序题:函数fun的功能是:将两个两位数的正整数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(); 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#includeintfun(char*fname){FILE*fp;inti,n;floatx; if((fp=fopen(fname,"w"))==NULL)return0; for(i=1;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("%d%f\n",n,x);fscanf(fp,"%d%f",&n,&x);} fclose(fp); return1;}main(){charfname[]="myfile3.txt"; fun(fname);}解题答案:/**********第一空*********/ fprintf(fp,"%d%f\n",i,sqrt((double)i)); printf("\nSucceed!!\n");/**********第二空**********/ fclose(fp);/**********第三空**********/ if((fp=fopen(fname,"r"))==NULL)******************************************改错题:给定程序MODI1.C中fun函数的功能是:将n个无序整数从小到大排序。请改正程序中的错误,使它能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!给定源程序:#include#includefun(intn,int*a){inti,j,p,t; for(j=0;j {p=j;/************found************/ for(i=j+1;i if(a[p]>a[i])/************found************/ 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("%4d",*z); if(!(i%10))printf("\n"); }printf("\n");}main(){intaa[20]={9,3,0,4,1,2,5,6,8,10,7},n=11; printf("\n\nBeforesorting%dnumbers:\n",n);putarr(n,aa); fun(n,aa); printf("\nAftersorting%dnumbers:\n",n);putarr(n,aa);}解题答案:#include#includefun(intn,int*a){inti,j,p,t; for(j=0;j {p=j;/************found************/ for(i=j+1;i /************found************/ p=i;******************************************三、程序题:函数fun的功能是:将两个两位数的正整数a、b合并形成一个整数放在c中。合并的方式是:将a数的十位和个位数依次放在c数的个位和百位上,b数的十位和个位数依次放在c数的十位和千位上。例如,当a=45,b=12时,调用该函数后,c=2514。注意:部分源程序存在文件PROG1.C中。数据文件IN.DAT中的数据不得修改。请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。给定源程序:#includevoidfun(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;}######################################### 第04套:一、填空题:程序通过定义学生结构体变量,存储了学生的学号、姓名和3门课的成绩。所有学生数据均以二进制方式输出到文件中。函数fun的功能是从形参filename所指的文件中读入学生数据,并按照学号从小到大排序后,再用二进制方式把排序后的学生数据输出到filename所指的文件中,覆盖原来的文件内容。请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。注意:源程序存放在考生文件夹下BLANK1.C中。不得增行或删行,也不得更改程序的结构!给定源程序:#include #defineN5typedefstructstudent{ longsno; charname[10]; floatscore[3];}STU;voidfun(char*filename){
解题答案:
/**********第一空**********/
fp=fopen(filename,"rb+");
/**********第二空**********/
fseek(fp,-(long)sizeof(STU),SEEK_END);
/**********第三空**********/
fwrite(&n,sizeof(STU),1,fp);
******************************************
二、改错题:
给定程序MODI1.C中的函数Creatlink的功能是创建带头结点的单向链表,并为各结点数据域赋0到m-1的值。
请改正函数Creatlink中指定部位的错误,使它能得出正确的结果。
注意:
不要改动main函数,不得增行或删行,也不得更改程序的结构!
typedefstructaa
{intdata;
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=1;i<=n;i++)
{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("\n\nTHELIST:
\n\nHEAD");
while(p)
{printf("->%d",p->data);
p=p->next;
{NODE*head;
head=Creatlink(8,22);
outlink(head);
p=(NODE*)malloc(sizeof(NODE));
returnh;
三、程序题:
请编写函数fun,函数的功能是:
统计一行字符串中单词的个数,作为函数值返回。
一行字符串在主函数中输入,规定所有单词由小写字母组成,单词之间由若干个空格隔开,一行的开始没有空格。
部分源程序在文件PROG1.C中。
请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。
#defineN80
intfun(char*s)
{
{charline[N];intnum=0;voidNONO();
printf("Enterastring:
\n");gets(line);
num=fun(line);
printf("Thenumberofwordis:
%d\n\n",num);
NONO();
voidNONO()
{/*请在此函数内打开文件,输入测试数据,调用fun函数,输出数据,关闭文件。
*/
FILE*rf,*wf;inti,num;charline[N],*p;
rf=fopen("in.dat","r");
wf=fopen("out.dat","w");
for(i=0;i< 10;i++){
fgets(line,N,rf);
p=strchr(line,'\n');
if(p!
=NULL)*p=0;
fprintf(wf,"%d\n",num);
fclose(rf);fclose(wf);
参考答案:
intk=1;
while(*s){
if(*s=='')k++;
s++;
returnk;
##################################
第02套:
给定程序的功能是:
从键盘输入若干行文本(每行不超过80个字符),写到文件myfile4.txt中,用-1作为字符串输入结束的标志。
然后将文件的内容读出显示在屏幕上。
文件的读写分别由自定义函数ReadText和WriteText实现。
请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。
voidWriteText(FILE*);
voidReadText(FILE*);
if((fp=fopen("myfile4.txt","w"))==NULL)
{printf("openfail!
!
\n");exit(0);}
WriteText(fp);
if((fp=fopen("myfile4.txt","r"))==NULL)
ReadText(fp);
voidWriteText(FILE ___1___)
{charstr[81];
printf("\nEnterstringwith-1toend:
\n");
gets(str);
while(strcmp(str,"-1")!
=0){
fputs(___2___,fw);fputs("\n",fw);
voidReadText(FILE*fr)
printf("\nReadfileandoutputtoscreen:
fgets(str,81,fr);
while(!
feof(fr)){
printf("%s",___3___);
voidWriteText(FILE*fw)
fputs(str,fw);fputs("\n",fw);
printf("%s",str);
给定程序MODI1.C中函数fun的功能是:
从低位开始取出长整型变量s中奇数位上的数,依次构成一个新数放在t中。
高位仍在高位,低位仍在低位。
例如,当s中的数为:
7654321时,t中的数为:
7531。
请改正程序中的错误,使它能得出正确的结果。
不要改动main函数,不得增行或删行,也不得更改程序的结构!
/************found************/
voidfun(longs,longt)
{longsl=10;
*t=s%10;
while(s> 0)
{s=s/100;
*t=s%10*sl+*t;
sl=sl*100;
{longs,t;
printf("\nPleaseenters:
");scanf("%ld",&s);
fun(s,&t);
printf("Theresultis:
%ld\n",t);
voidfun(longs,long*t)
sl=sl*10;
函数fun的功能是:
将两个两位数的正整数a、b合并形成一个整数放在c中。
合并的方式是:
将a数的十位和个位数依次放在c数的个位和百位上,b数的十位和个位数依次放在c数的千位和十位上。
例如,当a=45,b=12时,调用该函数后,c=1524。
部分源程序存在文件PROG1.C中。
数据文件IN.DAT中的数据不得修改。
请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。
voidfun(inta,intb,long*c)
{inta,b;longc;
voidNONO();
printf("Inputa,b:
");
scanf("%d,%d",&a,&b);
fun(a,b,&c);
%ld\n",c);
{/*本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。
FILE*rf,*wf;
inti,a,b;longc;
fscanf(rf,"%d,%d",&a,&b);
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中。
intfun(char*fname)
{FILE*fp;inti,n;floatx;
if((fp=fopen(fname,"w"))==NULL)return0;
for(i=1;i<=10;i++)
fprintf(___1___,"%d%f\n",i,sqrt((double)i));
printf("\nSucceed!
!
___2___;
printf("\nThedatainfile:
if((fp=fopen(___3___,"r"))==NULL)
return0;
fscanf(fp,"%d%f",&n,&x);
feof(fp))
{printf("%d%f\n",n,x);fscanf(fp,"%d%f",&n,&x);}
return1;
{charfname[]="myfile3.txt";
fun(fname);
/**********第一空*********/
fprintf(fp,"%d%f\n",i,sqrt((double)i));
if((fp=fopen(fname,"r"))==NULL)
改错题:
给定程序MODI1.C中fun函数的功能是:
将n个无序整数从小到大排序。
fun(intn,int*a)
{inti,j,p,t;
for(j=0;j {p=j;/************found************/ for(i=j+1;i if(a[p]>a[i])/************found************/ 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("%4d",*z); if(!(i%10))printf("\n"); }printf("\n");}main(){intaa[20]={9,3,0,4,1,2,5,6,8,10,7},n=11; printf("\n\nBeforesorting%dnumbers:\n",n);putarr(n,aa); fun(n,aa); printf("\nAftersorting%dnumbers:\n",n);putarr(n,aa);}解题答案:#include#includefun(intn,int*a){inti,j,p,t; for(j=0;j {p=j;/************found************/ for(i=j+1;i /************found************/ p=i;******************************************三、程序题:函数fun的功能是:将两个两位数的正整数a、b合并形成一个整数放在c中。合并的方式是:将a数的十位和个位数依次放在c数的个位和百位上,b数的十位和个位数依次放在c数的十位和千位上。例如,当a=45,b=12时,调用该函数后,c=2514。注意:部分源程序存在文件PROG1.C中。数据文件IN.DAT中的数据不得修改。请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。给定源程序:#includevoidfun(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;}######################################### 第04套:一、填空题:程序通过定义学生结构体变量,存储了学生的学号、姓名和3门课的成绩。所有学生数据均以二进制方式输出到文件中。函数fun的功能是从形参filename所指的文件中读入学生数据,并按照学号从小到大排序后,再用二进制方式把排序后的学生数据输出到filename所指的文件中,覆盖原来的文件内容。请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。注意:源程序存放在考生文件夹下BLANK1.C中。不得增行或删行,也不得更改程序的结构!给定源程序:#include #defineN5typedefstructstudent{ longsno; charname[10]; floatscore[3];}STU;voidfun(char*filename){
{p=j;
for(i=j+1;i if(a[p]>a[i])/************found************/ 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("%4d",*z); if(!(i%10))printf("\n"); }printf("\n");}main(){intaa[20]={9,3,0,4,1,2,5,6,8,10,7},n=11; printf("\n\nBeforesorting%dnumbers:\n",n);putarr(n,aa); fun(n,aa); printf("\nAftersorting%dnumbers:\n",n);putarr(n,aa);}解题答案:#include#includefun(intn,int*a){inti,j,p,t; for(j=0;j {p=j;/************found************/ for(i=j+1;i /************found************/ p=i;******************************************三、程序题:函数fun的功能是:将两个两位数的正整数a、b合并形成一个整数放在c中。合并的方式是:将a数的十位和个位数依次放在c数的个位和百位上,b数的十位和个位数依次放在c数的十位和千位上。例如,当a=45,b=12时,调用该函数后,c=2514。注意:部分源程序存在文件PROG1.C中。数据文件IN.DAT中的数据不得修改。请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。给定源程序:#includevoidfun(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;}######################################### 第04套:一、填空题:程序通过定义学生结构体变量,存储了学生的学号、姓名和3门课的成绩。所有学生数据均以二进制方式输出到文件中。函数fun的功能是从形参filename所指的文件中读入学生数据,并按照学号从小到大排序后,再用二进制方式把排序后的学生数据输出到filename所指的文件中,覆盖原来的文件内容。请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。注意:源程序存放在考生文件夹下BLANK1.C中。不得增行或删行,也不得更改程序的结构!给定源程序:#include #defineN5typedefstructstudent{ longsno; charname[10]; floatscore[3];}STU;voidfun(char*filename){
if(a[p]>a[i])
t=i;
=j)
{t=a[j];a[j]=a[p];a[p]=t;}
putarr(intn,int*z)
{inti;
for(i=1;i<= n;i++,z++)
{printf("%4d",*z);
if(!
(i%10))printf("\n");
}printf("\n");
{intaa[20]={9,3,0,4,1,2,5,6,8,10,7},n=11;
printf("\n\nBeforesorting%dnumbers:
\n",n);putarr(n,aa);
fun(n,aa);
printf("\nAftersorting%dnumbers:
for(j=0;j {p=j;/************found************/ for(i=j+1;i /************found************/ p=i;******************************************三、程序题:函数fun的功能是:将两个两位数的正整数a、b合并形成一个整数放在c中。合并的方式是:将a数的十位和个位数依次放在c数的个位和百位上,b数的十位和个位数依次放在c数的十位和千位上。例如,当a=45,b=12时,调用该函数后,c=2514。注意:部分源程序存在文件PROG1.C中。数据文件IN.DAT中的数据不得修改。请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。给定源程序:#includevoidfun(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;}######################################### 第04套:一、填空题:程序通过定义学生结构体变量,存储了学生的学号、姓名和3门课的成绩。所有学生数据均以二进制方式输出到文件中。函数fun的功能是从形参filename所指的文件中读入学生数据,并按照学号从小到大排序后,再用二进制方式把排序后的学生数据输出到filename所指的文件中,覆盖原来的文件内容。请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。注意:源程序存放在考生文件夹下BLANK1.C中。不得增行或删行,也不得更改程序的结构!给定源程序:#include #defineN5typedefstructstudent{ longsno; charname[10]; floatscore[3];}STU;voidfun(char*filename){
for(i=j+1;i /************found************/ p=i;******************************************三、程序题:函数fun的功能是:将两个两位数的正整数a、b合并形成一个整数放在c中。合并的方式是:将a数的十位和个位数依次放在c数的个位和百位上,b数的十位和个位数依次放在c数的十位和千位上。例如,当a=45,b=12时,调用该函数后,c=2514。注意:部分源程序存在文件PROG1.C中。数据文件IN.DAT中的数据不得修改。请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。给定源程序:#includevoidfun(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;}######################################### 第04套:一、填空题:程序通过定义学生结构体变量,存储了学生的学号、姓名和3门课的成绩。所有学生数据均以二进制方式输出到文件中。函数fun的功能是从形参filename所指的文件中读入学生数据,并按照学号从小到大排序后,再用二进制方式把排序后的学生数据输出到filename所指的文件中,覆盖原来的文件内容。请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。注意:源程序存放在考生文件夹下BLANK1.C中。不得增行或删行,也不得更改程序的结构!给定源程序:#include #defineN5typedefstructstudent{ longsno; charname[10]; floatscore[3];}STU;voidfun(char*filename){
p=i;
函数fun的功能是:
合并的方式是:
将a数的十位和个位数依次放在c数的个位和百位上,b数的十位和个位数依次放在c数的十位和千位上。
例如,当a=45,b=12时,调用该函数后,c=2514。
*c=(b%10)*1000+(a%10)*100+(b/10)*10+a/10;
#########################################
第04套:
函数fun的功能是从形参filename所指的文件中读入学生数据,并按照学号从小到大排序后,再用二进制方式把排序后的
学生数据输出到filename所指的文件中,覆盖原来的文件内容。
voidfun(char*filename)
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1