1、国家二级 C语言机试(操作题)模拟试卷 420及答案与解析 一、程序填空题 1 给定程序中,函数 fun的功能是: 找出 NxN矩阵中每列元素中的最大值,并按顺序依次存放于形参 b所指的一维数组中。 请在程序的下画线处填入正确的内容并把下画线删除,使程序得出正确的结果。 注意:部分源程序在文件 BLANK1 C中。 不得增行或删行,也不得更改程序的结构! 试题程序: #include stdio h #define N 4 void fun (int (*a) N, int *b) int i,j; for(i=0; i N; i+) /*found*/ bi= 【 1】 ; for(j=1;
2、 j N; j+) /*found*/ if (bi【 2】 aji) bi=aji; main() int xNN=12,5,8,7, 6,1,9,3),1,2,3,4),2,8,4,3, yN, i; printf (“nThe matrix :n“) ; for(i=O; i N; i+) for(j=0; j N; j+) printf (f 4d“,xi jl) ; printf (“n“) ; /*found*/ fun (【 3】 ); printf (“nThe result is:“) ; for(i=0; i N; i+) printf (“ 3d“,yi) ; print
3、f (“n“) ; 二、程序修改题 2 下列给定程序中,函数 fun的功能 是:将主函数中两个变量的值进行交换。例如,若变量 a中的值为 8, b中的值为 3,则程序运行后, a中的值为 3, b中的值为 8。 请改正程序中的错误,使它能得出正确的结果。 注意:部分源程序在文件 MODI1 C中,不要改动 maln函数,不得增行或删行,也不得更改程序的结构! 试题程序: #include stdio h /*found*/ void fun (int x,int y) int t; /*found*/ t=x; x=y; y=t; void main () int a,b; a =8; b =
4、3; fun(&a, &b); printf (“ d dn “, a,b) ; 三、程序设计题 3 编写函数 int fun( int lim, int aa MAX),其功能是求出小于或等于 lim的所有素数并放在 aa数组中,并返回所求出的素数的个数。 注意:部分源程序在文件 PROG1 C中。 请勿改动 主函数 main和其他函数中的任何内容,仅在函数 fun的花括号中填入你编写的若干语句。 试题程序: #include conio h #include stdio h #include stdlib h #define MAX 100 int fun (int lim, int aa
5、MAX) void main () FILE *wf; int limit,i, sum; int aaMAX ; system (“CLS“) ; printf “输入 _个整数 : “ ) : scanf ( “ d“ , &limit) ; sum = fun (limit,aa) ; for (i =0; i sum; i+) if (1 10 =0&i!=0) / *每行输出 10个数 * / printf (“n “) ; printf (“ 5d “,aai ) : /*found*/ wf = fopen (“out dat“, “w“) ; sum = fun (15, aa
6、) ; for (i =0; i sum; i +) if (1 10 =0&11=0) /*每行输出 10个数 * / fprintf (wf, “n“) ; fprintf (wf, “ 5d “,aai ) ; fclose (wf) ; /*found*/ 国家二级 C语言机试(操作题)模拟试卷 420答案与解析 一、程序填空题 1 【正确答案】 (1)a0i (2) (3)x, y 【试题解析】 填空 1:数组 b用于存放每列元素中的最大值,首先将第 i列的第一个数赋给 bi,然后用 bi与其他数进行比较,因此此空应填 a0i。 填空 2: if条件表达式表示当 bi小于 aji时,
7、就把 aji的值赋给 bi,因此此空应该填 。 填空 3: fun函数的调用,通过 fun( int( *a) N, int*b)可 知,此空应该填 x,y。 二、程序修改题 2 【正确答案】 (1) void fun( int*x int*y) (2)t=*x; *x=*y; *y =t; 【试题解析】 (1)本题考查指针变量作函数参数。一般变量作参数时,不能改变实参的值,采用指针变量作为参数则能够改变实参的值。主函数中 fun函数的调用方式表明 fun函数的参数应当为指针类型。 (2)此处是一个变量交换操作错误,可知 x、 y是指针类型,变量类型不同,因而x、 y不能与 t进行值的交换。
8、三、程序设计题 3 【正确答案】 int fun (int lim, int aa MAX) int i,j,k =0; for(i=2; i =1im; i+)/*求出小于或等于 lim的全部素数 */ for(j=2; j i; j+) if (i j =0) break; if(j =i) aak+=i; /*将求出的素数放入数组 aa中 */ return k; /*返回所求出的素数的个数 */ 【试题解析】 本程序如果一个数是合数,那么它的最小质因数肯定小于等于他的平方根。使用 for循环语句查找小于 lim的所有数,使用内嵌的循环判断语句判断该数是否为素数。在做这道题时,需要重点掌握素数的判定方法: for(j =2; j sqrt(i); j+) if(i j=0) break;
copyright@ 2008-2019 麦多课文库(www.mydoc123.com)网站版权所有
备案/许可证编号:苏ICP备17064731号-1