有以下程序:    float f1(float  n)    {  return n*n;  }    float f2(float  n)    {  return 2*n;  }    main()    {float(*p1)(float),(*p

admin2009-02-15  19

问题 有以下程序:    float f1(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.0));    t=p1;  p1=p2;  p2=t;    y2=p2(p1(2.0));    printf("%3.0f,%3.0f\n",y1,y2);    }    程序运行后的输出结果是 ______。

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

答案A

解析 题中“(*p1)(float)”定义了一个指向函数的指针变量p1,此函数的返回值是float类型。在main函数中,使得p1指向了函数f1,P2指向了函数缀。语句“y1=p2(p1(2.0));”先调用了p1函数,将其返回值4.000000传递给了f2的形参n,并使其函数返回值8.000000赋值给y1。然后在main函数中交换了p1、p2指针变量的指向,使p1指向了函数侵,p2指向了函数f1,并先调用函数f2,得到返回值4.000000,使其传递给f1函数的形参n,并带回返回值16.000000赋值给y2。在输出y1、y2时,各浮点数占3列,小数位数为0,即输出了  8,16。
转载请注明原文地址:https://kaotiyun.com/show/8qXp777K
0

最新回复(0)