[计算机类试卷]国家二级C语言机试(操作题)模拟试卷354及答案与解析.doc

上传人:deputyduring120 文档编号:498295 上传时间:2018-11-28 格式:DOC 页数:6 大小:33.50KB
下载 相关 举报
[计算机类试卷]国家二级C语言机试(操作题)模拟试卷354及答案与解析.doc_第1页
第1页 / 共6页
[计算机类试卷]国家二级C语言机试(操作题)模拟试卷354及答案与解析.doc_第2页
第2页 / 共6页
[计算机类试卷]国家二级C语言机试(操作题)模拟试卷354及答案与解析.doc_第3页
第3页 / 共6页
[计算机类试卷]国家二级C语言机试(操作题)模拟试卷354及答案与解析.doc_第4页
第4页 / 共6页
[计算机类试卷]国家二级C语言机试(操作题)模拟试卷354及答案与解析.doc_第5页
第5页 / 共6页
点击查看更多>>
资源描述

1、国家二级 C语言机试(操作题)模拟试卷 354及答案与解析 一、程序填空题 1 程序通过定义学生结构体变量,存储了学生的学号、姓名和 3门课的成绩。所有学生数据均以二进制方式输出到文件中。函数 fun的功能是重写形参 filename所指文件中最后一个学生的数据,即用新的学生数据覆盖该学生原来的数据,其他学生的数据不变。 请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。 注意:源程序存放在考生文件夹下的 BLANK1 C中。 不得增行或删行,也不得更改程序的结构 ! 1 #include stdio h 2 #define N 5 3 typedef struct stu

2、dent 4 long sno; 5 char name10; 6 float score3; 7 STU; 8 void fun(char *filename, STU n) 9 FILE*fp; 10 *found* 11 fp=fopen(_1_, rb+); 12 *found* 13 fseek(_2_, -(long)sizeof(STU), SEEK_END); 14 *found* 15 fwrite( n, sizeof(STU), 1, _3_); 16 fclose(fp); 17 18 main() 19 STU tN=10001, MaChao, 91, 92, 77

3、, 10002, CaoKai, 75, 60,88, 10003, LiSi, 85, 70, 78, 10004, FangFang, 90, 82, 87,10005, ZhangSan, 95, 80, 88; 20 STU n=10006, ZhaoSi, 55, 70, 68, ssN; 21 int i, j; FILE *fp; 22 fp=fopen(student dat, wb); 23 fwrite(t, sizeof(STU), N, fp); 24 fclose(fp); 25 fp=fopen(student dat, rb); 26 fread(ss, size

4、of(STU), N, fp); 27 fclose(fp); 28 printf( nThe original data: n n); 29 for(j=0; j N; j+) 30 printf( nNo: 1d Name: -8s Scores: , ssj sno, ssj name); 31 for(i=0; i 3; i+) printf( 6 2f, ssj scorei); 32 printf( n); 33 34 fun(student dat, n); 35 printf( nThe data after modifing: n n); 36 fp=fopen(studen

5、t dat, rb); 37 fread(ss, sizeof(STU), N, fp); 38 fclose(fp); 39 for(j=0; j N; j+) 40 printf( nNo: 1d Name: -8s Scores: , ssj sno, ssj name); 41 for(i=0; i 3; i+)printf( 6 2f, ssj scorei); 42 printf( n); 43 44 二、程序修改题 2 给定程序 modi1 c的主函数中,将 a、 b、 c三个结点链成一个单向链表,并给各结点的数据域赋值,函数 fun()的作用是:累加链表结点数据域中的数据作为函

6、数值返回。 请改正函数 fun中指定部位的错误,使它能得出正确的结果。 注意:不要改动 main函数,不得增行或 删行,也不得更改程序的结构。 1 #include stdio h 2 typedef struct list 3 int data; 4 struct list *next; 5 LIST; 6 int fun(LIST *h) 7 LIST *p; 8 *found* 9 int t; 10 p=h; 11 *found* 12 while(*p) 13 14 *found* 15 t=t+p data; 16 p=(*p) next; 17 18 return t; 19 2

