1、计算机二级(C)上机考试 25 及答案解析(总分:-3.00,做题时间:120 分钟)1.填空题 请补充函数 fun(),该函数的功能是判断一个数的个位数字和百位数字之和是否等于其十位上的数字,是则返回“yes!”,否则返回“no!”。 注意:部分源程序给出如下。 请勿改动主函数 main 和其他函数中的任何内容,仅在函数 fun()的横线上填入所编写的若干表达式或语句。 试题程序: #include #include char *fun(int n) int g,s,b; g=n%10; s=n/10%10; b=【1】; if(g+b)=s) return【2】; else return【
2、3】; main() int num=0; clrscr(); printf(“*Input data */n“); scanf(“%d“, printf(“/n/n/n“); printf(“* The result */n“); printf(“/n/n/n%s“,fun(num); (分数:-1.00)_2.改错题 下列给定程序中,函数 fun()的功能是:读入一个字符串(长度 #include /*found*/ int fun(char t ) char c; int i,j; for(i=0;i_3.编程题 请编写函数 void fun (int x, int pp, int *n
3、),它的功能是:求出能整除 x 且不是奇数的各整数,并按从小到大的顺序放在 pp 所指的数组中,这些除数的个数通过形参 n 返回。 例如,若 x中的值为 24,则有 6 个数符合要求,它们是 2,4,6,8,12,24。 注意:部分源程序给出如下。 请勿改动主函数 main 和其他函数中的任何内容,仅在函数 fun 的花括号中填入所编写的若干语句。 试题程序:#include #include void fun (int x, int pp, int *n) main () int x,aa1000, n, i ; clrscr() ; printf(“/nPlease enter an in
4、teger number : /n “) ; scanf (“%d“, fun (x, aa, for (i=0 ; i_计算机二级(C)上机考试 25 答案解析(总分:-3.00,做题时间:120 分钟)1.填空题 请补充函数 fun(),该函数的功能是判断一个数的个位数字和百位数字之和是否等于其十位上的数字,是则返回“yes!”,否则返回“no!”。 注意:部分源程序给出如下。 请勿改动主函数 main 和其他函数中的任何内容,仅在函数 fun()的横线上填入所编写的若干表达式或语句。 试题程序: #include #include char *fun(int n) int g,s,b;
5、g=n%10; s=n/10%10; b=【1】; if(g+b)=s) return【2】; else return【3】; main() int num=0; clrscr(); printf(“*Input data */n“); scanf(“%d“, printf(“/n/n/n“); printf(“* The result */n“); printf(“/n/n/n%s“,fun(num); (分数:-1.00)_正确答案:(【1】n/100%10 【2】yes! 【3】no! )解析:填空 1:由程序可以知道,变量 g 保存了整数的个位数,变量 s 保存了整数的十位数,所以变量
6、 b应该保存整数的百位数。将整数除以 100 再对 10 取余,则得到这个整数的百位数。填空 2:当个位数字和百位数字之和等于十位数字时,则返回yes!。填空 3:当个位数字和百位数字之和不等于十位数字时,则返回no!。2.改错题 下列给定程序中,函数 fun()的功能是:读入一个字符串(长度 #include /*found*/ int fun(char t ) char c; int i,j; for(i=0;i_正确答案:((1)错误:int fun(char t ) 正确:void fun(char t ) (2)错误: tj=ti+; 正确:tj=ti; )解析:错误 1:该函数只是
7、对一个字符串中的元素进行比较大小的操作,并没有具体的返回值,因此,函数的返回值类型应为 void。 错误 2:本题的思路是利用选择法对数组元素进行比较。所谓选择法,是依次用当前取得的元素和它后面的元素进行比较,在第一个元素和它后面的元素顺次比较时,可以借助中间变量来对两数进行交换,要保证这第一个元素始终存放数组中的最大数,以后依次挑出次大数,这样最终的数组就是有序的。解答本题,只要理解了选择法的思想,找到并改正错误就很容易了。 3.编程题 请编写函数 void fun (int x, int pp, int *n),它的功能是:求出能整除 x 且不是奇数的各整数,并按从小到大的顺序放在 pp
8、所指的数组中,这些除数的个数通过形参 n 返回。 例如,若 x中的值为 24,则有 6 个数符合要求,它们是 2,4,6,8,12,24。 注意:部分源程序给出如下。 请勿改动主函数 main 和其他函数中的任何内容,仅在函数 fun 的花括号中填入所编写的若干语句。 试题程序:#include #include void fun (int x, int pp, int *n) main () int x,aa1000, n, i ; clrscr() ; printf(“/nPlease enter an integer number : /n “) ; scanf (“%d“, fun (x, aa, for (i=0 ; i_正确答案:(void fun (int x, int pp, int *n) int i,j=0; for(i=2;i=x;i=i+2) /*i 的初始值为 2,步长为 2,确保 i 为偶数*/ if(x%i=0) /*将能整除 x 的数存入数组 pp 中*/ ppj+=i; *n=j; /*传回满足条件的数的个数*/ )解析:本题题干信息是:能整除 x 且不是奇数的所有整数。循环语句中 i 从 2 开始且每次增 2,所以 i 始终是偶数。