二、简答题(15分)
1.++x和x++功能是否相同?
2.声明函数do_it()和print_num(),要求:
1)do_it函数返回类型为float,有三个char形参.
2)print_num不返回值,形参是一个整型.
3.分别用for、while、do-while三种形式写出求1+4+7+10+…(100以内)的和.
三.阅读程序,写出运行结果(20分)
1.main()
{intx=1,a=3,b=3;
switch(x){
case0:b++;
case1:a++;
case2:a++;b++;
}
printf("a=%d,b=%dn",a,b);
}
2.#defineX5
#defineYX+1
#defineZY*X/2
voidmain()
{inta;a=Y;
printf("%d%dn",Z,--a);
}
3.fun(intn);
main()
{printf("%d",fun(5));}
fun(intn)
{
if(n==1)return1;
returnn-fun(n-1);
}
4.main()
{staticints[2][2]={{12},{14,16}};
int*ptr=s[0];
printf(“%d%dn”,*(ptr+1),*(ptr+2));
}
四、程序填空(10分)
完成下列程序,函数g的功能是计算级数1+x+++…+的值,当通项的绝对值小于eps时计算停止.
#include
floatg(floatx,floateps);
main()
{floatx,eps;
scanf(“%f%f”,&x,&eps);
printf(“n%f,%f”,x,g(x,eps));
}
floatg(floatx,floateps)
{intn=1;floats,t;
s=1;t=1;
do
{t=t*________;
s=s+t;
_________;
}while(__________>eps);
returns;
}
五、改错题(10分)
有一个一维数组a[10],本程序分别求其最大元素、最小元素及其下标,并求出所有元素之和.以下是含有错误的源程序,修改时,可以修改语句中的一部分内容,调整语句的次序,增加少量的变量说明或编译预处理命令,但不能增加其它语句,也不能删除整条语句.
#include
#defineN10.0
main()
{staticinta[N]={8,5,6,9,-1,4,78,2,0,3};
inti,max,column1,min,column2,sum=0;
for(i=0;i