編程小白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);
}
 

打印結果 

簡單測試

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