请编写程序,解一元一次方程 ax 2 +bx+c=0 。 已知一元二次方程的求根公式为: 题图.jpg 要求: (1) 若 a=0,则为一元一次方程。 若 b =0,则方程有唯一解,输出这个解; 若 b=0,c =0,则方程无解,输出“无解”; 若 b=0,c=0,则方程有无穷多解,输出“无穷多解”。 (2) 若 a =0,则为一元二次方程。 若 Δ>0,则方程有两个不等的实根,输出这两个根; 若 Δ=0,则方程有两个相等的实根,输出这两个根; 若 Δ<0,则方程有两个共轭的虚根,输出这两个根。
时间: 2024-03-14 11:48:27 浏览: 222
好的,这是一个解一元一次方程或一元二次方程的程序,可以使用C语言实现,以下是示例代码:
```c
#include <stdio.h>
#include <math.h>
int main() {
double a, b, c, delta, x1, x2;
// 读入输入的数据
printf("Please input a, b, c: ");
scanf("%lf %lf %lf", &a, &b, &c);
// 判断是否为一元一次方程
if (a == 0) {
if (b == 0) {
if (c == 0) {
printf("Infinite solutions.\n"); // 无穷多解
} else {
printf("No solution.\n"); // 无解
}
} else {
printf("x = %lf\n", -c / b); // 一元一次方程的唯一解
}
} else { // 一元二次方程
delta = b * b - 4 * a * c;
if (delta > 0) {
x1 = (-b + sqrt(delta)) / (2 * a);
x2 = (-b - sqrt(delta)) / (2 * a);
printf("x1 = %lf, x2 = %lf\n", x1, x2); // 两个不等的实根
} else if (delta == 0) {
x1 = x2 = -b / (2 * a);
printf("x1 = x2 = %lf\n", x1); // 两个相等的实根
} else {
double realPart = -b / (2 * a);
double imagPart = sqrt(-delta) / (2 * a);
printf("x1 = %lf + %lfi, x2 = %lf - %lfi\n", realPart, imagPart, realPart, imagPart); // 两个共轭的虚根
}
}
return 0;
}
```
该程序首先读入输入的数据,然后根据判断是否为一元一次方程。若为一元一次方程,判断是否有唯一解、无解、无穷多解。若为一元二次方程,根据判别式的值判断有两个不等的实根、两个相等的实根、两个共轭的虚根。最后输出结果。
阅读全文