c語言中sqrt函式的輸出問題兩種輸出為什麼是

2021-04-18 07:15:07 字數 1620 閱讀 2328

1樓:polaris北斗

因為sqrt的返回值是double型別,你用%d格式符會出錯。

應該寫printf("%lf\n",sqrt(n));

c語言數學函式sqrt()輸出問題

2樓:灰色小測

因為sqrt(9)是double型資料,用%d輸出的時候,輸出的都是0,應該用 %lf 輸出。

3樓:匿名使用者

#include

#include

int main()

因為sqrt的原形是double sqrt(double)double和int在記憶體的佈局造成的結果差別很大

4樓:匿名使用者

printf("%d\n",(int)sqrt(9));

c語言中sqrt輸出的都是double型別的數嗎

5樓:劉文正粉絲

是滴~如果你傳進去了個float或者long doouble型的只會作隱式轉換(long double會有警告)

如果不是傳浮點型的,是個整型內的,小於double的取值範圍的不會有警告,大於的容會有.

如果不是數字型的,那,加個(double)就行了(在前面加)就連字串也行.

如:sqrt((double)"呵呵");

這樣做還能得到rand的效果.而效率比rand快了不知多少倍.

6樓:匿名使用者

是的定義函式 double sqrt(double x);

返回型別是double,因此輸出是double

關於c語言中的sqrt函式

7樓:匿名使用者

在用gcc編譯時,要加上 -lm選項以便連線數學庫... ...

假設程式檔案為cccpy4tt.c,則用以下命令列編譯這個程式:

gcc cccpy4tt.c -lm

8樓:匿名使用者

c語言中sqrt函式是指的開方運算函式,得到的結果是函式變數(可以是數值,也可以是變數名)的算術平方根。如輸入m=sqrt(4);,則輸出結果為2。或者對於變數a有賦值9,,則輸入m=sqrt(9),輸出結果為3.

需要注意的是以下三點:

sqrt函式執行的是結果是算術平方根,即不能運算處負數值,也不能輸出虛數結果。如需要得到算術平方根中的負數值,則應該在sqrt函式前新增負號。

sqrt函式的引數必須是非負數值,如果是負數值,則輸出會報錯,即數值無效;如果引數是未定義的非數字變數,則按回車後也會報錯,即變數名有誤。

sqrt函式的計算精度與c語言設定的精度有關,可以通過設定更改精度。

9樓:

沒錯啊 ,我在編譯器裡可以通過並執行 v6.0

10樓:訾可欣迮詞

幫你改好了!自己看下就懂了!

#include

#include

void

main()

你要%d的話就要全部使用int型的!

要double的話就要%lf

如果用float型的就用%f

C語言中函式呼叫問題,C語言中函式的呼叫

首先我們來說一下,你這個程式是有很大的問題的。函式有且只有唯一一個返回值,當程式執行到return的時候,這個函式就結束並返回了。所以,你這裡寫2個return來返回最大值和最小值是不可能的。再者,如果你想使用返回值作為最大值,最小值的傳遞,那麼在main函式中,你呼叫star函式的時候需要一個變數...

c語言共用體輸出問題

這個是共用體的問題 由於共用體共用同一段起始記憶體的地址,所以後一次的資料寫入可能會覆蓋前一次的資料 然後lz這道題,如果系統將int做2直接處理 比如tc2 的話,結果是380039和9 如果是按4位元組處理的話,結果應該是39和9 下面針對lz的結果,講一下2位元組處理的情況第一個共用體成員是i...

c語言中用於交換值函式問題,C語言中呼叫函式交換兩個變數的值需要傳遞地址,為什麼相加就可以直接用

因為void gsd int a,int b 中的a和b在呼叫時用實參的值進行拷貝,在函式中交換的只是拷貝過來的副本,所以原來的實參值並沒有發生交換操作。而在void gsd int a,int b 中int 型別使a和b的性質發生了變數,它們是 引用變數 呼叫時它們就成了實參的 別名 就是說在函式...