2017-02-17 48 views
-3

編寫一個C程序,要求用戶從鍵盤輸入浮點數,然後打印出該數的平方根就是問題。我究竟做錯了什麼?Sqrt的浮點數

#include <stdio.h> 
#include <math.h> 

int main(int argc, char *argv[]) 
{ 
double x, result; 
printf("Enter a positive number.\n"); 
scanf("&f", &x); 
result = sqrt(x); 
printf("The square root of %f is %f.\n", x, result); 
return 0; 
} 
+3

'&F'不是'scanf'格式代碼... – ShadowRanger

+1

'的scanf(「&F 「,&x);' - >'if(scanf(」%lf「,&x)!= 1)Handle_Error()';%not&,lf,not f,check result。 – chux

回答

1

一元「&」操作者提供參考(操作數變量的存儲器地址),而「%」運算符在scanf或printf的,例如的情況下,結合一個特定的ANSI C變量類型的符號(例如double類型的'lf')被稱爲格式說明符。通過在'%2lf'之間放置一個整數值,可以指定要讀取或打印的精度。 %f指定了一個浮點型變量,這實現了比double更低的精度。也請參閱文檔。順便說一句,在C++中,否則指定精度。

所以:的

double x, result; 
printf("Enter a positive number.\n"); 
scanf("%f", &x); //<--- use %lf (for 'long float') instead of &f 
+0

@Brian Graham,沒有l墨水在我的答案。 –

+0

沒有其他視圖選項說「代碼只回答」。解釋你的代碼的功能,以便讀者理解。 –

+1

@BrianGraham,好的,謝謝。 –

0

使用此

scanf("%lf",&x); 

代替

scanf("&f", &x); 
+1

'「%f」'用於掃描'float',而不是'double' - 需要''%lf'' – Dmitri

+0

是的,同意@Dmitri 使用 scanf(「%lf」,&x); printf(「%lf的平方根是%lf。\ n」,x,result); – Sridhar