【计算机类职业资格】国家二级C语言机试(操作题)模拟试卷374及答案解析.doc

上传人:cleanass300 文档编号:1332188 上传时间:2019-10-17 格式:DOC 页数:3 大小:36KB
下载 相关 举报
【计算机类职业资格】国家二级C语言机试(操作题)模拟试卷374及答案解析.doc_第1页
第1页 / 共3页
【计算机类职业资格】国家二级C语言机试(操作题)模拟试卷374及答案解析.doc_第2页
第2页 / 共3页
【计算机类职业资格】国家二级C语言机试(操作题)模拟试卷374及答案解析.doc_第3页
第3页 / 共3页
亲,该文档总共3页,全部预览完了,如果喜欢就下载吧!
资源描述

1、国家二级 C语言机试(操作题)模拟试卷 374及答案解析(总分:6.00,做题时间:90 分钟)一、程序填空题(总题数:1,分数:2.00)1.给定程序中,函数 fun的功能是:利用指针数组对形参 ss所指字符串数组中的字符串按由长到短的顺序排序,并输出排序结果。ss 所指字符串数组中共有 N个字符串,且串长小于 M。 请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。 注意:源程序存放在考生文件夹下的BLANK1C 中。 不得增行或删行,也不得更改程序的结构!1 #includestdioh2 #includestringh3 #define N 54 #define M

2、 85 void fun(char(*ss)M)6 char *psN,*tp;int i,j,k;7 for(i=0;iN;i+)psi=ssi;8 for(i=0;iN-1;i+) 9 *found*10 k= _1_;11 for(j=i+1;jN;j+)12 *found*13 if(strlen(psk ) strlen(_2_)k=j;14 *found*15 tp=psi;psi=psk;psk=_3_;16 17 printf(nThe string after sorting by length:nn);18 for(i=0;iN;i+)puts(psi);19 20 mai

3、n()21 char chNM=red,green,blue,yellow,black;22 int i;23 printf(nThe original stringnn);24 for(i=0;iN;i+)puts(chi); printf(n);25 fun(ch);(分数:2.00)_二、程序修改题(总题数:1,分数:2.00)2.由 N个有序整数组成的数列已放在一维数组中,给定程序 MODI1C 中函数 fun的功能是:利用折半查找算法查找整数 m在数组中的位置。若找到,返回其下标值;反之,返回-1。 折半查找的基本算法是:每次查找前先确定数组中待查的范围:low 和 high(low

4、high),然后把 m与中间位置(mid)中元素的值进行比较。如果 m的值大于中间位置元素中的值,则下一次的查找范围落在中间位置之后的元素中;反之,下一次的查找范围落在中间位置之前的元素中。直到 lowhigh,查找结束。 请改正程序中的错误,使它能得出正确结果。 注意:不要改动 main函数,不得增行或删行,也不得更改程序的结构。1 #includestdioh2 #define N 103 *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(mamid

5、)9 high=mid-1;10 *found*11 else Tf(mamid)12 low=mid+1;13 else return(mid);14 15 return(-1);16 17 main()18 int i,aN=-3,4,7,9,13,45,67,89,100,180,k,m;19 printf(a 数组中的数据如下:);20 for(i=0;iN;i+) printf(d,ai);21 printf(Enter m:);scanf(d,22 k=fun(a,m);23 if(k=0)printf(m=d,index=dn,m,k);24 else printf(Not be

6、 found!n);25 (分数:2.00)_三、程序设计题(总题数:1,分数:2.00)3.请编写函数 fun,函数的功能是:将大于形参 m且紧靠 m的 k个素数存入 XX所指的数组中。例如,若输入 17,5,则应输出:19,23,29,31,37。 注意:部分源程序在文件 PROG1C 文件中。 请勿改动主函数 main和其他函数中的任何内容,仅在函数 fun的花括号中填入你编写的若干语句。1 #includestdioh2 void fun(int m, int k, int xx)3 4 5 Nain()6 7 int m,n,zz1000;void NONO();8 pritf(nP

7、lease enter two integers:);9 scanf(dd, m, n);10 fun(m,n,zz);11 for(m=0 ; mn;m+)12 printf(d,zzm);13 printf(n);14 NONO();15 16 Void NONO()17 *本函数用于打开文件,输入测试数据,调用 fun函数,输出数据,关闭文件。*18 int m,n,zz1000,i;19 FILE *rf,*wf;20 rf=fopen(indat,r);21 wf=fopen(outdat,w);22 for(i=0;i10;i+) 23 fscanf(rf, dd, m, m+)f

8、printf(wf,d,zzm);26 fprintf(wf,n);27 28 fclose(rf);29 fclose(wf);(分数:2.00)_国家二级 C语言机试(操作题)模拟试卷 374答案解析(总分:6.00,做题时间:90 分钟)一、程序填空题(总题数:1,分数:2.00)1.给定程序中,函数 fun的功能是:利用指针数组对形参 ss所指字符串数组中的字符串按由长到短的顺序排序,并输出排序结果。ss 所指字符串数组中共有 N个字符串,且串长小于 M。 请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。 注意:源程序存放在考生文件夹下的BLANK1C 中。 不得

9、增行或删行,也不得更改程序的结构!1 #includestdioh2 #includestringh3 #define N 54 #define M 85 void fun(char(*ss)M)6 char *psN,*tp;int i,j,k;7 for(i=0;iN;i+)psi=ssi;8 for(i=0;iN-1;i+) 9 *found*10 k= _1_;11 for(j=i+1;jN;j+)12 *found*13 if(strlen(psk ) strlen(_2_)k=j;14 *found*15 tp=psi;psi=psk;psk=_3_;16 17 printf(nT

