2017-02-17 8 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、結果を確認 – chux

答えて

1

単項「&」演算子は、特定のANSI Cに関連して、例えば、scanf関数やprintf関数の文脈における「%」演算子ながら、(オペランド変数のメモリアドレスへの)基準を配信しますdouble型の 'lf'のような可変型のシンボルは、フォーマット指定子として知られています。 '%2lf'のように、2つの間に整数値を置くことによって、読み込みまたは印刷される精度を指定することができます。 %fは浮動小数点型変数を指定し、これは倍精度よりも低い精度を実現します。ドキュメントも参照してください。ちなみに、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 "'は 'double'ではなく' float'をスキャンするためのものです - ''%lf "'にする必要があります – Dmitri

+0

はい、@Dmitriと同義です scanf( "%lf"、&x); printf( "%lfの平方根は%lfです。\ n"、x、result); – Sridhar

関連する問題