问题 单项选择题

有以下程序:
float fun(int x,int y)
return(x+y);
main()
int a=2,b=5,C=8;
printf("%3.0f\n",fun((int)fun(a+c,b),a-c));

程序运行后的输出结果是( )。

A.编译出错

B.9

C.21

D.9.0

答案

参考答案:B

解析: fun((int)fun(a+c,b),a-c))是用函数的返回值做实参。第一次调用fun(a+c,b),x+y=a+c+b=2+5+8=15,由于函数fun()的返回值类型被定义为float型,返回值为15.000000,在主函数中被强制转换为int型变为15。第二次调用后fun(15,a-c),x+y=15+a-c =15+2-8=9,返回值为9.000000,输出格式要求小数位为0且数据宽度为3,则输出9。

选择题
单项选择题 A1型题