c言語は1元の2次方程式の根を求めます
1つの1元2次方程式について、次のように分析します.
ax^2+bx+c=0
分析:
1.a=0の場合:
結論:一元二次方程式ではない.
2.a!=0:
結論:(1)b^2-4 ac=0の場合、方程式には2つの等しい実根があり、x 1=x 2=-b/2 aである.
(2)b^2-4 ac>0の場合、方程式には2つの等しくない実根があり、x 1=(-b+√(b^2-4 ac)/(2 a)、x 2=(-b-√(b^2-4 ac)/(2 a);
(3)b^2−4 ac<0の場合、方程式には共役複根のセットがある.
3.注意事項:
(1)方程式のルートについては小数点が多いため,変数を定義する際に整数型は使用できず,浮動小数点型やdouble型を使用することができる.
(2).変数をゼロ値と比較する場合、浮動小数点変数を「==」または「!=」で任意の数字と比較することはできません.
(3).関数sqrtを使用するには、ヘッダファイルincludeを参照する必要があります.
c言語のプログラムコードを以下に書きます.
ax^2+bx+c=0
分析:
1.a=0の場合:
結論:一元二次方程式ではない.
2.a!=0:
結論:(1)b^2-4 ac=0の場合、方程式には2つの等しい実根があり、x 1=x 2=-b/2 aである.
(2)b^2-4 ac>0の場合、方程式には2つの等しくない実根があり、x 1=(-b+√(b^2-4 ac)/(2 a)、x 2=(-b-√(b^2-4 ac)/(2 a);
(3)b^2−4 ac<0の場合、方程式には共役複根のセットがある.
3.注意事項:
(1)方程式のルートについては小数点が多いため,変数を定義する際に整数型は使用できず,浮動小数点型やdouble型を使用することができる.
(2).変数をゼロ値と比較する場合、浮動小数点変数を「==」または「!=」で任意の数字と比較することはできません.
(3).関数sqrtを使用するには、ヘッダファイルincludeを参照する必要があります.
c言語のプログラムコードを以下に書きます.
#include
#include
#define EXP 0.00000001
int main()
{
double a = 0.0;
double b = 0.0;
double c = 0.0;
scanf_s("%lf%lf%lf",&a,&b,&c);
if ((a>=-EXP)&&(a<=EXP))
{
printf("
");
}
else
{
double disc = b*b-4*a*c;
if(( disc >= -EXP)&&( disc <= EXP))
{
printf("x = %lf
",-b/(2*a));
}
else if ( disc > 0.0)
{
printf("x1 = x2 %lf, x2 = %lf
",
(-b+sqrt(disc))/(2*a),
(-b-sqrt(disc))/(2*a));
}
else
{
printf("
");
}
}
return 0;
}