ImageVerifierCode 换一换
格式:DOC , 页数:6 ,大小:33.50KB ,
资源ID:498295      下载积分:2000 积分
快捷下载
登录下载
邮箱/手机:
温馨提示:
如需开发票,请勿充值!快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝扫码支付 微信扫码支付   
注意:如需开发票,请勿充值!
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【http://www.mydoc123.com/d-498295.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文([计算机类试卷]国家二级C语言机试(操作题)模拟试卷354及答案与解析.doc)为本站会员(deputyduring120)主动上传,麦多课文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知麦多课文库(发送邮件至master@mydoc123.com或直接QQ联系客服),我们立即给予删除!

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

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