1、国家二级( C语言)机试模拟试卷 377及答案与解析 一、程序填空题( 30分) 1 给定程序中,函数 fun的功能是计算下式例如,若形参 e的值为 1e-3,函数的返回值 2 985678。请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。注意:源程序存放在考生文件夹下的 BLANKl C中。不得增行或删行,也不得更改程序的结构 ! 二、程序修改题( 30分) 2 下列给定程序中,函数 fun()的功能是:根据形参 m的值 (2m9),在 m行 m列的二维数组中存放如下所示的数据,由 main()函数输出。 例如,若输入 2,则输出 1 2 2 4 输入 4,则输出 1
2、2 3 4 2 4 6 8 3 6 9 12 4 8 12 16 请改正程序中的错误,使它能得出正确的结果。 注意:不要改动 main函数,不得增行或删行,也不得更改程序的结构 试题程序: #include conio.h #include stdio. h #define M 10 int aiM MI=0; /*found*/ fun( int *a, int m) int j,k; for (j=0; j m; j+) for (k=0; k m; k+) /*found*/ aj k=k*j; main ( ) int i, j, n; clrscr (); printf (“Ente
3、r nn“); scanf (“%d“, fun (a, n); for (i=0; i n; i+) for (j=0;j n;j+) printf (“%4d “,ai j); printf (“n “); 三、程序设计题( 40分) 3 请编写程序 fun,函数的功能是:实现 B=A+A,即把矩阵 A加上 A的转置,存放在矩阵 B中。计算结果在 main函数中输出。 例如,输入下面的矩阵: 其转置矩阵为: 程序输出: 注意:部分源程序在文件 PROGl C中。 请勿改动主函数 main和其他函数中的任何内容,仅在函数 fun的花括号中填入你编写的若干语句。 #includevoid fu
4、n(int a33, int b33)main() *主程序 * int a33=(1, 2, 3, 4, 5, 6, 7, 8, 9, t33; int i, j; void NONO(); fun(a, t); for(i=0; i 国家二级( C语言)机试模拟试卷 377答案与解析 一、程序填空题( 30分) 1 【正确答案】 (1)0 (2)i+ (3)2 0*i 【试题解析】 函数 fun的功能是求级数和,观察可知,级数项有规律变化,可以用循环来累加求和。 二、程序修改题( 30分) 2 【正确答案】 (1)错误: fun(int*a, int m) 正确: void fun(int
5、(*a)M, int m) (2)错误: ajk=k*j; 正确: ajk=(k+1)*(j+1); 【试题解析】 对于二维数组,应该理解成为是由几个一维数组作元素组成的一维数组,或者说,二维数组实际是一个一维数组,只不过它的每个数组元素又都是一个一维数组。我们先来看看指针数组的表示形式: (1)p+i和 a+i均表示 ai的地址,或者讲,它们均指向数组第 i号元素,即指向ai。 (2)*(p+i)和 *(a+i)都表示 p+i和 a+i所指对象的内容,即为 ai。 (3)指向数组元素的指针,也可以表示成数组的形式,也就是说,它允许指针变量带下标,如 pi与 *(p+i)等价。因此,二维数组元素 aij可表示成 *(ai+j)或*(*(a+i)+j),它 们都与 aij等价,或者还可写成 (*(a+i)j。了解了以上这些内容后本题就好解决了。 三、程序设计题( 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)矩阵相加是指把 两个矩阵中下标相同的元素的值一一对应相加。