编程小白C语言练习题目13

题目要求

有以下程序
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中的值

 思路分析

此题考核的是数值类型的定义与强制转换。本题在进行调用函数 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.000000。

很奇怪的一点,本人算了很多,验证了多次,最后结果都为5.000000,但是网上和题目上的答案全部都是5.0,所以这题仅供参考,所得数据结果没有什么实际意义,猜想应该是最后输出printf("%f"),不可能是%d,输出%d将毫无意义

 参考代码

#include<stdio.h>
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);
}
int main()
{
	double w;
	w=fun2(1.1,2.0);
	printf("%lf\n",w);
}
 

打印结果 

简单测试

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章