1湖南省计算机二级3[1].(6分)程序阅读填空

2019-01-27 19:48

程序填空题一

1. 下面C语言程序将两个递增有序的数值a和b合并一个数组c,并保持递增次序,最后输出数组c.

#include < stodio.h> #define M6 #define N5 main( )

{int a[M]={1,3,5,7,9,11} b[N]={2,4,6,8,10} int c[M+N] int i ,j, k; i=j=k=0 while( 1 ) if a[i]

c[k++]=a[i++]; else c[k++]=b[j++]; while( 2 )

c[k++]=a[i++]; while(j

for(k=0;k<( 4 );k[++]) printf(%dxt,c[k]; ) 其中(1)(2)(3)(4)处分别填一数据,使程序达到其功能。 答案: 1:i

2.下面h函数的功能是计算如下数学函数H的值。请填空。

double fgh(double(*f)(double a),double(* g)(double b), double x,double y)

{return(【1】);}double h(double a,double b) return(fgh(sin,cos,a,b)* fgh(【2】));}

解:(1)(*f)(x+y)/(*g)(y-x) (2)cos,sin,a,b

[解析]本题考察的是函数的声明。要填写的两个空都出现在return语句中,所以要仔细分析函数的返回值。本题的第二个空相对要容易一些,只要根据题干和乘号前面的调用语句对比一下即可得到调用语句的四个参数。第一个空相对要难一些,函数fgh定义时用到了函数指针(*f)和(*g)是为了增加函数的灵活性。根据函数h的定义以及题干要求,可以看出函数fgh应该表示的是乘号两边的某一项。(*f)和(*g)用来表示sin或cos,参数x和y的加减法运算作为sin或cos函数的参数,故应填写(*f)(x+y)/ (*g)(y-x)。

3.下面程序的作用是将以下给出的字符按其格式读入数组ss中,然后输出行、列号之和为3的数组元素,请在____处填入正确内容。

1

A a f c B d e b c g f D main() { static char ss[4][3]={'A','a','f','c','B','d','e','b','C','g','f','D'};

int x,y,z;

for(x=0;【1】;x++) for(y=0;【2】;y++) {z=x+y; if(【3】) printf(\%c\n\,ss[x][y]); } }

解:(1)x<4 (2)y<3 (3)z==3

[解析]本题应用穷举法找到满足要求的值。第一个空:变量x为行数所以是x<4;第二个空:变量y为列数所以是y<3;第三个空:判断x+y是否为3所以是z==3。

4.下面程序的作用是将以下给出的字符按其格式读入数组ss中,然后输出行、列号之和为3的数组元素,请在____处填入正确内容。 A a f c B d e b c g f D main() { static char ss[4][3]={'A','a','f','c','B','d','e','b','C','g','f','D'};

int x,y,z;

for(x=0;【1】;x++) for(y=0;【2】;y++) {z=x+y; if(【3】) printf(\%c\n\,ss[x][y]); } }

解:(1)x<4 (2)y<3 (3)z==3

2

[解析]本题应用穷举法找到满足要求的值。第一个空:变量x为行数所以是x<4;第二个空:变量y为列数所以是y<3;第三个空:判断x+y是否为3所以是z==3。

程序填空题二

【3.1】下面程序的功能是不用第三个变量,实现两个数的对调操作。 #include main()

{ int a,b;

scanf(\;

printf(\; a= ① ; b= ② ; a= ③ ;

printf(\; }

答案: ① a+b ② a-b ③ a-b 或者 ① a^b ② b^a ③ a^b

【3.2】下面程序的功能是根据近似公式:π2/6≈ 1/12+1/22+1/32+ …… +1/n2,求π值。 #include /*数学函数数包含在头函数math.h 中*/ double pi(long n) { double s=0.0; long i;

for(i=1;i<=n;i++) s=s+ ① ; return( ② ); }

答案:① 1.0/(float)(i*i) ② sqrt(6*s) /* sqrt()是求平方根函数*/

【3.3】下面程序的功能是计算1-3+5-7+ …… -99+101的值。 main()

{ int i,t=1,s=0;

for(i=1;i<=101;i+=2) { ① ; s=s+t; ② ; }

printf(\; }

答案:① t=t*i ② t=t>0?-1:1

【3.4】下面程序的功能是从键盘上输入若干学生的学习成绩,统计并输出最高成绩和最低

3

成绩,当输入为负数时结束输入。 main()

{ float x,amax,amin; scanf(\; amax=x; amin=x; while( ① )

{ if(x>amax) amax=x; if( ② ) amin=x; scanf(\; }

printf(\; }

答案: ① x>=0 ② x

【3.5】下面程序的功能是将形参x的值转换为二进制数,所得的二进制数放在一个一维数组中返回,二进制数的最低位放在下标为0的元素中。 fun(int x,int b[]) { int k=0,r; do

{ r=x% ① ; b[k++]=r; x/= ② ; }while(x); }

答案: ① 2 ② 2

【3.6】下面程序的功能是输出100以内的个位数为6、且能被3整除的所有数。 main()

{ int i,j ,n; n=0;

for(i=0; ①i<10 ;i++) { j=i*10+6; n=n+1;

if( ② j%3!=0) ; printf(\; } }

答案:① i<=9 ② j%3!=0

说明:100以内的个位数为6的数有10个,即6、16、26、36、46、56、66、76、86、96

4

【3.7】下面程序的功能是用辗转相除法求两个正整数m和n的最大公约数。 hcf(int m,int n) { int r; if(m

r=m%n; while( ② ) { m=n; n=r; r=m%n; } ③ ; }

答案:① m=n ② r!=0 ③ return(n)

【3.8】下面程序的功能是使用冒泡法对输入的10个浮点数从小到大进行排序。排好序的10个数分两行输出。程序如下: #include main() { ① ; int i,j;

printf(\; for(i=0; ② ;i++ ) scanf(\; printf(\;

for(i=2; ③ ;i++ ) for(j=0; ④ ;j++ ) if( ⑤ ) { x=a[j]; ⑥ ;

a[j+1]=x; }

printf(\;\\n\; for(i=0; ⑦ ;i++ ) { if( ⑧ ) printf(\;

printf(\; }

printf(\; }

5


1湖南省计算机二级3[1].(6分)程序阅读填空.doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:八年级下语文第二单元练习

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: