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

上传人:registerpick115 文档编号:498331 上传时间:2018-11-28 格式:DOC 页数:5 大小:32.50KB
下载 相关 举报
[计算机类试卷]国家二级C语言机试(操作题)模拟试卷387及答案与解析.doc_第1页
第1页 / 共5页
[计算机类试卷]国家二级C语言机试(操作题)模拟试卷387及答案与解析.doc_第2页
第2页 / 共5页
[计算机类试卷]国家二级C语言机试(操作题)模拟试卷387及答案与解析.doc_第3页
第3页 / 共5页
[计算机类试卷]国家二级C语言机试(操作题)模拟试卷387及答案与解析.doc_第4页
第4页 / 共5页
[计算机类试卷]国家二级C语言机试(操作题)模拟试卷387及答案与解析.doc_第5页
第5页 / 共5页
亲,该文档总共5页,全部预览完了,如果喜欢就下载吧!
资源描述

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

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

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

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

5、; 56 outlist(head); 57 二、程序修改题 2 给定程序 MODI1 C中函数 fun的功能是:统计字符串中各元音字母 (即: A、E、 I、 O、 U)的个数。注意:字母不分大、小写。例如:若输入: THIs is a boot,则输出应该是: 1、 0、 2、 2、 0。 请改正程序中的错误,使它能得出正确的结果。 注意:不要改动 main函数,不得增行或删行,也不得更改程序的结构 ! 1 #include stdio h 2 void fun(char *s, int num5) 3 int k, 2=5; 4 for(k=0; k i; k+) 5 *found* 6

6、 numi=0; 7 for(; *s; s+) 8 i=-1 ; 9 *found* 10 switch(s) 11 case a: case A: i=0; break; 12 casee: caseE: i=1; break; 13 case i: case T: i=2; break; 14 case o: case0: i=3; break; 15 caseu: caseU: i=4; break; 16 17 if( =0) 18 numi+; 19 20 21 main() 22 char s181; int num15, i; 23 printf( nPlease enter

7、a string: ); gets(s1); 24 fun(s1, num1); 25 for(i=0; i 5; i+)printf( d, num1i); printf( n); 26 三、程序设计题 3 请编写一个函数 fun,它的功能是: 计算 n门课程的平均分,计算结果作为函数值返回。 例如:若有 5门课程的成绩是: 90 5, 72, 80, 61 5, 55。则函数的值为:71 80。 注意:部分源程序存在文件 PROG1 C中。 请勿改动主函数 main和其他函数中的任何内容,仅在函数 fun的花括号中填入你编写的若干语句。 1 #include stdio h 2 float

8、 fun(float *a, int n) 3 4 5 main() 6 float score30=90 5, 72, 80, 61 5, 55, aver; 7 void NONO(); 8 aver=fun(score, 5); 9 printf( nAverage score is: 5 2f n, aver); 10 NONO(); 11 12 void NONO() 13 *本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。 * 14 FILE *fp, *wf; 15 int i, j; 16 float aver, score5; 17 fp=fopen(in dat

9、, r); 18 wf=fopen(out dat, w); 19 for(i=0; i 10; i+) 20 for(j=0; j 5; j+)fscanf(fp, f, , scorej); 21 aver=fun(score, 5); 22 fprintf(wf, 5 2f n, aver); 23 24 fclose(fp); 25 fclose(wf); 国家二级 C语言机试(操作题)模拟试卷 387答案与解析 一、程序填空题 1 【正确答案】 (1)next (2)0或 NULL (3) r 【试题解析】 函数 fun的功能是将带头结点的单向链表逆置。第一空: “p=h-_1_;

10、”对结点 p进行初始化,由审题分析可知, p初始化为链表的第二个结点,即 p- next,故第一空处应为 “next”。第二空: “if(p=_2_)return; ”如果链表只有一个结点,无需逆置,即第二空处为 “0”或 “ 0”或 “NULL”。第三空:循环内完成结点的指针指向前一个结点, “r=q- next; ”r已经指向 q的下一个结点, “q- next=p; ”将 q结点指向链表的前一个结点, “p=q; ”是将 p结 点往后移动一个结点位置,第三空处是 q结点往后移动一个结点位置,即第三空处为 “r”。 二、程序修改题 2 【正确答案】 (1)numk=0; (2)switch

11、(*s) 【试题解析】 (1)第一个标识下的 for循环过程是将 num数组中的变量初始值设置为 0,用来统计每一个元音字母出现的个数, for循环中的循环条件表达式中的变量是 k,所以第二个标识下 “numi=0; ”改为 “numk=0; ”。 (2)第二个标识下的 switch-case条件选择的功能应该是对 s指针指向的字符串中的每一个 字符进行判断,不应该是 s的数组名,所以第三个标识下 “switch(s)”改为“switch(*s)”。 三、程序设计题 3 【正确答案】 1 int i; 2 float ave=0 0; 3 for(i=0; i n; i+)ave=ave+ai; 4 ave=ave n; 5 return ave ; 【试题解析】 (1)在函数中首先定义平均分的变量,并将其初始化值置为 0。 (2)然后在 for循环中,求得所有成绩的总分,并在总分的基础上求得平均分。

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

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

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