1、二级 C 语言-189 及答案解析(总分:100.00,做题时间:90 分钟)一、程序填空题(总题数:1,分数:30.00)1.给定程序中,函数 fun 的功能是:将 a 所指 35 矩阵中第 k 列的元素左移到第 0 列,第 k 列以后的每列元素依次左移,原来左边的各列依次绕到右边。 例如,有下列矩阵: 若 k 为 2,程序执行结果为: (分数:30.00)二、程序改错题(总题数:1,分数:30.00)2.下列给定程序中,函数 fun 的功能是:根据形参 m 的值(2m9),在 m 行 m 列的二维数组中存放如下所示规律的数据,由 main 函数输出。 例如,若输入 2,则输出: 若输入 4
2、,则输出: (分数:30.00)_三、程序设计题(总题数:1,分数:40.00)3.函数 fun 的功能是:将 a、b 中的两个正整数合并形成一个新的整数放在 c 中。合并的方式是:将 a 中的十位和个位数依次放在变量 c 的十位和千位上,b 中的十位和个位数依次放在变量 c 的个位和百位上。 例如,当 a=45,b=12。调用该函数后,c=5241。 注意:部分源程序给出如下。 请勿改动 main 函数和其他函数中的任何内容,仅在函数 fun 的花括号中填入你编写的若干语句。 试题程序: #includestdio.h void fun(int a,int b,long*c) main()
3、inc a,b;long c; printf(“Input a,b:“); scanf(“%d%d“,a,b); fun(a,b,c); printf(“The result is:%ld/n“,c); (分数:40.00)_二级 C 语言-189 答案解析(总分:100.00,做题时间:90 分钟)一、程序填空题(总题数:1,分数:30.00)1.给定程序中,函数 fun 的功能是:将 a 所指 35 矩阵中第 k 列的元素左移到第 0 列,第 k 列以后的每列元素依次左移,原来左边的各列依次绕到右边。 例如,有下列矩阵: 若 k 为 2,程序执行结果为: (分数:30.00)解析:k N-
4、1 temp 考点 本题关键字有:矩阵操作;for 循环语句;变量赋值。 解析 填空 1:外循环控制数组移动的次数,第 k 列左移到第 0 列,则需要移动 k 次,所以应填 k。 填空 2:矩阵共 N 列,所以应填 N-1。 填空 3:aiN-1中存放数组最左边元素的值,而最左边元素的值存放在 temp 中,所以应填 temp。二、程序改错题(总题数:1,分数:30.00)2.下列给定程序中,函数 fun 的功能是:根据形参 m 的值(2m9),在 m 行 m 列的二维数组中存放如下所示规律的数据,由 main 函数输出。 例如,若输入 2,则输出: 若输入 4,则输出: (分数:30.00)
5、_正确答案:()解析:void fun(int aM,int m) ajk=(k+1)*(j+1); 考点 本题关键字有:函数定义;数组元素赋值。 解析 (1)从主函数和 fun 函数体中可知,a 是一个二维数组型变量,所以应改为 void fun(int aM,int m)。(2)根据输出可得出数组元素与行、列下标的关系,应改为 ajk=(k+1*(j+1);。三、程序设计题(总题数:1,分数:40.00)3.函数 fun 的功能是:将 a、b 中的两个正整数合并形成一个新的整数放在 c 中。合并的方式是:将 a 中的十位和个位数依次放在变量 c 的十位和千位上,b 中的十位和个位数依次放在
6、变量 c 的个位和百位上。 例如,当 a=45,b=12。调用该函数后,c=5241。 注意:部分源程序给出如下。 请勿改动 main 函数和其他函数中的任何内容,仅在函数 fun 的花括号中填入你编写的若干语句。 试题程序: #includestdio.h void fun(int a,int b,long*c) main() inc a,b;long c; printf(“Input a,b:“); scanf(“%d%d“,a,b); fun(a,b,c); printf(“The result is:%ld/n“,c); (分数:40.00)_正确答案:()解析:void fun(int a,int b,long *c) *c=(a%10)*1000+(b%10)*100+(a/10)*10+(b/10); 考点 本题关键字有:指针型变量;一个数的各位上的数字的表示方法;已知一个数各位上的数字如何表示该数。解析 根据题意取出两个两位数各位上的数字,再组成一个新数。两位数除以 10 的结果即为十位数对 10 取余得到个位数。