1、国家二级( C语言)机试模拟试卷 199及答案与解析 一、程序填空题( 30分) 1 函数 fun的功能是:把形参 a所指数组中的最大值放在 a0中,接着求出 a所指数组中的最小值放在 a1中;再把 a所指数组元素中的次大值放在 a2中,把 a数组元素中的次小值放在 a3中:其余以此类推。例如:若 a所指数组中的数据最初排列为: 1、 4、 2、 3、 9、 6、 5、 8、 7,则按规则移动后,数据排列为: 9、 1、 8、2、 7、 3、 6、 4、 5。形参 n中存放 a所指数组中数据的个数。 请在程序的下划线处填入正确的内容并把下 划线删除,使程序得出正确的结果。 注意:源程序存放在考
2、生文件夹下的 BLANKl C中。不得增行或删行,也不得更改程序的结构 ! #include #define N 9 *found* void fun(int 【 1】, int n) int i, j, max, min, px, pn, t; *found* for(i=0; iaj) min=aj; pn=j; if(px!=i) t=ai; ai=max; apx=t; if(pn=i)pn=px; if(pn!=i+1) t=ai+1; ai+1=min; apn=t; main() (int bN=1, 4, 2, 3, 9, 6, 5, 8, 7, i; printf(” nTh
3、e original data: n”); for(i=0; i #include float fun(float num) int s; float n, t , pi; t=1; pi=0; n=1; s=1; *found* while(t=num) pi=pi+t ; n=n+2: s= s; *found* t=s n; pi=pi*4 ; return pi; main() float n1, n2; printf(“Enter a float number: “); Scanf(“ f“, ”,其中 b为整型数组名,故 fun函数的第一参数为整型指针,又根据 “max=aj”可知
4、第一个参数名为a,故第一空处为 “*a”。 第二空:根据题意 a所指数组中的最大值放在 a0中,接着求出 a所指数组中的最小值放在 a1中;再把 a所指数组元素中的次大值放在 a2中,把 a数组元素中的次小值放在 a3中,升序排序和降序排序的下标变化是每次在前一次的基础上+2,即 a0、 a2、 a4 降序排序, a1、 a3、 a5 升序排序,故第二空应为“2”。 第三空:选择排序法中的升序排序,首先从数组中挑选一个最小的元素,把它和第一元素交换,接着从剩下的 n-1个元素中再挑出一个最小的元素,把它和第二个元素交换,不断重复以上过程,直到比较完最后两个元素。故内层循环变量 j应该从 i+1
5、开始,因此第三空处应为 “i+1”。 二、程序修改题( 30分) 2 【正确答案】 (1)while(fabs(t)=num) (2)t=s n; 【试题解析】 (1)题干中要 求进行循环的条件是绝对值小于某范围,可以调用 C语言提供的取绝对值函数 fabs对 t取绝对值。所以将 “while(t=num)“改为“while(fabs(t)=num)“。 (2)表达式 s n中, n是浮点型,而运算符只能用于整数运算,且要进行的是除法运算而不是求余运算。所以,第二个标识下 “t=s n; “应该改为 “t=s n; “。 三、程序设计题( 40分) 3 【正确答案】 int c33; int i, j; for(i=0; i3; i+) for(j=0; j3; j+) cij=aji; 矩阵的转置 bij=aij+cij; 【试题解析】 (1)首先,将 a所指数组元素中的值进行转置并放到 c所指数组中。 (2)矩阵相加是指把两个矩阵中下标相同的元素的值一一对应相加。