C语言:求解一元二次方程(含虚根处理)

这篇文章展示了一个用C语言编写的程序,用于求解一元二次方程,并修复了原程序在计算虚根时存在的错误。

以下是修正后的代码:

#include <stdio.h>
#include <math.h>

int main(){
    float a, b, c, x1, x2, d, t;
    scanf('%f %f %f', &a, &b, &c);
    d = b * b - 4 * a * c;
    
    if (d > 0) {
        x1 = (-b + sqrt(d)) / (2 * a);
        x2 = (-b - sqrt(d)) / (2 * a);
        printf('x1=%.5f x2=%.5f', x1, x2); 
    }
    else if (d == 0) {
        x1 = -b / (2 * a);
        printf('x1=x2=%.5f', x1);
    }
    else {
        x1 = -b / (2 * a);
        t = sqrt(-d)/(2*a);
        printf('x1=%.5f+%.5fi x2=%.5f-%.5fi', x1, t, x1, t);
    }
    
    return 0;
}

代码解释:

  1. 包含头文件: stdio.h 用于输入输出操作,math.h 用于数学函数,例如 sqrt() 用于计算平方根。
  2. 定义变量: a、b、c 分别存储一元二次方程的系数,x1、x2 存储方程的根,d 存储判别式,t 存储虚根的虚部。
  3. 获取输入: 使用 scanf() 函数获取用户输入的三个系数。
  4. 计算判别式: d = b * b - 4 * a * c 计算判别式的值。
  5. 判断根的情况:
    • 如果 d > 0,方程有两个不相等的实根,使用求根公式计算并输出。
    • 如果 d == 0,方程有两个相等的实根,使用求根公式计算并输出。
    • 如果 d < 0,方程有两个共轭复根,计算实部和虚部并输出。
  6. 输出结果: 使用 printf() 函数输出计算得到的根。

注意:

  • 在计算虚根时,我们只需要输出其中一个虚根的实部和虚部,因为另一个虚根与其共轭。
  • 代码中使用 %.5f 控制输出结果保留五位小数。

希望这段代码和解释能够帮助你理解如何用 C 语言求解一元二次方程,并处理虚根的情况。

C语言:求解一元二次方程(含虚根处理)

原文地址: http://www.cveoy.top/t/topic/oAa 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录