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

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

1、国家二级 C语言机试(操作题)模拟试卷 597及答案与解析 一、程序填空题 1 下列给定程序中,函数 fun的功能是:将形参 a所指数组中的前半部分元素中的值与后半部分元素中的值对换。形参 n中存放数组中数据的个数,若 n为奇数,则中间的元素不动。 例如,若 a所指数组中的数据为: 1, 2, 3, 4, 5, 6, 7, 8, 9,则调换后为:6, 7, 8, 9, 5, 1, 2, 3, 4。 请在程序的下画线处填入正确的内容并将下画线删除,使程序得出正确的结果。 注意:部分源程序给出如下。 不得增行或删行,也 不得更改程序的结构 ! 试题程序: #include stdio h #def

2、ine N 9 void fun(int a, int n) int i, t, p; *found* p=(n 2=0)?n 2: n 2+【 1】 ; for(i=0; i n 2; i+) t=ai; *found* ai=ap+【 2】 ; *found* 【 3】 =t; main() int bin=1, 2, 3, 4, 5, 6, 7, 8, 9), i; printf(“ nThe original data: n“); for(i=0; i N; i+) printf(“ 4d“, bi); printf(“ n“); fun(b, N); printf(“ nThe da

3、ta after moving: n“); for(i=0; i N; i+) printf(“ 4d“, bi); printf(“ n“); 二、程序修改题 2 下列给定程序中函数 fun的功能是:把从主函数中输入的 3个数,最大的数放在a中,中间的数放在 b中,最小的数放在 c中。 例如,若输入的数为: 55 12 34,输出的结果应当是: a=55 0, b=34 0,c=12 0。 请改正程序中的错误,使它能得出正确的结果。 注意:不要改动 main函数,不得增行或删行,也不得更改程序的结构 ! 试题程序: #include stdio h void fun(float*a, flo

4、at*b, float*c) *found* float*k; if(*a *b) k=*a; *a=*b; *b=k; *found* if(*a *c) k=*c; *c=*a; *a=k; if(*b *c) k=*b; *b=*c; *c=k; main() float a , b , c; printf(“Input a b c: “); scanf(“ f f f“, a, b, c); printf(“a= 4 1 f, b= 4 1 f, C= 4 1 f n n“, a, b, c); fun( a, b, &c); printf(“a= 4 1 f, b= 4 1 f, C

5、= 4 1 f n n”, a, b, c); 三、程序设计题 3 学生的记录由 学号和成绩组成, N名学生的数据已放入主函数中的结构体数组 S中,请编写函数 fun,其功能是:把分数最高的学生数据放在 b所指的数组中。注意:分数最高的学生可能不止一个,函数返回分数最高的学生人数。 注意:部分源程序给出如下。 请勿改动主函数 main和其他函数中的任何内容,仅在函数 fun的花括号中填入你编写的若干语句。 试题程序: #inClude stdio h #define N 1 6 typedef Struct char hum10; int s; STREC; int fun(STREC *a,

6、 STREC*b) void main() STREC sN=“GA005“, 85), “GA003“, 76, “GA002“, 69), “ GA004“, 85, “GA001“, 91, “ GA007“, 72, “GA008“, 64), “GA006“, 87, “ GA015“, 85, “GA013“, 91, “ GA012“, 64), “GA014“, 91), “ CA011“, 77), “C|A017“, 64, “ GA018“, 64, “GA016“, 72, STREC hN; int i, n; n=fun(s, h); printf(“The d h

7、ighest score: n“, n); for(i=0; i n; i+) printf(“ s 4d n“, hi num, hi s); *输出最高分学生的学号和成绩 * printf(“ n“); 国家二级 C语言机试(操作题)模拟试卷 597答案与解析 一、程序填空题 1 【正确答案】 (1)1 (2)i (3)ap+i或 *(a+p+i) 【试题解析】 条件运算符组成条件表达式的一般形式:表达式 17表达式 2:表达式 3。其求值规则为:如果表达式 1的值为真,则以表达式 2的值作为条件表达式的值,否则以表达式 3的值作为整个条件表达式的值。 填空 1:该处是判断数组元素的个数是

8、奇数还是偶数,为奇数时要使当前位置加1,使 p指向数组中间位置。 填空 2和填空 3:这里是一个比较常见的数组位置调换程序,应填入 i和 ap+i或*(a+p+i)。 变量交换算法:如果变量 a、 b互换,需借助第 3个变量 temp完 成,即 temp=a;a=b; b=temp;。 二、程序修改题 2 【正确答案】 (1)noat k; (2)if(*a *c) 【试题解析】 本题考查:变量定义,根据给定程序语句确定变量类型; if语句条件表达式。 (1)观察程序中的 k,在赋值语句中, k是以变量的形式进行赋值而非指针,所以将k定义为指针是错误的。 (2)此处 if语句是为了将小于 *c

9、的值放入 *c中,所以改为 if(*a *c)。 三、程序设计题 3 【正确答案】 int fun(STREC * a, STREC* b) int i, j=0, max=a0 s; for(i=0; i N; i+) if(max ai s) *找出最大值 * max=ai s; for(i=0; i N; i+) if(max=ai s) bj+=ai; *找出成绩与 max相等的学生的记录,存入结构体 b中 * return j; *返回最高成绩的学生人数 * 【试题解析】 本题考查:结构体数组操作;用循环判断结构查找数组中的最大值。 该程序使用两个循环判断语句,第 1个循环判断语句的作用是找出最大值;第 2个循环判断 语句的作用是找出与 max相等的成绩 (即最高成绩 )的学生记录,并存入 b中。 对于如何找出数组中最大值 (多个相等 )的方法,我们已经不陌生。如何对结构体数组进行类似操作呢 ? 掌握以下语句: for(i=0; i N; i+) if(max ai s)max=ai s;

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

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

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