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

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

1、国家二级 C语言机试(操作题)模拟试卷 606及答案与解析 一、程序填空题 1 使用 VC+2010打开考生文件夹下 blank1中的解决方案。此解决方案的项目中包含一个源程序文件 blank1 c。在此程序中,函数 fun的功能是:计算形参 x所指数组中 N个数的平均值 (规定所有数均为正数 ),作为函数值返回,并将大于平均值的数放在形参 y所指数组中,在主函数中输出。 例如,有 10个正数: 46、 30、 32、 40、 6、 17、 45、 15、 48、 26,其平均值为30 500000。 主函数中输出: 4632404548。 请 在程序的下画线处填入正确的内容并把下画线删除,使

2、程序得出正确的结果。注意:部分源程序在文件 BLANK1 C中。 不得增行或删行,也不得更改程序的结构 ! 试题程序: #lnclucte stdlib h #include stdio h #define N10 double fun(double x, double*y) int i, j; double av; *found* av=【 1】 ; *found* for(i=0; i N; i+) av=av+【 2】 ; for(i=j=0; i N; i+) *found* if(xi av)y【 3】 =xi; yj=-1; return aV; main() int i; dou

3、ble xN, yN; for(i=0; i N; i+) xi=rand() 50; printf(“ 4 0f“, xi); ) prrintf(“ n“); printf(“ nThe average is: f n“, fun(x, y); for(i=0; yi =0; i+) printf(“ 5 1f“, yi); printf(“ n“); 二、程序修改题 2 使用 VC+2010打开考生文件夹下 modi1中的解决方案。此解决方案的项目中包含一个源程序文件 nodi1 C。此程序建立了 个带头结点的单向链表,并用随机函数为各结点赋值。函数 fun的功能是将单向链表结点 (不包

4、括头结点 )数据域为偶数的值累加起来,并且作为函数值返回。 请改正函数 fun中的错误,使它能得出正确的结果。 注意:部分源程序 在文件 MODI1 C中,不要改动 main函数,不得增行或删行,也不得更改程序的结构 ! 试题程序: #include stdio h #include conio h #include stdlib h typedef struct aa intdata; struct aa*next; NODE; int fun(NODE*h) (int sum=0; NODE*p; p=h- next; *found* while(p- next) if(p- data 2

5、=0) sum+=p- data; *found* p=h- next; return sum; NODE*creatlink(int n) NODE*h, *p, *s; int i; h=p=(NODE*)malloc(Sizeof(NODE); for(i=1; i n; i+) s=(NODE*)malloc(Sizeof(NODE); s- data=rand() 16; s- next=p- next; p- next=s; p=p- next; p- next=NULL; return h; outlink(NODE*h) NODE*p; p=h- next; printf(“

6、n n The LIST: n nHEAD“); while(p) printf(“- d“, p- data); p=p- next; printf(“ n“); void main() NODE*head; int sum; system(“CLS“); head=creatlink(10); outlink(head); sum=fun(head); printf(“ nSUM= d“, sum); 三、程序设计题 3 使用 VC+2010打开考生文件夹下 prog1中的解决方案。此解决方案的项目中包含一个源程序文件 prog1 c。在此程序中,规定输入的字符串中只包含字母和 *号。编写

7、函数 fun,其功能是:删除字符串中所有的 *号。编写函数时,不得使用 C语言提供的字符串函数。 例如,字符串中的内容为 “*A*BC*DEF*G*”,删除后,字符串中的内容应当是 “ABCDEFG”。 注意:部分源程序给出如下。 请勿改 动主函数 main和其他函数中的任何内容,仅在函数 fun的花括号中填入你编写的若干语句。 试题程序: #include conio h #include stdio h void fun(char*a) void main() char s81; printf(“Enter a string: n“); gets(s); fun(s); printf(“T

8、he string after deleted: n“); puts(s); 国家二级 C语言机试(操作题)模拟试卷 606答案与 解析 一、程序填空题 1 【正确答案】 (1)0 0 (2)xi N (3)j+ 【试题解析】 填空 1:通过上面的程序可以看出此空考的是给变量赋初值, av代表的是平均值,因此 av的初值应该是 0 0。 填空 2:通过 for循环可知,此空代表求平均值,因此应该填写 xi N。 填空 3:先把大于平均值的数放在形参 y所指数组中,然后使下标值加 1,因此此空应该填 j+。 二、程序修改题 2 【正确答案】 (1)while(p!=NULL) (2)p=p- n

9、ext; 【试题解析】 (1)判 断当前指针 p指向的结点是否存在,若存在则对该结点数据域进行判断操作。 (2)判断结束后指针指向下一个结点。 三、程序设计题 3 【正确答案】 void tun(char*a) int i, j=0; for(i=0; ai!= 0; i+) if(ai!=s) aj+=ai; *若不是要删除的字符 *则保留 * aj= 0; *最后加上字符串结束符 0* 【试题解析】 用循环操作从字符串开始往后逐个进行比较,若不是要删除的字符(用 if(ai!=*)来控制 )则保留。变量 i和 j用来表示原字符串的下标和删除 *号后新字符串的下标。注意,下标变量 j要从 0开始,最后还要加上字符串结束标识 0。

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

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

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