C语言_【学习笔记】二元一次方程的虚根

关键  Δ < 0时函数无根但有两个共轭复根。

//task 1
#include<stdio.h>
#include<math.h>
int main()
{
    float a,b,c,d,n1,n2,i1,i2;
    scanf("%f %f %f", &a,&b,&c);
    d = b * b - 4 * a * c;
    if (d < 0)
    {
        d = sqrt(4 * a * c - b * b);
        n2 = (-b) / (2*a);
        n1 = n2;
        i1 = d / (2 * a);
        i2 = i1;
        printf("%.2f+%.2fi %.2f-%.2fi",n1,i1,n2,i2);
    }
    else if (d == 0) 
    {
        n2 = (-b + sqrt(d)) / (2 * a);
        n1 = n2;
        printf("%.2f %.2f", n1, n2);
    }
    else
    {
        n1 = (-b + sqrt(d)) / (2 * a);
        n2 = (-b - sqrt(d)) / (2 * a);
        printf("%.2f %.2f", n1, n2);
    }
    return 0;
}

使用函数调用:

//task 2
#include<stdio.h>
#include<math.h>
void shigen(float a, float b, float q)
{
    float x1, x2;
    x1 = (-b + sqrt(q)) / (2 * a);
    x2 = (-b - sqrt(q)) / (2 * a);
    return printf("x1=%.3f x2=%.3f",x1,x2);
}
void denggen(float a, float b)
{
    float x1, x2;
    x1 = x2 = (-b) / (2 * a);
    return printf("x1=%.3f x2=%.3f",x1,x2);
}
void xugen(float a, float b, float q)
{
    q = fabs(q);
    float x1, x2,i1,i2, d;
    d = sqrt(q);
    x2 = (-b) / (2 * a);
    x1 = x2;
    i2 = d / (2 * a);
    i1 = i2;
    return printf("x1=%.3f+%.3fi x2=%.3f-%.3fi",x1,i1,x2,i2);
}
int main()
{
    float a, b, c, q;
    void shigen(float, float, float);
    void denggen(float, float);
    void xugen(float, float, float);
    scanf("%f%f%f", &a, &b, &c);
    q= b*b - 4*a*c;
    if (q > 0) shigen(a, b, q);
    else if (q == 0) denggen(a, b);
    else xugen(a, b, q);
    return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

麻花与千层饼

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值