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的性質發生了變數,它們是 引用變數 呼叫時它們就成了實參的 別名 就是說在函式...