c语言写求一元二次方程解
时间: 2025-05-30 08:15:55 浏览: 25
### C语言实现求解一元二次方程
在C语言中,可以通过编写函数来解决一元二次方程 \( ax^2 + bx + c = 0 \),其中 \( a, b, c \) 是已知常数。为了处理多种情况(实根、虚根),可以利用判别式 \( D = b^2 - 4ac \)[^1] 来判断根的性质。
以下是完整的C语言程序示例:
```c
#include <stdio.h>
#include <math.h>
int main() {
double a, b, c;
double discriminant; // 判别式
double root1, root2, realPart, imaginaryPart;
while (1) { // 循环让用户多次输入系数
printf("请输入一元二次方程的三个系数(a,b,c), 输入q退出:\n");
if (scanf("%lf%lf%lf", &a, &b, &c) != 3) break;
if (a == 0) {
printf("这不是一个有效的一元二次方程。\n");
continue;
}
discriminant = b * b - 4 * a * c;
if (discriminant > 0) {
// 实根且不相等的情况
root1 = (-b + sqrt(discriminant)) / (2 * a);
root2 = (-b - sqrt(discriminant)) / (2 * a);
printf("方程有两个实根: %.2f 和 %.2f\n", root1, root2);
} else if (discriminant == 0) {
// 实根且相等的情况
root1 = -b / (2 * a);
printf("方程有一个重根: %.2f\n", root1);
} else {
// 虚根的情况
realPart = -b / (2 * a);
imaginaryPart = sqrt(-discriminant) / (2 * a);
printf("方程有两组共轭复数根: %.2f+%.2fi 和 %.2f-%.2fi\n",
realPart, imaginaryPart, realPart, imaginaryPart);
}
}
return 0;
}
```
上述代码通过循环不断接收用户的输入并计算结果[^1]。如果用户希望停止运行程序,则可以在提示符下输入非数值字符终止程序执行。
#### 关键点解析
- **判别式的应用**:根据 \( D = b^2 - 4ac \) 的值决定根的形式。
- **特殊情况处理**:当 \( a=0 \) 时,需提醒用户这并非标准形式的一元二次方程。
- **多轮交互支持**:允许用户连续测试多个不同的系数组合而无需重新启动程序。
阅读全文
相关推荐















