程序填空题一
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]<b[j]
c[k++]=a[i++];
else c[k++]=b[j++];
while( 2 )
c[k++]=a[i++];
while(j<N)
c[k++]=( 3 )
for(k=0;k<( 4 );k[++])
printf(%dxt,c[k]; )
其中(1)(2)(3)(4)处分别填一数据,使程
序达到其功能。
答案:
1:i<M&&j<N
2:i<M;
3:b[j++];
4:M+N
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
的数组元素,请在____处填入正确内容。
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]);