10、he string after sorting by length:nn);18 for(i=0;iN;i+)puts(psi);19 20 main()21 char chNM=red,green,blue,yellow,black;22 int i;23 printf(nThe original stringnn);24 for(i=0;iN;i+)puts(chi); printf(n);25 fun(ch);(分数:2.00)_正确答案:(正确答案:(1)i (2)psj (3)tp)解析:解析:第一空:分析可知,fun 函数采用的选择排序,在第一空处是初始化k。“for(j=i+1;

11、jN;j+)”循环是寻找长度最长的字符串,找到之后和 k字符串交换,因此 k从 0开始,随着 i变化,故第一空处应为i。 第二空:“if(strlen(psk)strlen(_2_) k=j;”新的字符串 psj如果比 psk的长度长,那么 k记录下新的最长的字符串的下标位置 j,故第二空处应为“psj”。 第三空:“tp=psi;psi=psk;psk=_3_;”是字符串地址交换,显然第三空处应是临时变量 tp。二、程序修改题(总题数:1,分数:2.00)2.由 N个有序整数组成的数列已放在一维数组中,给定程序 MODI1C 中函数 fun的功能是:利用折半查找算法查找整数 m在数组中的位置

12、。若找到,返回其下标值;反之,返回-1。 折半查找的基本算法是:每次查找前先确定数组中待查的范围:low 和 high(lowhigh),然后把 m与中间位置(mid)中元素的值进行比较。如果 m的值大于中间位置元素中的值,则下一次的查找范围落在中间位置之后的元素中;反之,下一次的查找范围落在中间位置之前的元素中。直到 lowhigh,查找结束。 请改正程序中的错误,使它能得出正确结果。 注意:不要改动 main函数,不得增行或删行,也不得更改程序的结构。1 #includestdioh2 #define N 103 *found*4 void fun(int a,int m)5 int lo

13、w=0,high=N-1,mid;6 while(low=high)7 (mid=(low+high)2;8 if(mamid)9 high=mid-1;10 *found*11 else Tf(mamid)12 low=mid+1;13 else return(mid);14 15 return(-1);16 17 main()18 int i,aN=-3,4,7,9,13,45,67,89,100,180,k,m;19 printf(a 数组中的数据如下:);20 for(i=0;iN;i+) printf(d,ai);21 printf(Enter m:);scanf(d,22 k=fu

14、n(a,m);23 if(k=0)printf(m=d,index=dn,m,k);24 else printf(Not be found!n);25 (分数:2.00)_正确答案:(正确答案:(1)int fun(int a,int m) (2)else if(mamid)解析:解析:(1)根据主函数中“k=fun(a,m);”,知道函数 fun应该是返回 int型的函数,所以第一个标识下面定义的“void fun(int a,int m)”应该改为“int fun(int a,int m)”。 (2)第二个标识下的“else If(mamid)”是判断 m是否比 amid大,在 while

15、循环中采用的是 if-elseif-else语句,显然“else If”当中“If”应当小写,故第二标识下“else If(mamid)”应改为“else if(mamid)。三、程序设计题(总题数:1,分数:2.00)3.请编写函数 fun,函数的功能是:将大于形参 m且紧靠 m的 k个素数存入 XX所指的数组中。例如,若输入 17,5,则应输出:19,23,29,31,37。 注意:部分源程序在文件 PROG1C 文件中。 请勿改动主函数 main和其他函数中的任何内容,仅在函数 fun的花括号中填入你编写的若干语句。1 #includestdioh2 void fun(int m, in

16、t k, int xx)3 4 5 Nain()6 7 int m,n,zz1000;void NONO();8 pritf(nPlease enter two integers:);9 scanf(dd, m, n);10 fun(m,n,zz);11 for(m=0 ; mn;m+)12 printf(d,zzm);13 printf(n);14 NONO();15 16 Void NONO()17 *本函数用于打开文件,输入测试数据,调用 fun函数,输出数据,关闭文件。*18 int m,n,zz1000,i;19 FILE *rf,*wf;20 rf=fopen(indat,r);2

17、1 wf=fopen(outdat,w);22 for(i=0;i10;i+) 23 fscanf(rf, dd, m, m+)fprintf(wf,d,zzm);26 fprintf(wf,n);27 28 fclose(rf);29 fclose(wf);(分数:2.00)_正确答案:(正确答案:1 int r=0,temp,p,sign=1; 2 for(temp=m+1;tempm*m;temp+) 3 从 temp开始循环,判断紧靠 temp的整数 4 (for(p=2;ptemp;p+) 5 if(tempp!=0)判断temp是否为素数 6 sign=1;若是素数,标志设为 1

18、7 else 8 sign=0;若不是素数,标志设为0 9 break; 10 11 if(sign=1&p=temp) 12 if(k=0) 判断已有的素数个数是否已经满足sum个 13 xxr+=temp;将素数 temp存入数组 select 14 k-;将题目中要求的素数个数减1 15 16 else 17 break; 18 )解析:解析:进入 fun函数,根据前面的分析:首先,定义、初始化变量 sign,作为素数的标志;定义r,初始化为存储素数数组的起始位。然后,每判断一次 temp中的值是否为素数后,使 temp的值增 1,再次对 temp中新的值进行判断其是否为素数,不断循环此过程,直到 m的值等于指定的个数,即函数中的 k个数。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 考试资料 > 职业资格

copyright@ 2008-2019 麦多课文库(www.mydoc123.com)网站版权所有
备案/许可证编号:苏ICP备17064731号-1