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

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

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

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

程序填空题

1.给定程序中,函数fun的功能是:把形参s所指字符串中下标为奇数的字符右移到下一个奇数位置,最右边被移出字符串的字符绕回放到第一个奇数位置,下标为偶数的字符不动(注:字符串的长度大于等于2)。例如,形参s所指的字符串为:abcdefgh,执行结果为:ahcbedgf。

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

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

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

1 #include<stdio.h>

2 void fun(char *s)

3 { int i,n,k;char c;

4 n=0,

5 for(i=0;s[i]!=’\0’;i++)n++;

6 /**********found**********/

7 if(n%2==0)k=n__1__;

8 else k=n-2;

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

10 c=__2__;

11 for(i=k-2; i>=1j i=i-2) s[i+2]=s[i];

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

13 s[1]=__3__;

14 }

15 main()

16 { char s[80]=’’abcdefgh’’;

17 printf(’’\nThe original string is:%s\n’’,s);

18 fun(s);

19 printf(’’\nThe result is:%s\n’’,s);

20 }

(1)1 (2)s[k] (3)c

解析:函数fun的功能是移动下标为奇数位置的字符。

第一空:“for(i=0;s[i]!=’\0’;i++) n++;”n记录了数组s的长度,“if(n%2==0)”如果长度n是偶数,那么最右边被移出的字符的下标是在n-1,如果n是奇数,那么最右边被移出的字符的下标是n-2,因此第一空处应为“1”。

第二空:题目要求最右边被移出字符串的字符绕回放到第一个奇数位置,因此最右边被移出的字符是s[k],在s[k]被替换之前必须先把s[k]保存在其他变量中,故第二空处应为“s[k]”,将s[k]保存在c中。

第三空:此处是把最右边被移出字符串的字符绕回放到第一个奇数位置,最右边被移出字符保存在c,第一奇数位置是s[1],故第三处应为“c”。

程序修改题

2.给定程序MODI1.C中函数fun的功能是:计算函数(x,y,z)=(x+y)/(x-y)+(z+y)/(z-y)的值。其中x和y的值不等,z和Y的值不等。例如,当x的值为9、y的值为11、z的值为15时,函数值为-3.50。

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

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

1 #include<stdio.h>

2 #include<math.h>

3 #include<stdlib.h>

4 /**********found**********/

5 #define FU(m,n) (m/n)

6 float fun(float a,float b, float c)

7 { float value ;

8 value=FU(a+b,a-b)+FU(c+b,c-b);

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

10 Return(Value);

11 }

12 main()

13 { float x,y,z,sum;

14 printf(’’Input x y z:’’);

15 scanf(’’%f%f%f’’,&x,&y,&z);

16 printf(’’x=%f,y=%f,z=%f\n’’,x,y,z);

17 if(x==y || y==z){printf(’’Data error!\n’’); exit(0);}

18 sum=fun(x,y,z);

19 printf(’’The result is:%5.2f\n’’,sum);

20 }

(1)#define Fu(m,n) ((m)/(n)) (2)return (value);

解析:(1)函数fun两次调用宏FU来计算“value=FU (a+b,a-b)+FU(c+b,c-b);”。检查宏的定义是否正确,可以用实参代入宏进行展开:(a+b/a-b),由此看到,“FU(a+b,a-b)”进行的计算不是“(a+b)/(a-b)”,而是“(a+b/a-b)”,因为“/”的优先级高于“+”或“-”,所以要使用括号限定计算优先顺序。所以将“#deftne FU(m,n)(m/n)”改为“#define FU(m,n)((m)/(n))”。

(2)第二个标识下返回语句的关键字有误。所以,第二个标识下“Return(value);”应该改为“return (value):”,C语言中没有“Return”这个关键字。

程序设计题

3.请编写一个函数fun,它的功能是:

计算n门课程的平均分,计算结果作为函数值返回。

例如:若有5门课程的成绩是:90.5,72,80,61.5,55。则函数的值为:71.80。

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

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

1 #include<stdio.h>

2 float fun(float *a,int n)

3 {

4 }

5 main()

6 {float score[30]={90.5,72,80,61.5,55},aver;

7 void NONO();

8 aver=fun(score,5);

9 printf(’’\nAverage score is:%5.2f\n’’,aver);

10 NONO();

11 }

12 void NONO()

13 {/*本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。 */

14 FILE *fp,*wf;

15 int i,j;

16 float aver,score[5];

17 fp=fopen(’’in.dat’’,’’r’’);

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

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

20 for(j=0;j<5;j++)fscanf(fp,’’%f,’’,&score[j]);

21 aver=fun(score,5);

22 fprintf(wf,’’%5.2f\n’’,aver);

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

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

推荐资源

客服

扫码添加客服微信

热线

官方客服

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

电话客服:

客服微信:pujinet

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

公众号

扫码关注微信公众号