1、二级 C语言机试-163 及答案解析(总分:100.00,做题时间:90 分钟)一、填空题(总题数:1,分数:30.00)在给定程序中,函数 fun的功能是:统计所有小于等于 n(n2)的素数的个数,素数的个数作为函数值返回。请在程序的下画线处填入正确的内容并把下画线删除,使程序得出正确的结果。注意:源程序存放在考生文件夹下的 BLANK1.C中。不得增行或删行,也不得更改程序的结构。文件 BLANK1.C内容如下:#includestdio.hint fun(int n)int i,j,cnt=0;printf(“/nThe prime number between 3 to%d/n“,n)
2、for(i=3;i=n;i+)/*found*/for( (1) ;ji;j+)/*found*/if( (2) %j=0)break;/*found*/if( (3) =i)cnt+;printf(cnt%157“%5d“:“/n%5d“,i);return ent;void main( )int n=20,r;r=fun(n);printf(“/nThe number of prime is:%d/n“,r);(分数:30.00)填空项 1:_填空项 1:_填空项 1:_二、改错题(总题数:1,分数:30.00)1.给定程序 MODI1.C中函数 fun的功能是:计算并输出 high以内
3、最大的 10个素数之和。high 的值由主函数传给 fun函数。若 high的值为 100,则函数的值为 732。请改正程序中的错误,使程序能输出正确的结果。注意:不要改动 main函数,不得增行或删行,也不得更改程序的结构。文件 MODI1.C内容如下:#includestdio.h#includemath.hint fun(int high)int sum=0,n=0,j,yes;/*found*/while(high=2) high-;return sum;void main( )printf(“%d/n“,fun(100);(分数:30.00)填空项 1:_三、编程题(总题数:1,分数
4、40.00)2.请编写函数 fun,其功能是:将所有大于 1小于整数 m的非素数存入 xx所指数组中,非素数的个数通过 k传回。例如:若输入 17,则应输出 9和 4,6,8,9,10,12,14,15,16。注意:部分源程序在文件 PROG1.C中,请勿改动主函数 main和其他函数中的任何内容,仅在函数 fun的花括号中填入你编写的若干语句。文件 PROG1.C内容如下:#includestdio.hvoid fun(int m,int *k,int xx)void main( )int m,n,zz100;printf(“/nPlease enter an integer number
5、 between 10 and 100:“);scanf(“%d“, high-;return sum;void main( )printf(“%d/n“,fun(100);(分数:30.00)填空项 1:_ (正确答案:第 1处:将“while(high=2) )解析:解析 本题虽然是要求求出非素数,实际也是考查素数的判定算法。对于变量 i取出的每一个值,变量 j都从 2开始循环到 i/2,在变量 j的这个范围内,能找到一个 j,i 能够整除它,则 i是非素数,将 i赋值到数组 xx中。循环结束后,将数组的长度 n赋值给*k,通过指针 k带回数组 xx的长度。归纳总结 本套试题的程序填空和程序设计题考查的是素数的判定算法。考题中通常要求对某个范围内的素数进行一定的处理。此类题目的常用程序段如下:for(i=m;i=n;i+) /*求出 m到 n之间的素数*/for(j=2;j=i/2;j+)if(i%j=0)break;if(ji/2)/*若条件成立,则 i是素数,根据程序要求补充后面的语句*/