求一元二次方程的根 c语言

99ANYc3cd6
预计阅读时长 8 分钟
位置: 首页 C语言 正文

C语言求解一元二次方程的根

以下是一个用C语言编写的一元二次方程求根程序,可以处理实数和复数根的情况:

求一元二次方程的根 c语言
(图片来源网络,侵删)
#include <stdio.h>
#include <math.h>
int main() {
    double a, b, c;
    double discriminant, realPart, imagPart;
    // 输入方程系数
    printf("请输入一元二次方程的系数 a, b, c: ");
    scanf("%lf %lf %lf", &a, &b, &c);
    // 计算判别式
    discriminant = b * b - 4 * a * c;
    // 处理a=0的情况(退化为一次方程)
    if (a == 0) {
        if (b == 0) {
            if (c == 0) {
                printf("方程有无穷多解,\n");
            } else {
                printf("方程无解,\n");
            }
        } else {
            printf("方程的解为: x = %.2lf\n", -c / b);
        }
        return 0;
    }
    // 处理判别式大于0的情况(两个不同的实数根)
    if (discriminant > 0) {
        double root1 = (-b + sqrt(discriminant)) / (2 * a);
        double root2 = (-b - sqrt(discriminant)) / (2 * a);
        printf("方程有两个不同的实数根:\n");
        printf("x1 = %.2lf\n", root1);
        printf("x2 = %.2lf\n", root2);
    }
    // 处理判别式等于0的情况(两个相同的实数根)
    else if (discriminant == 0) {
        double root = -b / (2 * a);
        printf("方程有两个相同的实数根:\n");
        printf("x1 = x2 = %.2lf\n", root);
    }
    // 处理判别式小于0的情况(两个共轭复数根)
    else {
        realPart = -b / (2 * a);
        imagPart = sqrt(-discriminant) / (2 * a);
        printf("方程有两个共轭复数根:\n");
        printf("x1 = %.2lf + %.2lfi\n", realPart, imagPart);
        printf("x2 = %.2lf - %.2lfi\n", realPart, imagPart);
    }
    return 0;
}

程序说明

  1. 输入处理:程序首先要求用户输入一元二次方程的系数a、b、c。

  2. 特殊情况处理

    • 当a=0时,方程退化为一次方程或常数方程
    • 当b=0且c=0时,方程有无穷多解
    • 当b=0且c≠0时,方程无解
    • 当a≠0且b≠0时,方程为一次方程,解为x=-c/b
  3. 判别式计算:计算判别式Δ = b² - 4ac

  4. 根的情况处理

    求一元二次方程的根 c语言
    (图片来源网络,侵删)
    • Δ > 0:两个不同的实数根
    • Δ = 0:两个相同的实数根
    • Δ < 0:两个共轭复数根
  5. 输出结果:根据不同情况输出相应的根

示例运行

示例1(两个实数根)

请输入一元二次方程的系数 a, b, c: 1 -3 2
方程有两个不同的实数根:
x1 = 2.00
x2 = 1.00

示例2(复数根)

请输入一元二次方程的系数 a, b, c: 1 2 5
方程有两个共轭复数根:
x1 = -1.00 + 2.00i
x2 = -1.00 - 2.00i

示例3(一次方程)

求一元二次方程的根 c语言
(图片来源网络,侵删)
请输入一元二次方程的系数 a, b, c: 0 2 4
方程的解为: x = -2.00

注意:此程序需要链接数学库(在编译时可能需要添加-lm选项)。

-- 展开阅读全文 --
头像
织梦发布模块总是掉线
« 上一篇 03-18
C语言如何精确求解一元二次方程的根?
下一篇 » 03-18

相关文章

取消
微信二维码
支付宝二维码

目录[+]