有以下程序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.9 B.编译出错C.21 D.9.0
- A9
- B编译出错
- C21
- D9.0
有以下程序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.9 B.编译出错C.21 D.9.0
本题主要考查函数的嵌套调用。在本题中,首先定义了函数fun,该函数的返回类型为浮点型,函数带有两个整型形参,函数的作用不难看出是返回两个形参的和。在主函数中,定义了三个整型变量a,b,c,并分别赋初值为2,5,8,然后嵌套调用fun函数。输出语句fun((int)fun(a+c,b),a-c)首先调用嵌套的fun函数,即(int)fun(a+c,b),按照前面对fun函数的介绍,它应该返回的值为a+c+b=15,由于函数在前面加了强制数据类型转换,将本来的返回结果浮点型转换为了整型,并作为函数的参数,与函数定义的参数类型匹配,程序编译不报错,然后执行fun函数,它返回的结果为15+a-c=9,此时的结果应该是浮点型,即为9.0,但输出语句的输出格式是“%3.0f”,说明无须输出小数部分,因此,最终的输出结果是9。