A-A+

有以下程序 int fun1 (double a){return a*=a;} int fu

2022-08-06 04:21:12 问答库 阅读 175 次

问题详情

有以下程序 int fun1 (double a){return a*=a;} int fun2 (double x,double y) { double a=0,b=0; a=fun1(x);b=fun1(y); return(int)(a+b); } main() {double w;w=fun2(1.1,2.0);......} 程序执行后变量W中的值是______。
A.5.21
B.5
C.5
D.0请帮忙给出正确答案和分析,谢谢!

参考答案

正确答案:C
解析:此题考核的是数值类型的定义与强制转换。本题在进行调用函数fun2()时,又对函数fun1()进行了调用,由于函数fun1()定义为整型,所以第一次调用fun1()时返回的值为1,然后再将1赋值给a,此时由于a为double型,则系统自动类型转换,将1转换成了1.000000赋值给了变量a,以此类推,得b的值为4.000000,然后诵过“return(int)(a+b);”将a+b的值强制转换为int型5返回给主函数,此时又由w的类型为double,所以返回的整型值5又被转换为double型。故输出结果为5.0。

考点:程序