计算机二级c语言最新上机题库.docx
- 文档编号:30838238
- 上传时间:2024-01-30
- 格式:DOCX
- 页数:521
- 大小:145.40KB
计算机二级c语言最新上机题库.docx
《计算机二级c语言最新上机题库.docx》由会员分享,可在线阅读,更多相关《计算机二级c语言最新上机题库.docx(521页珍藏版)》请在冰豆网上搜索。
计算机二级c语言最新上机题库
二级C语言上机参考题库
第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+");
/**********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("\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 #include 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; } /**********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 #defineN80 intfun(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 #include 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(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的花括号中填入你编写的若干语句。 给定源程序: #include 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 #include intfun(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 #include 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 #include fun(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的花括号中填入你编写的若干语句。 给定源程序: #include 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; } ######################################### 第04套: 一、填空题: 程序通过定义学生结构体变量,存储了学生的学号、姓名和3门课的成绩。 所有学生数据均以二进制方式输出到文件中。 函数fun的功能是从形参filename所指的文件中读入学生数据,并按照学号从小到大排序后,再用二进制方式把排序后的 学生数据输出到filename所指的文件中,覆盖原来的文件内容。 请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。 注意: 源程序存放在考生文件夹下BLANK1.C中。 不得增行或删行,也不得更改程序的结构! 给定源程序: #include #defineN5 typedefstructstudent{ longsno; charname[10]; floatscore[3]; }STU; voidfun(char*filename) {FILE*fp;inti,j; STUs[N],t; /**********found**********/ fp
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 计算机 二级 语言 最新 上机 题库