首页 > 全部 > 二级C语言 > 国家二级C语言机试(操作题)模拟试卷359

国家二级C语言机试(操作题)模拟试卷359

本单篇文档共4313字,内容预览3600字,预览为有答案版,源文件无水印,下载后包含无答案空白卷版和有答案版,同时也有计算机类NCRE全国计算机二级整科真题模拟题,讲义课件,思维导图,易错高频题等下载。
二级C语言 章节练习 2296人下载
价格: 1.00 原价:¥7.00
收藏

国家二级C语言机试(操作题)模拟试卷359

程序填空题

1.用筛选法可得到2~n(n<10000)之间的所有素数,方法是:首先从素数2开始,将所有2的倍数的数从数表中删去(把数表中相应位置的值置成0);接着从数表中找下一个非0数,并从数表中删去该数的所有倍数;依此类推,直到所找的下一个数等于n为止。这样会得到一个序列:

2,3,5,7,11,13,17,19,23,……

函数fun用筛选法找出所有小于等于n的素数,并统计素数的个数作为函数值返回。

请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。注意:源程序存放在考生文件夹下的BLANK1.C中。不得增行或删行,也不得更改程序的结构!

1 #include<stdio.h>

2 int fun(int n)

3 { int a[10000],i,j,count=0;

4 for(i:2;i<=n; i++)a[i]=i;

5 i=2;

6 while(i<n) {

7 /**********found**********/

8 for(j=a[i]*2;j<=n;j+=__1__)

9 a[j]=0;

10 i++;

11 /**********found**********/

12 while(__2__==0)

13 i++;

14 }

15 printf(’’\nThe prime number between 2 to %d\n’’,n);

16 for(i=2; i<=n;i++)

17 /**********found**********/

18 if(a[i]!=__3__ )

19 {count++; printf(count%157’’%5d’’:’’\n%5d’’,a[i]);}

20 return count;

21 }

22 main()

23 { int n=20,r;

24 r=fun(n);

25 printf(’’\nThe number of prime is:%d\n’’,r);}

(1)a[i] (2)a[i] (3)0

解析:fun函数的功能是用筛选法可得到2~n(n<10000)之间的所有素数。第一空:循环“for(j=a[i]*2;j<=n;j+=__1__)”中,循环变量j的初始值从a[i]的2倍开始,下一次进入循环j就是a[i]的3倍,第一空处是补充i的变化情况,而i每次都增加一个a[i],即第一空处应为“a[i]”。第二空:根据题意第二空处是从数表中找下一个非0数,即在循环中比较a[i]是否为0,如果为0的话,i++指向后一个数表元素,故第二空处应为“a[i]”。第三空:根据语句“{ count++;printf( count%15?’’%5d’’:’’\n%5d’’ ,a[i]); }”可知在满足条件之后计数变量count自增,并且输出a[i],可知a[i]是一个素数,由审题分析可知,经过筛选之后数表中非0的元素就是素数,故第三空处应为“0”,即a[i]不为0的话就是素数。

程序修改题

2.给定程序MODI1.C中函数fun的功能是:将tt所指字符串中的小写字母都改为对应的大写字母,其他字符不变。

例如,若输入’’Ab,cD’’,则输出’’AB,CD’’。

请改正程序中的错误,使它能得出正确的结果。

注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!

1 #include<stdio.h>

2 #include<string.h>

3 char* fun(char tt[])

4 {

5 int i;

6 for(i=0;tt[i];i++)

7 /**********found**********/

8 if((’a’<=tt[i])||(tt[i]<=’z’))

9 /**********found**********/

10 tt[i]+=32;

11 return(tt);

12 }

13 main()

14 {

15 char tt[8 1];

16 printf(’’\nPlease enter a string:’’);

17 gets(tt);

18 printf(’’\nThe result string is:\n%s’’,fun(tt));

19 }

(1)if((’a’<=tt[i])&&(tt[i]<=’z’)) (2)tt[i]-=32;

解析:(1)第一个错误标识下的if判断语句中的逻辑有误,应该是与(&&)的关系,不是或(2)的关系,所以if判断语句改为“if((’a’<=tt[i])&&(tt[i]<=’z’))”。

(2)第二个标识下小写字母转换为大写字母的转换算法有误,小写转换为大写应该是减去32,而不是加上32,所以“tt[i]+=32;”改为“tt[i]=-32;”。

程序设计题

3.请编写函数fun,函数的功能是:判断字符串是否为回文?若是,函数返回1,主函数中输出:YES;否则返回0,主函数中输出NO。回文是指顺读和倒读都一样的字符串。

例如,字符串LEVEL是回文,而字符串123312就不是回文。

注意:部分源程序在文件PROGl.C中。

请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。

1 #include<stdio.h>

2 #include<string.h>

3 #define N 80

4 int fun(char *str)

5 {

6 }

7 main()

8 { char s [N];void NONO();

9 printf(’’Enter a string:’’);gets(s);

10 printf(’’\n\n’’);puts(s);

11 if(fun(s))printf(’’YES\n’’);

12 else printf(’’NO\n’’);

13 NONO();}

14 void NONO()

15 {/*请在此函数内打开文件,输入测试数据,调用fun函数,输出数据,关闭文件。 */

16 FILE *rf,*wf ;

17 int i;char s [N];

18 rf=fopen(’’in.dat’’,’’r’’);

19 wf=fopen(’’out.dat’’,’w’’);

20 for(i=0;i<10;i++) {

21 fscanf(rf,’’%s’’,s);

22 if(fun(s)) fprintf(wf,’’%s YES\n’’,s);

23 else fprintf(wf,’’%s NO\n’’,s)

本文档预览:3600字符,共4313字符,源文件无水印,下载后包含无答案版和有答案版,查看完整word版点下载

剩余未完,查看全文
收藏
国家二级C语言机试(操作题)模拟试卷359

推荐资源

客服

扫码添加客服微信

热线

官方客服

如遇问题,请联系客服为您解决

电话客服:

客服微信:pujinet

工作时间:9:00-18:00,节假日休息

公众号

扫码关注微信公众号