1、国家二级 C语言机试(操作题)模拟试卷 390及答案与解析 一、程序填空题 1 给定程序中,函数 fun的作用是:不断从终端读入整数,由变量 a统计大于 0的个数,用变量 c来统计小于 0的个数,当输入 0时结束输入,并通过形参 pa和 pb把统计的数据传回主函数进行输出。 请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。 注意:源程序存放在考生文件夹下的 BLANK1 C中。 不得增行或删行,也不得更改程序的结构 ! 1 #include stdio h 2 void fun(int *px, int *py) 3 4 *found* 5 int_(1)_; 6 sca
2、nf( d, k); 7 *found* 8 while_(2)_ 9 if(k 0) a+; 10 if(k 0)b+; 11 *found* 12 _(3)_; 13 14 *px=a; *py=b; 15 main() 16 int x, y; 17 fun( 21 fprintf(wf, d, d n, k, ak); 22 23 fclose(rf); 24 fclose(wf); 国 家二级 C语言机试(操作题)模拟试卷 390答案与解析 一、程序填空题 1 【正确答案】 (1)a=0,c=0,k (2) (k!=0) (3)scanf( d, 即让我们输入 k的数据,再根据题意,
3、就可以知道这里的 k是我们不断输入的整数,而整个程序也仅仅需要这一个数据的输入,所以这一空定义的就是我们需要 输入的数据 k,同时下面出现在 a, c也都没有定义,所以这一空应该填“a=0,c=0,k”。 第二空: “while(2); ”这一空出现在 fun函数中的 while循环中,是要给出 while循环的条件语句。根据题意我们就可以知道,这里循环是只要数字不 0就一直进行,而 while循环内部也能看到 k 0和 k 0时的统计步骤,所以这里 while循环应该就是 while循环的终止条件, k不等于即可,即这一空应该填 “(k!=0)”(注意这里应该加上条件语句应有的括号 )。第三
4、空: “(3) ; ” 这一空在 while循环中 ,此 while循环是数字的判定函数。这一空前面已经有了对于数字大于 0或者小于 0的判断,也有相应的 a+和 c+来进行个数统计,但是我们会发现这里功能已经齐全,只不过没有达到题目要求的不断的输入,所以这里循环还要继续输入 k的值才能实现题目所达到的要求,所以这一空应该填的是 “scanf( d,”在程序中显然是一个函数,因此应将后面的分号去掉。 (2)第二个标识下面的 if语句后面缺少括号,因此, “if!(n i)”应改为 “if(!(ni)”。 该题主要考查标点符号、运算符、基本定义。 三、程序设计题 3 【正确答案】 1 int i, pos=0, max=* s; 2 for(i=1; i t; i+) 3 if(max *(s+i) 4 max=*(s+i); 5 pos=i; 6 7 k=pos; 【试题解析】 (1)该程序功能是求最大元素在数组中的下标。它的解题思路是,用最大值变量 max标记第一个待找数据,逐个把所有待找数据和 max进行比较,并用 pos标记其当前最大值所在位置,从而找出最大值。 (2)从已给部分源程序的 main主函数开始入手,核心函数 “fun(a, 10, &k); ”中的参数 a存放着给出的整数, fun函数实现查找最大元素的下标。