1、计算机二级(C)上机考试 15 及答案解析(总分:-3.00,做题时间:120 分钟)1.填空题 数组 xxN保存着一组位数的无符号正整数,其元素的个数通过变量 num 传入函数 fun()。请补充函数 fun(),该函数的功能是:从数组 xx 中找出个位和百位的数字相等的所有无符号整数,结果保存在数组 yy 中,其个数由函数 fun()返回。 例如:当 xx8=135,78,72,32,222,424,333,141,541时,bb6=787,232,222,424,333,141。 注意:部分源程序给出如下。 请勿改动主函数 main 和其他函数中的任何内容,仅在函数 fun()的横线上填
2、入所编写的若干表达式或语句。 试题程序: #include #define N 1000 int fun(int xx,int bb,int num) int i,n=0; int g,b; for(i=0;i_2.改错题 下列给定程序中,函数 fun()的功能是求出数组中最小数和次最小数,并把最小数和 a0中的数对调,次最小数和 a1中的数对调。 请改正程序中的错误,使它能得到正确结果。 注意:不要改动main 函数,不得增行或删行,也不得更改程序的结构。 试题程序: #include #include #define N 20 void fun(int *a,int n) int i, m
3、, t, k; /*found*/ for(i=0; i_3.编程题 请编写一个函数 void fun(int m, int k, int xx),该函数的功能是:将大于整数 m 且紧靠 m 的 k 个非素数存入所指的数组中。 例如,若输入 15,5,则应输出 16,18,20,21,22。 注意:部分源程序给出如下。 请勿改动主函数 main 和其他函数中的任何内容,仅在函数 fun 的花括号中填入所编写的若干语句。 试题程序: #include #include void fun(int m, int k, int xx) main() int m,n,zz1000; clrscr();
4、printf(“/nPlease enter two integers: “); scanf(“%d%d“, fun(m, n, zz); for(m=0;m_计算机二级(C)上机考试 15 答案解析(总分:-3.00,做题时间:120 分钟)1.填空题 数组 xxN保存着一组位数的无符号正整数,其元素的个数通过变量 num 传入函数 fun()。请补充函数 fun(),该函数的功能是:从数组 xx 中找出个位和百位的数字相等的所有无符号整数,结果保存在数组 yy 中,其个数由函数 fun()返回。 例如:当 xx8=135,78,72,32,222,424,333,141,541时,bb6=
5、787,232,222,424,333,141。 注意:部分源程序给出如下。 请勿改动主函数 main 和其他函数中的任何内容,仅在函数 fun()的横线上填入所编写的若干表达式或语句。 试题程序: #include #define N 1000 int fun(int xx,int bb,int num) int i,n=0; int g,b; for(i=0;i_正确答案:(【1】xxi%10 【2】bbn+=xxi 【3】n )解析:填空 1:变量 b 存放了三位数的百位数字,所以变量 g 应该存放三位数的个位数字,将这个三位数对 10 求余,则得到这个数的个位数字。填空 2:将个位数字
6、与百位数字相等的整数存于数组 bb 中。填空3:变量 n 记录了个位数字等于百位数字的整数的个数,题目要求个数由函数 fun()返回,所以应返回 n。2.改错题 下列给定程序中,函数 fun()的功能是求出数组中最小数和次最小数,并把最小数和 a0中的数对调,次最小数和 a1中的数对调。 请改正程序中的错误,使它能得到正确结果。 注意:不要改动main 函数,不得增行或删行,也不得更改程序的结构。 试题程序: #include #include #define N 20 void fun(int *a,int n) int i, m, t, k; /*found*/ for(i=0; i_正确
7、答案:((1)错误: for(i=0; i解析:错误 1:由于题目要求将最小数和次最小数分别与 a0和 a1中的数对调,因此这层循环只需循环两次。 错误 2:赋值语句的执行方向是从右向左,即把右边的值赋给左边的变量。 3.编程题 请编写一个函数 void fun(int m, int k, int xx),该函数的功能是:将大于整数 m 且紧靠 m 的 k 个非素数存入所指的数组中。 例如,若输入 15,5,则应输出 16,18,20,21,22。 注意:部分源程序给出如下。 请勿改动主函数 main 和其他函数中的任何内容,仅在函数 fun 的花括号中填入所编写的若干语句。 试题程序: #include #include void fun(int m, int k, int xx) main() int m,n,zz1000; clrscr(); printf(“/nPlease enter two integers: “); scanf(“%d%d“, fun(m, n, zz); for(m=0;m_正确答案:(void fun(int m, int k, int xx) int i,j,n; for(i=m+1,n=0;n解析:本题只要掌握了判断非素数和素数的算法即不难完成了,其实程序缺少部分也正是这部分。