C言語で2次方程式の解を求めるにはどうすればよいか
2次方程式 ax^2 + bx + c = 0の根をC言語で求めるには、まず2次方程式の一般形式を理解する必要があります。
これはC言語で2次方程式の解を求めるサンプルコードです:
#include
#include
int main() {
float a, b, c, discriminant, root1, root2;
}
printf("请输入二元一次方程的系数:\n");
printf("a = ");
scanf("%f", &a);
printf("b = ");
scanf("%f", &b);
printf("c = ");
scanf("%f", &c);
discriminant = b*b - 4*a*c;
if (discriminant > 0) {
root1 = (-b + sqrt(discriminant)) / (2*a);
root2 = (-b - sqrt(discriminant)) / (2*a);
printf("方程的根是实数,分别为:\n");
printf("x1 = %.2f\n", root1);
printf("x2 = %.2f\n", root2);
}
else if (discriminant == 0) {
root1 = -b / (2*a);
printf("方程的根是相等的,为:\n");
printf("x1 = x2 = %.2f\n", root1);
}
else {
float realPart = -b / (2*a);
float imaginaryPart = sqrt(-discriminant) / (2*a);
printf("方程的根是复数,为:\n");
printf("x1 = %.2f + %.2fi\n", realPart, imaginaryPart);
printf("x2 = %.2f - %.2fi\n", realPart, imaginaryPart);
}
return 0;
私は本を読むのが大好きです。
係数と根にはfloat型の変数を用い、平方根はmath.hのsqrt()関数で計算する。判別式の値によって、実数解、重解、複素数解を判別して出力する。
入力する方程式は二次元一次方程式であると仮定されていることに注意してください。実際には、0で割らない、aが0であれば2次元一次方程式ではなく1次元一次方程式であるなど、入力の正当性を考慮する必要があります。また、浮動小数点数の精度と丸め誤差を処理する必要があることに注意してください。