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

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

1、国家二级 C语言机试(操作题)模拟试卷 378及答案与解析 一、程序填空题 1 给定程序中,函数 fun的功能是将带头节点的单向链表结点数据域中的数据从小到大排序。即若原链表结点数据域从头至尾的数据为: 10、 4、 2、 8、 6,排序后链表结点数据域从头至尾的数据为: 2、 4、 6、 8、 10。 请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。 注意:源程序存放在考生文件夹下的 BLANK1 C中。 不得增行或删行,也不得更改程序的结构 ! 1 #include stdio h 2 #include stdlib h 3 #define N 6 4 typedef

2、 struct node 5 int data; 6 struct node *next; 7 NODE; 8 void fun(NODE *h) 9 NODE *p, *q; int t; 10 *found* 11 p=_1_; 12 while(p) 13 *found* 14 q=_2_; 15 while(q) 16 *found* 17 if(p- data_3_q- data) 18 t=p- data; p- data=q- data; q- data=t; 19 q=q- next; 20 21 p=p- next; 22 23 24 NODE *creatlist(int

3、a) 25 NODE *h, *p, *q; int i; 26 h=(NODE *)malloc(sizeof(NODE); 27 h- next=NULL; 28 for(i=0; i N; i+) 29 q=(NODE *)malloc(sizeof(NODE); 30 q- data=ai; 31 q- next=NULL; 32 if(h- next=NULL)h- next=p=q; 33 elsep- next=q; p=q; 34 35 return h; 36 37 void outlist(NODE *h) 38 NODE *p; 39 p=h- next; 40 if(p

4、=NULL)printf(The list is NULL! n); 41 else 42 printf( nHead); 43 do 44 printf(- d, p- data); p=p- next; 45 while(p!=NULL); 46 printf(- End n); 47 48 49 main() 50 NODE *head; 51 int aN=0, 10, 4, 2, 8, 6; 52 head=creatlist(a); 53 printf( nThe original list: n); 54 outlist(head); 55 fun(head); 56 print

5、f( nThe list after sorting: n); 57 outlist(head); 58 二、程序修改题 2 给定程序 MODI1 C中函数 fun的功能是:为一个偶数寻 找两个素数,这两个素数之和等于该偶数,并将这两个素数通过形参指针传回主函数。 请改正函数 fun中指定部位的错误,使它能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构 ! 1 #include stdio h 2 #include math h 3 void fun(int a, int *b, int *c) 4 int i, j, d, y; 5 for(i=3; i =

6、a 2; i=i+2) 6 *found* 7 y=1; 8 for(j=2; j =sqrt(double)i); j+) 9 if(i j=0)y=0; 10 if(y=1) 11 *found* 12 d=a-i; 13 for(j=2; j =sqrt(double)d); j+) 14 if(d j=0)y=0; 15 if(y=1) 16 *b=i; *c=d; 17 18 19 20 main() 21 int a, b, c; 22 do 23 printf( nInput a: ); scanf( d, a); 24 while(a 2); 25 fun(a, b, c);

7、26 printf( n n d= d+ d n, a, b, c); 27 三、程序设计题 3 学生的记录由学号和成绩组成, N名学生的数据已在主函数中放入结构体数组 s中,请编写函数 fun,它的功能是:函数返回指定学号的学生数据,指定的学号在主函数中输入。若没找到指定学号,在结构体变量中给学号置空串,给成绩置 -1,作为函数值返回。 (用于字符串比较的函数是 strcmp)。 注意:部分源程序在文件 PROG1 C中。 请勿改动主函数 main和其他函数中的任何内容,仅在函数 fun的花括号中填入你编写的若干语句。 1 #include stdio h 2 #include string

8、 h 3 #define N 16 4 typedef struct 5 char num10; 6 int s; 7 STREC; 8 STREC fun(STREC *a, char *b) 9 10 11 12 main() 13 STREC sN=GA005, 85, GA003, 76, GA002, 69, A004,85, GA001, 91, GA007, 72, GA008, 64, GA006, 87,GA015, 85, GA013, 91, GA012, 64, GA014, 91, GA011,77, GA017, 64, (GA018, 64, GA016, 72;

9、 14 STREC h; 15 char m10; 16 int i; FILE *out; 17 printf(The original data: n); 18 for(2=0; i N; i+) 19 if(i 4=0) printf( n); 20 printf( s 3d, si num, si s); 21 22 printf( n nEnter the number: ); gets(m); 23 h=fun(s, m); 24 printf(The data: ); 25 printf( n s 4d n, h num, h s); 26 printf( n); 27 out=

10、fopen(out dat, w); 28 h=funs, GA013; 29 fprintf(out, 4d n, h num, h s); 30 fclose(out); 31 国家二级 C语言机试(操作题)模拟试卷 378答案与解析 一、程序填空题 1 【正确答案】 (1)h- next (2)p- next (3) = 【试题解析】 函数 fun的功能是将带头节点的单向链表结点数据域中的数据从小到大排序,在 fun函数内采用的是选择法排序。 第一空: 由审题分析可知, q从 h的下一个元素开始寻找最小值,故第一空为“h- next”。 第二空:由审题分析可知, while循环是在剩下的

11、元素当中找最小值,剩下的结点是由 q指向的链表, q从 p的后一个结点开始,故第二空处应为 “p- next”。 第三空: “if(p- data_3_q- data)”是比较 p结点和 q结点数据的大小,如果p结点的数据比 q结点的数据大,那么应该将 p结点和 q结点的数据进行交换,故第三空处应为 “ =”。 二、程序修改题 2 【正确答案】 (1)y=1; (2)d=a-i; 【试题解析】 函数的功能是为一个偶数查找两个素数,这两个素数之和等于该偶数。 (1)第一标识下 “Y=1; ”变量 Y没有定义,编译时会提示出错。题中用标志 y区别 i是否是素数, y=1是素数, y=0不是素数。第

12、一个标识下当 i是素数时, y最后的值就是进入循环结构前的初始化值 0,标识该值不是素数,所以 “Y=1; ”应该改为 “y=1; ”。 (2)在语句 “if(v=1)”中,应该是判断 (a-i)是否是素数,即 d应赋值 “a-i”而不是“d=a-i; ”,所以第二个标识下 “d=a-i; ”,改为 “d=a-i; ”。 三、程序设计题 3 【正确答案】 1 STREC c; 2 int i; 3 c num0= 0; *置初始空串 * 4 c s=-1; *置成绩为 -1* 5 for(i=0; i N; i+) 6 if(strcmp(ai num, b)=0) *判断学号是否相等 * 7 strcpy(c num, ai num); *相等,则对学号进行赋值 * 8 c s=ai s; *相等,则对成绩进行赋值 * 9 break; *退出循环体 * 10 11 return c; *返回结构体变量 * 【试题解析】 该程序功能是函数返回指定学号的学生数据,指定的学号在主函数中输入。解题思路是在循环过程中,使用 if判断表达式,将输入的学号与所有的学号进行比较,如果找到该学号,将其赋值到指定变量,否则将空格赋值到指定变量,表明没有查找到该学号。

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

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

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