(8)有以下程序:
int fa(int x){return x*x;}
int fb(int x){return x*x*x;}
int f(int(*f1)(),int(*f2)(),int x)
{return f2(X)-n(x);}
main()
{int i;i=f(fa,fb,2);printf("%d\n",i);}
程序运行后,输出结果是【8】。
答案:【8】4
评析:在主函数中调用函数f,函数f有三个参数,形参f1与f2分别是两个指向函数的指针。在f中执行r2(x)-f1(x),实际上是执行了fb(2).fa(2),故执行i=(fa,fb,2)后i的值为2^3-2^2=4。
(9)下面程序的输出是【9】。
main()
{enum em{eml=3,em2=1,em3};
char*aa[]={"AA","BB","CC","DD"};
primf("%s%s%s\n",aa[eml],aa[em2],aa[em3]);
}
答案:【9】DDBBCC
评析:c语言对枚举的定义规定:在枚举中声明的各个枚举元素,如果没有明确指出某个枚举元素的值,它的上一个元素存在并有明确值的情况下,这个枚举元素的值为其上一个元素的值+1。
在本题中,没有明确说明枚举元素em3的值,则em3=em2+l=1+l=2,进而可知,在printf()打印函数中,要打印的数组元素是aa[3]、aa[1]、aa[2],因此最后的打印结果应当为"DDBBCC"。
(10)若想通过以下输入语句使a=5.0,b=4,c=3,则输入数据的形式应该是【10】。
int b,c;float a;
scanf("%£%d,c=%d",&a,&b,&c)
答案:【10】5.0,4,c=3