问题 单项选择题

有以下程序:
#include<stdio.h>
int fun1(double a) return a*=a;
int fun2(double x, double y)
double a=O, b=0;
a=funl(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.0
D) 0.0

答案

参考答案:C

解析: 本题考查的是函数的嵌套调用。在funl()函数中只有一条return语句,返回的是表达式a*=a的值,该值等于a*a。但是,由于fun1()函数的返回值类型被定义为int,所以返回值被取整,即fun1()函数实现的是求一个双精度数平方的整数部分。在fun2()函数中,分别对两个参数调用funl()函数,然后将两个返回值相加、取整后返回。所以,程序执行后,w中的值是[1.12]+[2.02]=1+4=5(中括号代表截尾取整)。又因为w被定义为double型,所以变量w中的值应该为一个双精度值5.0。

多项选择题
判断题