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

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

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

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

程序填空题

1.给定程序中,函数fun的功能是:利用指针数组对形参ss所指字符串数组中的字符串按由长到短的顺序排序,并输出排序结果。ss所指字符串数组中共有N个字符串,且串长小于M。

请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。

注意:源程序存放在考生文件夹下的BLANK1.C中。

不得增行或删行,也不得更改程序的结构!

1 #include<stdio.h>

2 #include<string.h>

3 #define N 5

4 #define M 8

5 void fun(char(*ss)[M])

6 { char *ps[N],*tp;int i,j,k;

7 for(i=0;i<N;i++)ps[i]=ss[i];

8 for(i=0;i<N-1;i++) {

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

10 k= __1__;

11 for(j=i+1;j<N;j++)

12 /**********found**********/

13 if(strlen(ps[k] ) <strlen(__2__))k=j;

14 /**********found**********/

15 tp=ps[i];ps[i]=ps[k];ps[k]=__3__;

16 }

17 printf(’’\nThe string after sorting by length:\n\n’’);

18 for(i=0;i<N;i++)puts(ps[i]);

19 }

20 main()

21 {char ch[N][M]={’’red’’,’’green’’,’’blue’’,’’yellow’’,’’black’’};

22 int i;

23 printf(’’\nThe original string\n\n’’);

24 for(i=0;i<N;i++)puts(ch[i]); printf(’’\n’’);

25 fun(ch);}

(1)i (2)ps[j] (3)tp

解析:第一空:分析可知,fun函数采用的选择排序,在第一空处是初始化k。“for(j=i+1;j<N;j++)”循环是寻找长度最长的字符串,找到之后和k字符串交换,因此k从0开始,随着i变化,故第一空处应为’’i’’。

第二空:“if(strlen(ps[k])<strlen(__2__) k=j;”新的字符串ps[j]如果比ps[k]的长度长,那么k记录下新的最长的字符串的下标位置j,故第二空处应为“ps[j]”。

第三空:“tp=ps[i];ps[i]=ps[k];ps[k]=__3__;”是字符串地址交换,显然第三空处应是临时变量tp。

程序修改题

2.由N个有序整数组成的数列已放在一维数组中,给定程序MODI1.C中函数fun的功能是:利用折半查找算法查找整数m在数组中的位置。若找到,返回其下标值;反之,返回-1。

折半查找的基本算法是:每次查找前先确定数组中待查的范围:low和high(low<high),然后把m与中间位置(mid)中元素的值进行比较。如果m的值大于中间位置元素中的值,则下一次的查找范围落在中间位置之后的元素中;反之,下一次的查找范围落在中间位置之前的元素中。直到low>high,查找结束。

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

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

1 #include<stdio.h>

2 #define N 10

3 /**********found**********/

4 void fun(int a[],int m)

5 { int low=0,high=N-1,mid;

6 while(low<=high)

7 (mid=(low+high)/2;

8 if(m<a[mid])

9 high=mid-1;

10 /**********found**********/

11 else Tf(m>a[mid])

12 low=mid+1;

13 else return(mid);

14 }

15 return(-1);

16 }

17 main()

18 {int i,a[N]={-3,4,7,9,13,45,67,89,100,180},k,m;

19 printf(’’a数组中的数据如下:’’);

20 for(i=0;i<N;i++) printf(’’%d’’,a[i]);

21 printf(’’Enter m:’’);scanf(’’%d’’,&m);

22 k=fun(a,m);

23 if(k>=0)printf(’’m=%d,index=%d\n’’,m,k);

24 else printf(’’Not be found!\n’’);

25 }

(1)int fun(int a[],int m) (2)else if(m>a[mid])

解析:(1)根据主函数中“k=fun(a,m);”,知道函数fun应该是返回int型的函数,所以第一个标识下面定义的“void fun(int a[],int m)”应该改为“int fun(int a[],int m)”。

(2)第二个标识下的“else If(m>a[mid])”是判断m是否比a[mid]大,在while循环中采用的是if-elseif-else语句,显然“else If”当中“If”应当小写,故第二标识下“else If(m>a[mid])”应改为“else if(m>a[mid])’’。

程序设计题

3.请编写函数fun,函数的功能是:将大于形参m且紧靠m的k个素数存入XX所指的数组中。例如,若输入17,5,则应输出:19,23,29,31,37。

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

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

1 #include<stdio.h>

2 void fun(int m, int k, int xx[])

3 {

4 }

5 Nain()

6 {

7 int m,n,zz[1000];void NONO();

8 pritf(’’\nPlease enter two integers:’’);

9 scanf(’’%d%d’’, &m, &n);

10 fun(m,n,zz);

11 for(m=0 ; m<n;m++)

12 printf(’’%d’’,zz[m]);

13 printf(’’\n’’);

14 NONO();

<

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

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

推荐资源

客服

扫码添加客服微信

热线

官方客服

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

电话客服:

客服微信:pujinet

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

公众号

扫码关注微信公众号