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

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

1、国家二级 C语言机试(操作题)模拟试卷 685及答案与解析 一、程序填空题 1 函数 fun的功能是:在有 n个元素的结构体数组 std中,查找有不及格科目的学生,找到后输出学生的学号;函数的返回值是有不及格科目的学生人数。 例如,主函数中给出了 4名学生的数据,则程序运行的结果为: 学号: N1002学号: N1006 共有 2位学生有不及格科目 请在程序的下画线处填入正确的内容,并把下画线删除,使程序得出正确的结果。 注意:不得增行或删行,也不得更改程序的结构 ! 试题程序: #include stdio h typedef struct char num8; double score2;

2、 *found* _1_; int fun(STU std, int n) int i, k=0; for(i=0; i n; i+) *found* if(stdi score0 60_2_ stdi score1 60) k+; pfinff(“学号: s“, stdi num); *found* return_3_; main() STU std4=“N1001“, 76 5, 82 0, “N1002“, 53 5, 73 0, “N1005“, 80 5, 66 0, “N1006“, 81 0, 56 0; pfinff(“ n共有 d位学生有不及格科目 n“ fun(std, 4

3、); 二、程序修改题 2 下列给定的程序中,函数 fun的功能是:计算并输出 k以内最大的 10个能被 13或 17整除的自然数之和。 k的值由主函数传入,若 k的值为 500,则函数的值为4622。 请改正程序中的错 误,使它能得出正确的结果。 注意:不要改动 main函数,不得增行或删行,也不得更改程序的结构 ! 试题程序: #include stdio h #include conio h #include stdlib h int fun(int k) int m=0, mc=0, j; while(k =2)&(mc 10) *found* if(k 13=0)|(k 17=0) m

4、=m+k; mc+; k-; *found* return m; void main() printf(“ d n“, fun(500); 三、程序设计题 3 请编写函数 fun,对长度为 7个字符的字符串,除首、尾字符外,将其余 5个字符按 ASCII码降序排列。例如,原来的字符串为 “CEkedca“,排序后输出为“CedcEAa“。 注意:请勿改动主函数 main和其他函数中的任何内容,仅在函数 fun的花括号中填入你编写的若干语句。 试题程序: #include stdio h #include ctype h #include string h void fun(char*s, in

5、t num) main() void NONO(); char s10; printf(“输入 7个字符的字符串: “); gets(s); fun(s, 7); printf(“ n s“, s); NONO(); void NONO() *请在此函数内打开文件,输入测试数据, 调用 fun函数,输出数据,关闭文件。 * char s10; FILE*rf, *wf; int i=0; rf=fopen(“in dat“, “r“); wf=fopen(“out dat“, “w“); while(i 10) fgets(s, 10, rf); s7=0; fun(s, 7); fprint

6、f(wf, “ s n“, s); i+: fclose(rf); fclose(wf); 国家二级 C语言机试(操作题)模拟试卷 685答案与解析 一、程序填空题 1 【正确答案】 (1)STU (2)| (3)k 【试题解析】 本题考查:对结构体的定义和使用,以及逻辑运算符的使用。 填空 1: STU结构体别名,通过 main()中的语 句可知。 填空 2: |只要学生两门课成绩有不及格的,就算不及格,因此使用或运算。 填空 3: k返回的是不及格的学生个数,有题意可知 k是累计个数的。 二、程序修改题 2 【正确答案】 (1)if(k 13=0)|(k 17=0) (2)return m

7、; 【试题解析】 (1)C语言中, x能被 y整除的表示方法是 x y=0,而不是题目中所表示的 x y=0。所以, if(k 13=0)|(k 17=0)修改后的结果应该是答案所示信息。 (2)程序中缺少程序完整所需的 “”,此类信息在做题 时一定要注意,可以在做题前先运行一下程序,这样明显的错误一般都会有错误信息显示出来。比如丢失 “”的错误信息是 “Compound statement missingin function fun”。 说明:做题之前先运行一下程序,如果有书写错误,系统会提示,这样可以简化题目。 三、程序设计题 3 【正确答案】 void fun(char*s, int

8、num) char ch: int i, j; for(i=1; i 6; i+) fbr(j=i+1; j 6; j+) if(*(s+i) *(s+j) ch=*(s+j); *(s+j)=*(s+i); *(s+i)=ch; 【试题解析】 本题考查: for循环语句;字符的交换;指针型变量;指针移动。 指针移动:指针经常用于指向数组和字符串,通过指针的移动实现对数组或字符串的遍历。数组和字符串都是用一段连续的地址来存放元素的。所以,指针的移动也就是对地址的加减。 本题要求对长度为 7的字符串,除首、尾字符外,将其余 5个字符按 ASCII码降序排列,因而要用双重循环进行排序。注意第 1个循环的变量的初值 i=1,第 2个循环的变量的初值为 j=i+1;这是因为题目要求除首、尾字符外,将其余 5个字符按 ASCII码降序排列。

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

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

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