1、国家二级 C语言机试(操作题)模拟试卷 294及答案与解析 一、程序填空题 1 给定程序中,函数 fun的功能是:将 a所指 43矩阵中第 k行的元素与第 0行元素交换。 例如,有下列矩阵: 1 2 3 4 5 6 7 8 9 10 11 12 若 k为 2,程序执行结果为: 7 8 9 4 5 6 1 2 3 10 11 12 请在程序的下画线处填入正确的内容并把下画线删除,使程序得出正确的结果。 注意:部分 源程序在文件 BLANK1 C中。不得增行或删行,也不得更改程序的结构 ! 试题程序: #include Stdio h #define N 3 #define M 4 *found*
2、 void fun(int(*a)N, int 【 1】 ) int i, temp; *found* for(i=0; i 【 2】 ; i+) temp=a0i; *found* a0i=【 3】 ; aki=temp; main() int xMN=1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, i, j; printf(“The array before moving: n n“); for(i=0; i M; i+) for(j=0; j N; j+) printf(“ 3d“, xij); printf(“ n n“); fun(x, 2); prin
3、tf(“The array after moving: n n“); for(i=0; i M; i+) for(j=0; j N; j+) printf(“ 3 d“, xij); printf(“ n n“); 二、程序修改题 2 下列给定程序中,函数 fun的功能是:将 s所指字符串中位于奇数位置的字符或ASCII码值为偶数的字符依次放入 t所指数组中。例如,字符串中的数据为“AABBCCDDEFFF”,则输出应当是 “ABBCDDEFF”。 请改正程序中的错误,使它能得出正确 的结果。 注意:不要改动 main函数,不得增行或删行,也不得更改程序的结构 ! 试题程序: #include
4、 conio h #include stdio h #include string h #define N 80 void fun(char*s, char t) int i, j=0; for(i=0; i (int)strlen(s); i+) *found* if(i 2 si 2=0) tj+=si; *found* ti= 0; main() char sN, tN; printf(“ nplease enther string s: “); gets(s); fun(s, t); printf(“ nThe result is: s n“, t); 三、程序设计题 3 程序定义了
5、NN的二维数组,并在主函数中自动赋值。请编写函数 fun(int aN, intn),该函数的功能是:使数组左下半三角元素中的值乘以 n。例如,若 n的值为 3, a数组中的值为: 则返回主程序后 a数组中的值应为:注意:部分源程序给出如下。请勿改动函数 main和其他函数中的任何内容,仅在函数 fun的花括号中填入你编写的若干语句。试题程序: #includestdio h #include conio h #include stdlib h #define N 5void fun(int aN,int n)main() int aNN, n, i, j; printf(“*The arra
6、y * n“); for(i=0;i N, i+) for(j=0; j N; j+) aij=rand() 10; printf(“ 4d“, aij); printf(“ n“); n=rand() 4; printf(“n= 4d n“, n); fun(a, n); printf(“*THE RESULT* n“); for(i=0; i N; i+) for(j=0; j N; j+) printf(“ 4d“, aij); printf(“ n“); 国家二级 C语言机试(操作题)模拟试卷 294答案与解析 一、程序填空题 1 【正确答案】 (1)k (2)N (3)aki 【试题
7、解析】 填空 1:变量 k在函数体 fun中已经使用,但在函数体中没有定义,肯定是在函数的形参中定义的,所以应填 k。 填空 2:数组共 N列,所以应填 N。 填空 3:这部分语句实现的功能是变量值的交换,所以应填 aki。 二、程序修改题 2 【正确答案】 (1)if(i 2si 2=0)或 if(i 2!=0si 2=0) (2)tj= 0;或 tj=0; 【试题解析】 (1)根据题意,将字符串 s中位于奇数位置的字符或 ASCII码值为偶数的字符,依次放入字符串 t中,所以 if条件中要使用 “或 ”运算。 (2)变量 j控制字符串 t的下标,所以是 tj。 三、程序设计题 3 【正确答
8、案】 void fun(int aN, int n) int i, j; for(i=0; i N; i+) for(j=0; j =i; j+) *矩形的下三角时,积相乘 * aij=aij*n; 【试题解析】 本题的 fun的功能是使数组的左下半三角元素中的值乘以 n,因此本题需要使用双重 for循环, for循环需要注意的是: (1)循环初值,根据题意要求控制循环变量的取值范围; (2)循环条件,确定循环结束的条件,即当不满足条件时,结束循环。 首先从数组中找出要被乘以 n的那部分元素,这一过程其实就是找出将被挑出的元素在原数组中的分布规律的过程。 通过观察得出,要被处理的元素下标值的范围是每行中从第一个元素开始,直到列数等于该行行数时为止。找到这个规律后,依次从数组中取得符合要求的元素,然后乘以 n。
copyright@ 2008-2019 麦多课文库(www.mydoc123.com)网站版权所有
备案/许可证编号:苏ICP备17064731号-1