有以下程序         int fun1 (double a){return a*=a;}         int fun2 (double x,double y)         { double a=0,b=0;            a=fun1

admin2009-03-05  28

问题 有以下程序         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。
转载请注明原文地址:https://kaotiyun.com/show/tlXp777K
0

最新回复(0)