1、二级计算机等级考试二级C语言上机题库12011年计算机等级考试二级C语言上机题库(1)一、填空题:程序通过定义学生结构体变量,存储了学生的学号、姓名和3门课的成绩。所有学生数据均以二进制方式输出到文件中。函数fun的功能是重写形参filename所指文件中最后一个学生的数据,即用新的学生数据覆盖该学生原来的数据,其它学生的数据不变。请在程序的下划线处填入正确的内容并把下划线删除, 使程序得出正确的结果。注意:源程序存放在考生文件夹下BLANK1.C中。不得增行或删行,也不得更改程序的结构!给定源程序:#include #define N 5typedef struct student long
2、 sno;char name10;float score3; STU;void fun(char *filename, STU n)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()STU tN= 10001,MaChao, 91, 92, 77, 10002, CaoKai, 75, 60, 88,10003,LiSi, 85, 70, 78, 100
3、04, FangFang, 90, 82, 87,10005,ZhangSan, 95, 80, 88;STU n=10006,ZhaoSi, 55, 70, 68, ssN;int i,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(nThe original data :nn);for (j=0; j printf(nNo: %
4、ld Name: %-8s Scores: ,ssj.sno, ssj.name);for (i=0; i3; i+) printf(%6.2f , ssj.scorei);printf(n);fun(student.dat, n);printf(nThe data after modifing :nn);fp = fopen(student.dat, rb);fread(ss, sizeof(STU), N, fp);fclose(fp);for (j=0; j printf(nNo: %ld Name: %-8s Scores: ,ssj.sno, ssj.name);for (i=0;
5、inext=NULL;for(i=1; idata=rand()%m; s-next=p-next;p-next=s; p=p-next;/*found*/return p;outlink(NODE *h)NODE *p;p=h-next;printf(nnTHE LIST :nn HEAD );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*
6、/return h;三、程序题:请编写函数fun, 函数的功能是:统计一行字符串中单词的个数,作为函数值返回。一行字符串在主函数中输入, 规定所有单词由小写字母组成,单词之间由若干个空格隔开, 一行的开始没有空格。 注意:部分源程序在文件PROG1.C中。请勿改动主函数main和其它函数中的任何内容, 仅在函数fun的花括号中填入你编写的若干语句。给定源程序:#include #include #define N 80int fun(char *s)main()char lineN; int num=0;void NONO ();printf(Enter a string :n); gets(
7、line);num=fun(line);printf(The number of word is : %dnn,num);NONO();void NONO ()/* 请在此函数内打开文件,输入测试数据,调用 fun 函数,输出数据,关闭文件。 */FILE *rf, *wf ; int i, num ; char lineN, *p ;rf = fopen(in.dat,r);wf = fopen(out.dat,w);for(i = 0 ; i 0)s = s/100;*t = s%10 * sl + *t;/*found*/sl = sl*100;main()long s, t;print
8、f(nPlease enter s:); scanf(%ld, &s);fun(s, &t);printf(The result is: %ldn, t);解题答案:/*found*/void fun (long s, long *t)/*found*/sl=sl*10;*三、程序题:函数fun的功能是:将两个两位数的正整数a、b合并形成一个整数放在c中。 合并的方式是:将a数的十位和个位数依次放在c数的个位和百位上, b数的十位 和个位数依次放在c数的千位和十位上。 例如,当a=45,b=12时,调用该函数后,c=1524。注意: 部分源程序存在文件PROG1.C中。数据文件IN.DAT中的
9、数据不得修改。请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。给定源程序:#include void fun(int a, int b, long *c)main()int a,b; long c;void NONO ();printf(Input a, b:);scanf(%d,%d, &a, &b);fun(a, b, &c);printf(The result is: %ldn, c);NONO();void NONO ()/* 本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。 */FILE *rf, *wf ;int i, a,b
10、 ; long c ;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=%ldn, a, b, c);fclose(rf);fclose(wf);解题答案:*c=(b/10)*1000+(a%10)*100+(b%10)*10+(a/10);2011年计算机等级考试二级C语言上机题库(3)一、填空题:给定程序中,函数fun的功能是:将自然数110以及它们的平方根写到名为 myfile3
11、.txt的文本文件中,然后再顺序读出显示在屏幕上。 请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。注意:源程序存放在考生文件夹下的BLANK1.C中。 不得增行或删行,也不得更改程序的结构!给定源程序:#include #include int fun(char *fname)FILE *fp; int i,n; float x;if(fp=fopen(fname, w)=NULL) return 0;for(i=1;i=10;i+)/*found*/fprintf(_1_,%d%fn,i,sqrt(double)i);printf(nSucceed!n);/*foun
12、d*/_2_;printf(nThe data in file :n);/*found*/if(fp=fopen(_3_,r)=NULL)return 0;fscanf(fp,%d%f,&n,&x);while(!feof(fp)printf(%d %fn,n,x); fscanf(fp,%d%f, &n,&x);fclose(fp);return 1;main()char fname=myfile3.txt;fun(fname);解题答案:/*第一空*/fprintf(fp,%d %fn,i,sqrt(double)i);printf(nSucceed!n);/*第二空*/fclose(fp
13、);/*第三空*/if(fp=fopen(fname,r)=NULL)*二、改错题:给定程序MODI1.C中fun函数的功能是:将n个无序整数从小到大排序。请改正程序中的错误,使它能得出正确的结果。 注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!给定源程序:#include #include fun (int n, int *a)int i, j, p, t;for (j = 0; j p = j;/*found*/for (i=j+1; i if (apai)/*found*/t=i;if (p!=j)t = aj; aj = ap; ap = t;putarr(int
14、n, int *z)int i;for (i = 1; i = n; i+, z+)printf(%4d, *z);if (!(i%10) printf(n); printf(n);main()int aa20=9,3,0,4,1,2,5,6,8,10,7, n=11;printf(nnBefore sorting %d numbers:n, n); putarr(n, aa);fun(n, aa);printf(nAfter sorting %d numbers:n, n); putarr(n, aa);解题答案:#include #include fun (int n, int *a)in
15、t i, j, p, t;for (j = 0; j p = j;/*found*/for(i=j+1;iN;I+) /*found*/p=i;*三、程序题:函数fun的功能是: 将两个两位数的正整数a、b合并形成一个整数放在c中。 合并的方式是: 将a数的十位和个位数依次放在c数的个位和百位上, b数的十位 和个位数依次放在c数的十位和千位上。例如, 当a=45, b=12时, 调用该函数后, c=2514。注意: 部分源程序存在文件PROG1.C中。数据文件IN.DAT中的数据不得修改。请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。给定源程序:
16、#include void fun(int a, int b, long *c)main()int a,b; long c;void NONO ();printf(Input a, b:);scanf(%d,%d, &a, &b);fun(a, b, &c);printf(The result is: %ldn, c);NONO();void NONO ()/* 本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。 */FILE *rf, *wf ;int i, a,b ; long c ;rf = fopen(in.dat, r);wf = fopen(out.dat,w);for(
17、i = 0 ; i 10 ; i+) fscanf(rf, %d,%d, &a, &b);fun(a, b, &c);fprintf(wf, a=%d,b=%d,c=%ldn, a, b, c);fclose(rf);fclose(wf);解题答案:*c=(b%10)*1000+(a%10)*100+(b/10)*10+a/10;2011年计算机等级考试二级C语言上机题库(4)一、填空题:程序通过定义学生结构体变量,存储了学生的学号、姓名和3门课的成绩。所有学生数据均以二进制方式输出到文件中。函数fun的功能是从形参filename所指的文件中读入学生数据,并按照学号从小到大排序后,再用二进制方式把排序后的学生数据输出到filename所指的文件中,覆盖原来的文件内容。请在程序的下划线处填入正确的内容并把下划线删除, 使程序得出正确的结果。注意:源程序存放在考生文件夹下BLANK1.C中。不得增行或删行,也不得更改程序的结构!给定源程序:#include #define N 5typedef struct student long sno;char name10;float score3; ST
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1