1、国家二级 C语言机试(操作题)模拟试卷 541及答案与解析 一、程序填空题 1 给定程序中,函数 fun的功能是:将 a所指 35矩阵中第 k列的元素左移到第 0列,第 k列以后的每列元素行依次左移,原来左边的各列依次绕到右边。 例如,有下列矩阵: 1 2 3 4 5 1 2 3 4 5 1 2 3 4 5 若 k为 2,程序执行结果为 3 4 5 1 2 3 4 5 1 2 3 4 5 1 2 请在程序的下画线处填入正确的内容并把下画线删除,使程序得出正确的结果。 注意:部分源程序在文件 BLANK1 C中。 不得增行或删行,也不得更改程序的结构 ! 试题程序: #include stdio
2、 h #define M 3 #define N 5 void fun(int(*a)N, int k) int i, j, P, temp; *found* for(p=1; p =【 1】 ; p+) for(i=0; i M; i+) temp=ai0; *found* for(j=0; j 【 2】 ; j+) aij=aij+1; *found* aiN一 1=【 3】 ; main() int xMN=1, 2, 3, 4, 5, l, 2, 3, 4, 5), 1, 2, 3, 4, 5), i, j; printf(“The array before movirig: n n“
3、); for(i=0 ; i M; i+) for(j=0; j N; j+) printf(“ 3d“, xij); printf(“ n“); fun(x, 2); printf(“The array after mov ing: n n“); for(i=0 ; i M; i+) for(j=0; j N; j+) printf(“ 3 d“, xij); printf(“ n“); 二、程序修改题 2 下列给定程序中,函数 fun的功能是:根据形参 m的值 (2m9),在 m行 m列的二维数组中存放如下所示规律的数据,由 main函数输出。请改正程序中的错误,使它能得出正确的结果。 注
4、意:部分源程序在文件 NODI1 C中,不要改动 main函数,不得增行或删行,也不得更改程序的结构 ! 试题程序: #include conio h #includestdio h #define M 10int aMM=0); *found* void fun(int*a, int m)int j, k; for(j=0; j m; j+) for(k=0; k m; k+)*found* ajk=k * j; main()int i, j, n; printf(“Enter n:“); scanf(“ d“, &n); fun(a, n); for(i=0; i n; i+) for(j
5、=0; j n ; j+) printf(“ 4d“, aij); printf(“ n“); 三、程序设计题 3 函数 fun的功能是:将 a、 b中的两个正整数合并形成一个新的整数放在 c中。合并的方式是:将 a中的十位和个位数依次放在变量 c的十位和千位上, b中的十位和个位数依次放在变量 c的个位和百位上。 例如,当 a=45, b: 12。调用该函数后, c=5241。 注意:部分源程序在文件 PROG1 C中。 请勿改动 main函数和其他函数中的任何内容,仅在函数 fun的花括号中填入你编写的若干语句。 试题程序: #include stdio h void fun(int a,
6、 int b, long*c) main() int a, b; long c; void NONO(); printf(“Input a, b: “); scanf(“ d d“, a, &b); fun(a, b, &c); printf(“The result is: ld n“, c); NONO(); void NONO() *本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。 * FTLE*rf, * wf ; int i, a, b; long c; rf=fopen(“in dat“, “r“); wf=fopen(“out dat“, “w“); for(i=0;
7、i 10; i+) fscanf(rf, “ d, d“, &a, &b); fun(a, b, &c); fprintf(wf, “a= d, b= d, c= ld n“, a, b, c); fclose(rf); fclose(wf); 国家二级 C语言机试(操作题)模拟试卷 541答案与解析 一、程序填空题 1 【正确答案】 (1)k (2)N-1 (3)temp 【 试题解析】 填空 1:外循环 p的值为数组移动的次数,试题要求第 k列左移,则需要移动的次数为 k,所以应填 k。 填空 2:矩阵共 N列,所以应填 N-1。 填空 3:临时变量 temp中存放的值为数组最左边元素的值
8、,需要把 temp放到数组的末尾,即放到 a iN一 1中,所以应填 temp。 二、程序修改题 2 【正确答案】 (1)void fun(int aM, int m) (2)ajk=(k+1)*(j+1); 【试题解析】 (1)在函数体 fun中可知, a是一个二维整型数组变量,设置实参时 ,用 *a表示是错误的,所以应改为 void fun(int aM, int m)。 (2)根据输出的结果可知,应改为 ajk=(k+1)*(j+1); . 三、程序设计题 3 【正确答案】 void fun (int a, int b, long * c) * c = (a 10 ) * 1000 +(b 10 ) * 100 +(a/10) *10 +(b/10); 【试题解析】 本题是给出两个两位数的正整数分别取出各位上的数字,再按条件组成一个新数。取 a十位数字的方法 a/10,取 a个位数字的方法 a 10。同理可取出整数 b的个位数和十位数。
copyright@ 2008-2019 麦多课文库(www.mydoc123.com)网站版权所有
备案/许可证编号:苏ICP备17064731号-1