请编写程序,解一元一次方程 ax2+bx+c=0 。已知一元二次方程的求根公式为: 要求:(1) 若 a=0,则为一元一次方程。 若 b=0,则方程有唯一解,输出这个解; 若 b=0,c=0,则方程无解,输出“无解”; 若 b=0,c=0,则方程有无穷多解,输出“无穷多解”。 (2) 若 a=0,则为一元二次方程。 若 Δ>0,则方程有两个不等的实根,输出这两个根; 若 Δ=0,则方程有两个相等的实根,输出这两个根; 若 Δ<0,则方程有两个共轭的虚根,输出这两个根。注:所有实数均输出6位有效数字,且不输出末尾无意义的0和小数点。
时间: 2023-04-04 14:02:56 浏览: 36
我可以回答这个问题。以下是解一元一次方程的程序:
#include <stdio.h>
#include <math.h>
int main()
{
double a, b, c, x;
printf("请输入一元一次方程的系数a, b, c:\n");
scanf("%lf%lf%lf", &a, &b, &c);
if (a == 0) {
if (b != 0) {
x = -c / b;
printf("方程有唯一解:x = %.6lf\n", x);
} else if (c != 0) {
printf("方程无解\n");
} else {
printf("方程有无穷多解\n");
}
} else {
double delta = b * b - 4 * a * c;
if (delta > 0) {
double x1 = (-b + sqrt(delta)) / (2 * a);
double x2 = (-b - sqrt(delta)) / (2 * a);
printf("方程有两个不等的实根:x1 = %.6lf, x2 = %.6lf\n", x1, x2);
} else if (delta == 0) {
x = -b / (2 * a);
printf("方程有两个相等的实根:x1 = x2 = %.6lf\n", x);
} else {
double realPart = -b / (2 * a);
double imagPart = sqrt(-delta) / (2 * a);
printf("方程有两个共轭的虚根:x1 = %.6lf + %.6lfi, x2 = %.6lf - %.6lfi\n", realPart, imagPart, realPart, imagPart);
}
}
return 0;
}
阅读全文