有以下程序:#include <stdio.h>float f1 (float n ){ return n*n;}float f2 ( float n){ return 2 * n;}main( ){ float ( * p1)(float),( *

admin2013-02-23  41

问题 有以下程序:#include <stdio.h>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));    prinff("% 3.0f, %3.Of\n" ,y1,y2);}程序运行后的输出结果是(    )。

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

答案1

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

最新回复(0)