1、国家二级 C+机试(操作题)模拟试卷 193及答案与解析 一、基本操作题 1 给定程序中,函数 fun的功能是:在任意给定的 9个正整数中找出按升序排列时处于中间的数,将原数据序列中比该中间数小的数用该中间数替换,位置不变,在主函数中输出处理后的数据序列,并将中间数作为函数值返回。 例如,有 9个正整数: 1 5 7 23 87 5 8 21 45 按升序排列时的中间数为: 8 处理后主函数中输出的数列为: 8 8 8 23 87 8 8 21 45 请在程序的中括号处填入正确的内容 并把中括号删除,使程序得出正确的结果。 注意:源程序存放在考生文件夹下的 BLANKl C中。不得增行或删行,
2、也不得更改程序的结构 ! 试题程序: #include #defihe N 9 int fun(int x) int i, j, k, t, mid, bN; for(i=0; ibj)k=j ; if(k!=i) *found* t=bi; bi=【 1】; bk=t; *found* mid=b【 2】 ; for(i=0; i #include #include fun(int n, int*a) int i, j, p, t; for(j=0; jai) *found* t=i; if(p!=j) t=aj; aj=ap; ap=t; putarr(int n, int*z) int
3、i; for(i=1; i #include #include int fun(int*s, int t, int*k) void main() FILE*wf; int a10=876, 675, 896, 101, 301, 401, 980, 431, 451, 777, k; system(“CLS“); fun(a, 10, &k); printf(“ d, d n“, k, ak); * wf=fopen(“out clat“, “w“); fprintf(wf, “ d, d“, k, ak); fctose(wf); * 国家二级 C+机试(操作题)模拟试卷 193答 案与解析
4、 一、基本操作题 1 【正确答案】 (1)bk (2)4或 N 2 (3) 【试题解析】 数组中的 9个数任意排列,要找到按升序排列时处于中间位置的数,应首先对数组进行升序排列。因为只需找到中间位置的数即可,故不必对整个数组进行排序,只需要排列出数组的前半部分。找到中间数后,遍历原数组,将小于巾间数的元素进行替换。 填空 1:利用选择算法排序,先指定一个元素为最小,用这个数与其后的所有数进行比较,若找小于此数,则进行替换。此处考查替换操作。 填空 2:元素 mid存放中间位 置的数,数组长度为 9,因此中间元素数为 b4。 填空 3:遍历数组,当元素小于中间位置的数 (即 mid)时,进行替换
5、。 二、简单应用题 2 【正确答案】 (1)for(i=j+1; in; i+) (2)p=i; 【试题解析】 该程序是对 n个无序数实现从小到大的排序,先找出整数序列的最小项,置于指针第 1个元素的位置;再找出次小项,置于第 2个元素的位置;之后顺次处理后续元素。 (1)数组的长度为 n,所以最后一个元素的下标值为 n一 1, i的取值范围应该包括此下标值。 (2)p是中 间变量,存放值较小的元素下标。 三、综合应用题 3 【正确答案】 int fun(int*s, int t, int*k) int i; *k=0; *k所指的数是数组的下标值 * for(i=0; it; i+) if(s*ksi) *k=i; * 找到数组的最大元素,把该元素的下标赋给 k所指的数 * return s*k; *返回数组的最大元素 * 【试题解析】 本题中直接使用指针变量 k,使用时要注意对 k进行指针运算。程序一开始让 k指向数组中的 第一个元素,即木 k=0。