仔细阅读下面程序,请给出运行结果( )。#include#includeint f1(int x){return x*x;}int f2(int x){return x*x*x;}main( ){int x=3,y1,y2,y3,y4;int(*f)( );f=f1;y1=(*f)(x);y2=f1(x);f=f2;y3=f(x);y4=f2(x);printf(“y1=%d,y2=%d,y3=%d,y4=%d\n”,y1,y2,y3,y4);}

2023-09-01

A.y1=9,y2=9,y3=27,y4=27
B.y1=3,y2=9,y3=27,y4=9
C.y1=3,y2=3,y3=9,y4=9
D.y1=3,y2=9,y3=9,y4=27

参考答案:A

题中y2和y4是直接函数调用,毫无疑问是9和27,关键在于f=f1是将函数指针f指向了函数f1,因此y1=(*f)(x)本质是调用了函数f1,其结果与直接调用y2=f1(x)相同,y3同理。