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

admin2009-01-15  31

问题 有以下程序:    int fun1(double A) {return a*=a;}    int fun2(double  x,double y)    { double  a=0,b=0;      a=fun1(x);b=funl(y); return(int)(a+B) ;    }    main()    { double w;w=fun2(1.1,2.0);……}    程序执行后变量w中的值是(  )。

选项 A、5.21
B、5
C、5
D、0

答案4

解析 在fun1()函数中只有一条return语句,返回的是表达式a*=a的值,该值等于a*a。但是,由于fun1()函数的返回值类型被定义为int,所以返回值被取整,即fun1()函数实现的是求一个双精度数平方的整数部分。在fun2()函数中,分别对两个参数调用fun1()函数,然后将两个返回值相加、取整后返回。所以,程序执行后,w中的值是[1.12]+[2.02]=1+4=5(中括号代表截尾取整)。又因为 w被定义为double型,所以变量w中的值应该为一个双精度值5.0。故应该选择C。
转载请注明原文地址:https://kaotiyun.com/show/LoXp777K
0

随机试题
最新回复(0)