7、0 main() 21 LIST a, b, c, *h; 22 a data=34; b data=51; 23 c data=87; c next= 0; 24 h= a; a next= 13 int i=0; 14 rf=fopen(in dat, r); 15 wf=fopen(out dat, w); 16 while(i 10) 17 fgets(s, 10, rf); 18 s7=0 ; 19 fun(s, 7); 20 fprintf(wf, s n, s); 21 i+; 22 23 fclose(rf); 24 fclose(wf); 25 26 main() 27 28

8、 char s10; 29 printf(输入 7个字符的字符串: ); 30 gets(s); 31 fun(s, 7); 32 printf( n s, s); 33 NONO(); 34 国家二级 C语 言机试(操作题)模拟试卷 354答案与解析 一、程序填空题 1 【正确答案】 (1)filename (2)fp (3)fp 【试题解析】 第一空: “fp=fopen(_1_, rb+); ”补充 fopen的参数, fopen的调用形式是: fp=fopen(文件名,文件使用方式 ),因此第一空处应填文件名“filename”。 第二空:此处是补充 fseek函数的参数, fseek

9、的调用形式是: fseek(fp, offset,position),其中第一个参数是文件型指针,故第二空处 应填文件型指针变量 “fp”。 第三空: fwrite的调用形式是 (buffer,size,count,fp),最后一个参数是文件型指针,故第三空处应填 “fp”,将新的学生数据写在最后一个学生数据位置。 二、程序修改题 2 【正确答案】 (1)int t改为 int t=0; (2)while(*p)改为 while(p) (3)t=t+p data;改t=t+(*p) data 【试题解析】 (1)第一个错误在定义 t时, t是数据结果,但是在一开始定义时, t应该定义为 0的,

10、这样才不会影响后面的数据 结果,以免程序出现不必要的错误所以这里应该讲 int t改为 “int t=0”。 (2)第二个错误在 fun函数中执行 while条件时 while的条件语句。这里用 “*p”,我们都知道这是指针的形式,而 “*p”的意义是指针变量 p所指向的变量的值,所以这里 “*p”是一个具体的变量,而 while(*p)的意义是 “*p”不为空时就一直执行,但是这里根据题意我们需要的链表的地址来进行题目需要的链表的计算,而单向链表的结束的标志就是链尾,链尾的特征则是指向为空,这里指向为空指的是地址比阿娘,所以这里的终止条件不应该 是 p所指向的值为 0,而是 p的地址为空,所

11、以 “while(*p)”应该改为 “while(p)”。 (3)第三个错误在 fun()函数中的计算。我们都知道,链表与结构体是紧密相连的,这一题同样用到了,而且我们进行的也是链表结点的运算,自然要用到结构体成员变量的运算。但是在 “t=t+p data”这个运算时, “p data”的意义是“p data”这个指针变量,也就是说这是指针变量的运算,指针变量是跟结点变量不同的,我们需要的是结点的数据,而不是指向它的指针的数据,所以这里的运算是完全错误的,为了符合题意, 我们应该要使用结点的结构体变量。即“=t+p data”应该改为 “t=t+(*p) data”。 三、程序设计题 3 【正确答案】 1 char t; 2 int i, j; 3 for(i=1; i num-2; i+) 4 对 n个元素进行循环选择 5 for(j=i+1; j num-1; j+) 6 if(si sj) 7 将 stri设为最大值,和剩下的 j num-1进行比较 8 t=si; 9 si=sj; 10 sj=t; 11 【试题解析】 选择排序法中的降序排序,首先从数组中挑选一个最大的元素,把它和第一个元素交换,接着从剩下的 num-1个元素中再挑出一个最大的元素,把它和第二个元素交换,不断重复以上过程,直到比较完最后两个元素。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 考试资料 > 职业资格

copyright@ 2008-2019 麦多课文库(www.mydoc123.com)网站版权所有
备案/许可证编号:苏ICP备17064731号-1