问题 单项选择题

有以下程序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。

填空题
单项选择题