1、二级 C 语言机试 72 及答案解析(总分:100.00,做题时间:90 分钟)一、B填空题/B(总题数:1,分数:30.00)1.请补充 main 函数,该函数的功能是:从键盘输入一组整数,使用条件表达式找出最大的整数。当输入的整数为 0 时结束。 例如,输入 1,2,3,5,4,0 时,最大的数为 5。 注意:部分源程序给出如下。 请勿改动主函数 main 和其他函数中的任何内容,仅在 main 函数的横线上填入所编写出的若干表达式或语句。 试题程序: #includestdio.h #includeconio.h #define N 100 main() int numN; int i=
2、-1; int max=0; clrscr(); printf(“/nInput integer number:/n“); do i+; printf(“num%d=“,i); scanf(“%d“,U 【1】 /U); max=U 【2】 /Unumi:max; while (U 【3】 /U); printf(“max=%dkn“,max); (分数:30.00)填空项 1:_二、B改错题/B(总题数:1,分数:30.00)2.下列给定程序中函数 fun()的功能是:从低位开始取出长整型变量 s 中偶数位上的数,依次构成一个新数放在 t 中。例如,当 s 中的数为 7654321 时,t
3、中的数为 642。 请改正程序中的错误,使它能得出正确的结果。 注意:不要改动 main 函数,不得增行或删行,也不得更改程序的结构。 试题程序: #includestdio.h #include conio.h /*found*/ void fun(long s,long t) long s1=10; s/=10; *t=s%10; /*found*/ while(s0) s=s/100; *t=s%10*s1+*t; s1=s1*10; main() long s, t; clrscr(); printf(“/nPlease enter s: “); scanf (“%ld“, fun(s
4、, printf(“The result is: %ld/n “,t); (分数:30.00)填空项 1:_三、B编程题/B(总题数:1,分数:40.00)3.编写函数 int fun(int lim, int aaMAX),该函数的功能是求出小于或等于 lim 的所有素数并放在 aa数组中,该函数返回所求出的素数的个数。 注意:部分源程序给出如下。 请勿改动主函数 main 和其他函数中的任何内容,仅在函数 fun 的花括号中填入所编写的若干语句。 试题程序: #includeconio.h #includestdio.h #define MAX 100 int fun(int lim, i
5、nt seMAX) main() int limit,i,sum; int aaMAX; clrscr(); printf(“输入一个整数“); scanf(“%d“, sum=fun(limit,aa); for(i=0;isum;i+) if(i%10=0 printf(“%5d “,aai); (分数:40.00)_二级 C 语言机试 72 答案解析(总分:100.00,做题时间:90 分钟)一、B填空题/B(总题数:1,分数:30.00)1.请补充 main 函数,该函数的功能是:从键盘输入一组整数,使用条件表达式找出最大的整数。当输入的整数为 0 时结束。 例如,输入 1,2,3,5
6、,4,0 时,最大的数为 5。 注意:部分源程序给出如下。 请勿改动主函数 main 和其他函数中的任何内容,仅在 main 函数的横线上填入所编写出的若干表达式或语句。 试题程序: #includestdio.h #includeconio.h #define N 100 main() int numN; int i=-1; int max=0; clrscr(); printf(“/nInput integer number:/n“); do i+; printf(“num%d=“,i); scanf(“%d“,U 【1】 /U); max=U 【2】 /Unumi:max; while
7、(U 【3】 /U); printf(“max=%dkn“,max); (分数:30.00)填空项 1:_ (正确答案:1 s/=10; *t=s%10; /*found*/ while(s0) s=s/100; *t=s%10*s1+*t; s1=s1*10; main() long s, t; clrscr(); printf(“/nPlease enter s: “); scanf (“%ld“, fun(s, printf(“The result is: %ld/n “,t); (分数:30.00)填空项 1:_ (正确答案:错误:void fun(long s,long t) 正确:
8、void fun(long s,long *t))解析:(2) 错误:while(s0) 正确:while(s0) 解析 本题考查函数调用方式和 while 循环语句中条件限制的方法。主函数中 fun()的调用方式说明 fun()函数的参数应当为指针类型,所以 void fun(long s,long t)正确的写法应该是 void fun(long s,long *t)。三、B编程题/B(总题数:1,分数:40.00)3.编写函数 int fun(int lim, int aaMAX),该函数的功能是求出小于或等于 lim 的所有素数并放在 aa数组中,该函数返回所求出的素数的个数。 注意:
9、部分源程序给出如下。 请勿改动主函数 main 和其他函数中的任何内容,仅在函数 fun 的花括号中填入所编写的若干语句。 试题程序: #includeconio.h #includestdio.h #define MAX 100 int fun(int lim, int seMAX) main() int limit,i,sum; int aaMAX; clrscr(); 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 (j=2;ji;j+) if(i%j=0) break; if(j=i)