酷代码 AI
菜单
服务商
DeepSeek字节豆包讯飞星火
更多选项

C语言实现:精准求解一元二次方程根并处理特殊输出情况

要解决这个问题,我们需要使用C语言编写一个程序来计算一元二次方程 \( ax^2 + bx + c = 0 \) 的根,并根据不同的情况输出相应的结果。以下是一个完整的C语言程序实现: ```c #include <stdio.h> #include <math.h> int main() { double a, b, c; double delta, root1, root2, realPart, imaginaryPart; // 读取输入 scanf("%lf %lf %lf", &a, &b, &c); // 特殊情况处理 if (a == 0 && b == 0 && c == 0) { printf("zero equation\n"); return 0; } if (a == 0 && b == 0) { printf("not an equation\n"); return 0; } // 计算判别式 delta = b * b - 4 * a * c; // 根据判别式的值判断根的情况 if (delta > 0) { // 两个不相等的实数根 root1 = (-b + sqrt(delta)) / (2 * a); root2 = (-b - sqrt(delta)) / (2 * a); // 输出时先大后小 if (root1 > root2) { printf("%.2f\n%.2f\n", root1, root2); } else { printf("%.2f\n%.2f\n", root2, root1); } } else if (delta == 0) { // 一个实数根 root1 = -b / (2 * a); printf("%.2f\n", root1); } else { // 两个不相等的复数根 realPart = -b / (2 * a); imaginaryPart = sqrt(-delta) / (2 * a); printf("%.2f+%.2fi\n%.2f-%.2fi\n", realPart, imaginaryPart, realPart, imaginaryPart); } return 0; } ``` 代码解释 1. 输入读取: - 使用 `scanf` 函数读取三个浮点数 `a`, `b`, `c`。 2. 特殊情况处理: - 如果 `a`, `b`, `c` 都为0,输出 "zero equation"。 - 如果 `a` 和 `b` 都为0,但 `c` 不为0,输出 "not an equation"。 3. 计算判别式: - 计算判别式 `delta = b * b - 4 * a * c`。 4. 根的判断与输出: - 如果 `delta > 0`,表示有两个不相等的实数根,计算并输出这两个根,先输出较大的根。 - 如果 `delta == 0`,表示有一个实数根,计算并输出这个根。 - 如果 `delta < 0`,表示有两个不相等的复数根,计算并输出这两个根,先输出虚部为正的根。 5. 输出格式: - 使用 `%.2f` 格式化输出,保留两位小数。 通过以上步骤,我们可以正确地处理各种情况并输出正确的结果。 ######[AI写代码神器 | 725点数解答 | 2024-10-27 23:34:19]

相关提问
本站限时免费提问中
实用工具查看更多
Linux在线手册 [开发类]
Jquery在线手册 [开发类]
今日油价 [生活类]
图片互转base64 [开发类]
时间转换器 [开发类]