1、二级 C 语言机试 6 及答案解析(总分:100.00,做题时间:90 分钟)一、B填空题/B(总题数:1,分数:30.00)1.请补充 main 函数,该函数的功能是:从字符串 str 中取出所有数字字符,并分别计数,然后把结果保存在数组 b 中并输出,把其他字符保存在 N10中。 例如:当 str1=“ab123456789cde090”时,结果为:0: 2 1: 1 2: 1 3: 1 4: 1 5: 1 6: 1 7: 1 8: 1 9:2 other charactor:5 注意:部分源程序给出如下。 请勿改动主函数 main 和其他函数中的任何内容,仅在函数 fun()的横线上填入
2、所编写的若干表达式或语句。 试题程序: #include stdio.h #include conio.h main() int i,b11;char *str=“abl23456789cde090“; char *p=str; clrscr(); printf(“*the origial data */n“);puts(str); for(i=0;i11;i+) bi=0; while(*p) switch(U 【1】 /U) case 0:b0+;break; case 1:b1+;break; case 2:b2+;break; case 3:b3+;break; case 4:b4+;
3、break; case 5:b5+;break; case 6:b6+;break; case 7:b7+;break; case 8:b8+;break; case 9:b9+;break; U 【2】 /U U 【3】 /U printf(“* the result */n“); for(i=0;i10;i+) printf(“/n%d:%d“,i,bi); printf(“/nother charactor:%d“,bi); (分数:30.00)填空项 1:_二、B改错题/B(总题数:1,分数:30.00)2.下列给定程序中,函数 fun()的功能是计算并输出 high 以内的素数之和。
4、high 由主函数传给 fun()函数。若 high 的值为 100,则函数的值为 1060。 请改正程序中的错误,使它能得到正确结果。 注意:不要改动 main 函数,不得增行或删行,也不得更改程序的结构。 试题程序: #include conio.h #include stdio.h #include math.h int fun(int high) int sum=0,n=0,j,yes; while(high=2) yes=1; for(j=2;j=high/2;j+) /*found*/ ifhigh%j=0 yes=0; break; /*found*/ if(yes=0) sum
5、+=high; n+; high-; return sum; main() clrscr(); printf(“%d/n“,fun(100); (分数:30.00)填空项 1:_三、B编程题/B(总题数:1,分数:40.00)3.请编写函数 void fun (int x,int pp,int *n),它的功能是求出能整除 x 且不是奇数的各整数,并按从小到大的顺序放在 pp 所指的数组中,这些除数的个数通过形参 n 返回。 例如,若 x 中的值为24,则有 6 个数符合要求,它们是 2, 4, 6, 8, 12, 24。 注意:部分源程序给出如下。 请勿改动主函数 main 和其他函数中的任
6、何内容,仅在函数 fun 的花括号中填入所编写的若干语句。 试题程序: #includeconio.h #includestdio.h void fun(int x,int PP,int *n) main () int x,aa1000,n,i; clrscr() ; printf(“/nPlease enter an integer number: /n “) ; scanf(“%d“,&X); fun(x,aa,&n); for(i=0;in;i+) printf(“%d“,aai); printf(“/n“); (分数:40.00)_二级 C 语言机试 6 答案解析(总分:100.00,
7、做题时间:90 分钟)一、B填空题/B(总题数:1,分数:30.00)1.请补充 main 函数,该函数的功能是:从字符串 str 中取出所有数字字符,并分别计数,然后把结果保存在数组 b 中并输出,把其他字符保存在 N10中。 例如:当 str1=“ab123456789cde090”时,结果为:0: 2 1: 1 2: 1 3: 1 4: 1 5: 1 6: 1 7: 1 8: 1 9:2 other charactor:5 注意:部分源程序给出如下。 请勿改动主函数 main 和其他函数中的任何内容,仅在函数 fun()的横线上填入所编写的若干表达式或语句。 试题程序: #include
8、 stdio.h #include conio.h main() int i,b11;char *str=“abl23456789cde090“; char *p=str; clrscr(); printf(“*the origial data */n“);puts(str); for(i=0;i11;i+) bi=0; while(*p) switch(U 【1】 /U) case 0:b0+;break; case 1:b1+;break; case 2:b2+;break; case 3:b3+;break; case 4:b4+;break; case 5:b5+;break; cas
9、e 6:b6+;break; case 7:b7+;break; case 8:b8+;break; case 9:b9+;break; U 【2】 /U U 【3】 /U printf(“* the result */n“); for(i=0;i10;i+) printf(“/n%d:%d“,i,bi); printf(“/nother charactor:%d“,bi); (分数:30.00)填空项 1:_ (正确答案:【1】*p 【2】default:b10+; 【3】p+;)解析:解析 填空 1:根据 switch 语句中 case 后面的常量表达式,可以看出,switch 后面括号中
10、的表达式应该是字符串 str 中的各字符,而指针 p 就是指向字符串 str。填空 2:和各个 case 后面的常量表达式不匹配的都属于其他字符,保存在 b10中。填空 3:指针 p 指向字符串 s 仕,通过 p 自加 1 来移动指针,访问字符串中的所有字符。二、B改错题/B(总题数:1,分数:30.00)2.下列给定程序中,函数 fun()的功能是计算并输出 high 以内的素数之和。high 由主函数传给 fun()函数。若 high 的值为 100,则函数的值为 1060。 请改正程序中的错误,使它能得到正确结果。 注意:不要改动 main 函数,不得增行或删行,也不得更改程序的结构。
11、试题程序: #include conio.h #include stdio.h #include math.h int fun(int high) int sum=0,n=0,j,yes; while(high=2) yes=1; for(j=2;j=high/2;j+) /*found*/ ifhigh%j=0 yes=0; break; /*found*/ if(yes=0) sum+=high; n+; high-; return sum; main() clrscr(); printf(“%d/n“,fun(100); (分数:30.00)填空项 1:_ (正确答案:(1)错误:ifh
12、igh%j0 正确:if(high%j=0))解析:(2) 错误:if(yes=0) 正确:if(yes) 解析错误 1:if 语句的两侧要加括号。错误 2:yes 为 1时,说明被判断的数为素数,要加入总和。三、B编程题/B(总题数:1,分数:40.00)3.请编写函数 void fun (int x,int pp,int *n),它的功能是求出能整除 x 且不是奇数的各整数,并按从小到大的顺序放在 pp 所指的数组中,这些除数的个数通过形参 n 返回。 例如,若 x 中的值为24,则有 6 个数符合要求,它们是 2, 4, 6, 8, 12, 24。 注意:部分源程序给出如下。 请勿改动主
13、函数 main 和其他函数中的任何内容,仅在函数 fun 的花括号中填入所编写的若干语句。 试题程序: #includeconio.h #includestdio.h void fun(int x,int PP,int *n) main () int x,aa1000,n,i; clrscr() ; printf(“/nPlease enter an integer number: /n “) ; scanf(“%d“,&X); fun(x,aa,&n); for(i=0;in;i+) printf(“%d“,aai); printf(“/n“); (分数:40.00)_正确答案:()解析: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 始终是偶数。