1、国家二级 C语言机试(操作题)模拟试卷 130及答案与解析 一、程序填空题 1 函数 fun的功能是:将形参 a所指数组中的前半部分元素中的值和后半部分元素中的值对换。形参 n中存放数组中数据的个数,若 n为奇数,则中间的元素不动。 例如:若 a所指数组中的数据依次为: 1、 2、 3、 4、 5、 6、 7、 8、 9,则调换后为: 6、 7、 8、 9、 5、 1、 2、 3、 4。 请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。 注意:源程序存放在考生文件夹下的 BLANK1 C中。 不得增 行或删行,也不得更改程序的结构 ! #include #define N
2、 9 void fun(int a, int n) int i, t, P; *found* P= (n 2=0)?n 2: n 2+_1_; for(2=0; i void fun(float: *a, float *b, float *c) *found* float *k; if(*a*c) k=*c; *c=*a; *a=k; if(*b #define N 16 typedef struct char num10; int s; STREC; int fun(STREC *a, STREC *b) main() STREC sN=“GA05“, 85, “GA03“, 76, “GA
3、02“, 69, “GA04“, 85, “GA01“, 91, “GA07“, 72, “GA08“, 64, “GA06“, 87, “GA015“, 85, “GA013“, 91, “GA012“, 64, “GA014“, 91, “GA011“, 77, “GA17“, 64, “GA018“, 64, “GA016“, 72; STREC hN; int i, n; FILE *out; n=fun(s, h); printf (“The d highest score: n“, n); for(i=0; ic,则进行对调,又把大数放在 c中,这样的逻辑显然是混乱的。因此第二个标
4、识下 “if(*a*c)”应该改为 “if(*a*c)”。 三、程序设计题 3 【正确答案】 int i, mex=a 0 s, n=0; for(i=1; iN; i+) if(mexai s)max=ai s; *找出最高成绩 * for(i=0; iN; i+) if(max=ai s)bn+=ai; *找相等的最高成绩并存入数组 b中 * return n; *返回符合条件的人数 * 【试题解析】 程序功能是把分数最高的学生数据放在 h所指的数组中。 (1)要把最高分数的学生数据放在数组中,首先求出最高分数,再使用一个 for循环把所有的成绩进行比较,找出最高的分数来。 (2)找出所有与最高分数相等的学生 ,并将最高分数的人数累加。