1、二级 C 语言分类模拟题 287 及答案解析(总分:100.00,做题时间:90 分钟)一、程序填空题(总题数:1,分数:30.00)1.给定程序中,函数 fun 的功能是:找出 NN 矩阵中每列元素中的最大值,并按顺序依次存放于形参 b所指的一维数组中。 请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。 不得增行或删行,也不得更改程序的结构! 给定源程序: #includestdio.h #define N 4 void fun(int(*a)N, int*b) int i, j; for(i=0; iN; i+) /*found*/ bi= 1; for(j=1; j
2、N; j+) /*found*/ if(bi 2aji)bi=aji; main() int xNN= 12, 5, 8, 7, 6, 1, 9, 3, 1, 2, 3, 4, 2, 8, 4, 3, yN, i, j; printf(“/nThe matrix:/n“); for(i=0; iN; i+) for(j=0; jN; j+)printf(“%4d“, xij); printf(“/n“); /*found*/ fun( 3); printf(“/nThe result is:“); for(i=0; iN; i+)printf(“%3d“, yi); printf(“/n“);
3、 (分数:30.00)二、程序改错题(总题数:1,分数:30.00)2.给定程序中函数 fun 的功能是:交换主函数中两个变量的值。例如:若变量 a 中的值原为 8,b 中的值为 3。程序运行后 a 中的值为 3,b 中的值为 8。 请改正程序中的错误,使它能计算出正确的结果。 注意:不要改动 main 函数,不得增行或删行,也不得更改程序的结构! 给定源程序: #includestdio.h /*found*/ void fun(int x, int y) int t; /*found*/ t=x; x=y; y=t; main 1 int a, b; a=8; b=3; fun( prin
4、tf(“%d, %d/n“, a, b); (分数:30.00)三、程序设计题(总题数:1,分数:40.00)3.编写函数 fun,函数的功能是求出小于或等于 lim 的所有素数并放在 aa 数组中,函数返回所求出的素数的个数。函数 fun 中给出的语句仅供参考。 请勿改动主函数 main 和其它函数中的任何内容,仅在函数 fun 的花括号中填入你编写的若干语句。 给定源程序: #includestdio.h #define MAX 100 int fun(int lim, int aaMAX) /*以下代码仅供参考*/ int i, j, k=0; /*其中变量 k 用于统计素数个数*/ f
5、or(i=2; i=lim; i+) /*以下找出小于或等于 lim 的素数存入 aa 数组中并统计素数个数*/ return k; main() int limit, i, sum; int aaMAX; printf(“输入一个整数:“); scanf(“%d“, sum=fun(limit, aa); for(i=0; isum; i+) if(i%10=0 printf(“%5d“, aai); (分数:40.00)_二级 C 语言分类模拟题 287 答案解析(总分:100.00,做题时间:90 分钟)一、程序填空题(总题数:1,分数:30.00)1.给定程序中,函数 fun 的功能是
6、:找出 NN 矩阵中每列元素中的最大值,并按顺序依次存放于形参 b所指的一维数组中。 请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。 不得增行或删行,也不得更改程序的结构! 给定源程序: #includestdio.h #define N 4 void fun(int(*a)N, int*b) int i, j; for(i=0; iN; i+) /*found*/ bi= 1; for(j=1; jN; j+) /*found*/ if(bi 2aji)bi=aji; main() int xNN= 12, 5, 8, 7, 6, 1, 9, 3, 1, 2, 3,
7、4, 2, 8, 4, 3, yN, i, j; printf(“/nThe matrix:/n“); for(i=0; iN; i+) for(j=0; jN; j+)printf(“%4d“, xij); printf(“/n“); /*found*/ fun( 3); printf(“/nThe result is:“); for(i=0; iN; i+)printf(“%3d“, yi); printf(“/n“); (分数:30.00)解析:(1)a0i (2) (3)x, y 解析 填空 1:数组 b 用于存放每列元素中的最大值,首先将第 i 列的第一个数赋给 bi,然后用 bi与
8、其他数进行比较,因此此空应填 a0i。 填空 2:if 条件表达式表示当 bi小于 aji时,就把 aji的值赋给 bi,因此此空应该填。 填空 3:fun 函数的调用,通过 fun(int (*a)N, int *b)可知,此空应该填 x, y。二、程序改错题(总题数:1,分数:30.00)2.给定程序中函数 fun 的功能是:交换主函数中两个变量的值。例如:若变量 a 中的值原为 8,b 中的值为 3。程序运行后 a 中的值为 3,b 中的值为 8。 请改正程序中的错误,使它能计算出正确的结果。 注意:不要改动 main 函数,不得增行或删行,也不得更改程序的结构! 给定源程序: #inc
9、ludestdio.h /*found*/ void fun(int x, int y) int t; /*found*/ t=x; x=y; y=t; main 1 int a, b; a=8; b=3; fun( printf(“%d, %d/n“, a, b); (分数:30.00)解析:(1)void fun(int *x, int *y) (2)t=*x; *x=*y; *y=t; 解析 (1)本题考查指针变量作函数参数。一般变量作参数时,不能改变实参的值,采用指针变量作为参数则能够改变实参的值。主函数中 fun 函数的调用方式表明 fun 函数的参数应当为指针类型。 (2)此处是一
10、个变量交换操作错误,可知 x、y 是指针类型,变量类型不同,因而 x、y 不能与 t 进行值的交换。三、程序设计题(总题数:1,分数:40.00)3.编写函数 fun,函数的功能是求出小于或等于 lim 的所有素数并放在 aa 数组中,函数返回所求出的素数的个数。函数 fun 中给出的语句仅供参考。 请勿改动主函数 main 和其它函数中的任何内容,仅在函数 fun 的花括号中填入你编写的若干语句。 给定源程序: #includestdio.h #define MAX 100 int fun(int lim, int aaMAX) /*以下代码仅供参考*/ int i, j, k=0; /*其
11、中变量 k 用于统计素数个数*/ for(i=2; i=lim; i+) /*以下找出小于或等于 lim 的素数存入 aa 数组中并统计素数个数*/ return k; main() int limit, i, sum; int aaMAX; printf(“输入一个整数:“); scanf(“%d“, sum=fun(limit, aa); for(i=0; isum; i+) if(i%10=0 printf(“%5d“, aai); (分数:40.00)_正确答案:()解析:int fun(int lim, int aaMAX) int i, j, k=0; for(i=2; i=lim; i+) /*求出小于或等于 lim 的全部素数*/ for(j=2; ji; j+) if(i%j=0)break; if(j=i) aak+=i; /*将求出的素数放入数组 aa 中*/ return k; /*返回所求出的素数的个数*/ 答案考生文件夹 解析 本程序使用 for 循环语句查找小于 lim 的所有数,使用内嵌的循环判断语句判断该数是否为素数。在做这道题时,需要重点掌握素数的判定方法: