1、国家二级 C语言机试(操作题)模拟试卷 514及答案与解析 一、程序填空题 1 用筛选法可得到 2 n(n int fun(int n) int a10000, i,j, count=0; for (i=2; i #include void fun(int a,int *b,int *c) int i,j,d,y; for (i=3;i double fun(int n) NONO() *请在此函数内打 开文件,输入测试数 据,调用 fun函数,输出数据,关闭文件。 */ FILE *rf, *wf; int n,i; double s; rf = fopen(“in.dat“,“r“); w
2、f = fopen(“out.dat“,“w“); for(i = 0 ; i 10 ; i+) fscanf(rf, “%d“, s = fun(n); fprintf(wf, “%lfn“, s); fclose(rf); fclose(wf); main () int n; double s; printf(“nInput n: “); scanf(“%d“, s=fun(n); printf(“nns=%fn“,s); NONO(); 国家二级 C语言机试(操作题)模拟试卷 514答案与解析 一、程序填空题 1 【正确答案】 (1)ai (2)ai (3)0 【试题解析】 fun函数的
3、功能是用筛选法可得到 2 n(n10000)之间的所有素数。 第一空:循环 “for(j=ai*2; j=n; j+=【 1】 )”中,循环变量 j的 初始值从 ai的 2倍开始,下一次进入循环 j就是 ai的 3倍,第一空处是补充 j的变化情况,而 j每次都增加一个 ai,即第一空处应为 “ai”。 第二空:根据题意第二空处是从数表中找下一个非 0数,即在循环中比较 ai是否为 0,如果为 0的话, i+指向后一个数表元素,故第二空处应为 “ai”。 第三空:根据语句 “count+; printf( count 15?“ 5d“: “n 5d“,ai); ”可知在满足条件之后计数变量 co
4、unt自增,并且输出 ai,可知 ai是一个素数,由审题分 析可知,经过筛选之后数表中非 0的元素就是素数,故第三空处应为 “0”,即 ai不为 0的话就是素数。 二、程序修改题 2 【正确答案】 (1)y=1; (2)d=a i; 【试题解析】 函数的功能是为一个偶数查找两个素数,这两个素数之和等于该偶数。 (1)第一标识下 “Y=1; ”变量 Y没有定义,编译时会提示出错。题中用标志 y区别 i是否是素数, y=1是素数, y=0不是素数。第一个标识下当 i是素数时, y最后的值就是进入循环结构前的初始化值 0,标识该值不是素数,所以 “Y=1; ”应该改为 “y=1; ”。 (2)在语句
5、 “if(y=1)”中,应该是判断 (a-i)是否是素数,即 d应赋值 “a-i”而不是“d=a-i; ”,所以第二个标识下 “d=a-i; ”改为 “d=a-i; ”。 三、程序设计题 3 【正确答案】 int i; double sum=0 0; for(i=1; i=n; i+) if(i 5=0 i 9=0) * 被 5或 9整除 * sum+=1 0 i; return sum; 【试题解析】 程序功能是计算并输出 n(包括 n)以内能被 5或 9整除 的所有自然数的倒数之和。 (1)首先,通过循环,判断小于等于 n的每一个整数是否符合题干中的要求。其中的判断条件能否被 5或者被 9整除为: i 5=0i 9=0。 (2)然后求得符合 (1)要求的数的倒数的累加和。