有以下程序 float fl(float n) { return n*n; } float f2(float n) { return 2*n;} main() {float(*p1)(float),(*p2

admin2013-02-23  11

问题 有以下程序    float fl(float  n)    {  return  n*n;  }    float f2(float  n)    {  return  2*n;}    main()    {float(*p1)(float),(*p2)(float),(*t)(float),y1,Y2;      p1=f1;    p2=f2;      y1=p2(p1(2.O));      t=p1;    p1=p2;    p2=t;      y2=p2(pl(2.0));      printf("%3.0f,%3,Of\n",y1,y2);    }    程序运行后的输出结果是

选项 A、8,16
B、8,8
C、16,16
D、4,8

答案1

解析 题目一开始定义了两个函数,f1()实现的是返回参数的平方;f2()实现的是返回参数的2倍。接下来在主函数中定义了三个函数指针p1,p2,t。语句p1=f1;p2=f2;让指针p1指向函数n(),  指针p2指向函数9()。  然后调用 p2(p1(2.0)),即让2先平方再乘以2,结果为8并赋给y1。然后语句序列t=p1;p1=p2;p2=t;交换了p1和 p2的值, 即p1指向f2(),p2指向f1()。再调用 p2(p1(2.0)),让2先乘以2再平方,结果为16赋给 y2.最后输出y1,y2的值为8和16,应该选择A。
转载请注明原文地址:https://jikaoti.com/ti/gSn0FFFM
0

最新回复(0)