2次方程式の根を見つけるためにこのコードを書いています。走査部分の前にスペースを入れないとうまくいきません。 (例えば、入力Iでは、書き込み:a=1,b=2, c=1
)。その場合、変数を削除するだけです。 (私が与えた例では、c
は入力から削除され、そのように私が受け取る答えは-1の代わりに0、-2です)。スペースを他の場所に置くとコードが動作します(a =1,b= 2,c=1
)。Cスペース内のscanf
この問題を解決するにはどうすればよいですか?
int main()
{
double root1 = 0, root2 = 0;
double a = 0., b = 0., c = 0.;
printf("Enter a polynomial:\n");
scanf("a=%lf,b=%lf,c=%lf", &a, &b, &c);
{
if (a == 0)
{
return 0;
}
if ((b * b - 4 * a * c) == 0)
{
root1 = -b/2 * a;
printf("root is %f", root1);
}
else if ((b * b - 4 * a * c) < 0)
{
printf("There are no roots");
}
else {
root1 = (-b + sqrt(b * b - 4 * a * c))/2* a;
root2 = (-b - sqrt(b * b - 4 * a * c))/2* a;
printf("Roots are %f,%f", root1, root2);
}
}
return 0;
}
を先頭にスペースがあなたのフォーマット文字列の一部ではないので、その後 –
を入力してください。 –
これらの愚かなコンマと厳しい入力仕様は忘れて、入力しないでください。 'printf("多項式a b cを入力する:\ n "); scanf( "%lf%lf%lf"、&a、&b、&c); 'を入力し、' 1 2 1'を入力するか 'newline 'で区切ってください) –