问题 单项选择题

有以下程序: 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)-f1(x); } main() { int i;i=f(fa,fb,2);printf("%d\n",i); } 程序运行后的输出结果是( )。

A.1 2 6 8

B.8 6 2 1

C.8 1 6 2

D.8 6 1 2

答案

参考答案:C

解析:函数f()有3个形式参数f1、f2和x,其中f1、f2是指向函数的指针变量。在main()函数中执行了函数调用“f(fa,fb,2)”,从而使f()的形式参数f1指向了fa,形式参数f2指向了fb,把实参2传给了行参变量x。函数f()中的return语句中的相当于“fb(2)-fa(2)” (fb(2)的返回值为2*2*2=8, fa(2)返回值为2*2=4)即(8-4),值为4。函数f()执行后把返回值4赋给了i,输出i的值是4。所以 4个选项中C正确。

写句子
单项选择题 A1/A2型题