在c语言学习中遇到的问题

下面是一行一元二次方程的代码

void N1()
{
    double  x1, x2, a, b, c, t;
    cout << "please 分别依次 inter 一元二次方程各个项前的系数,并且用空格键开。\n #比如3X^2+1=0就输入3 0 1\n" ;
    cin >> a >> b >> c;
    t = b * b - 4 * a * c;
    if (t > 0)
    {
        x1 = (-b + sqrt(t)) / (2 * a);
        x2 = (-b - sqrt(t)) / (2 * a);
        cout << "该方程有两个解x1=" << x1 <<" " << "x2=" << x2;
    }

    else if ( t == 0 )           

//就是这里  我把()里面的内容改成了(t)  输入1 2 1 得出来的结果是“该方程无实数根”
    {
        x1 = (-b + sqrt(t)) /(2 * a);
        cout << "该方程有两个相同的实数解,x1 = x2 =" << x1;
    }
    else cout << "该方程无实数解";

不知道现在怎么解决

  —————————————————————————————————————

2022.3.18 更新:

本人又回去翻找了一下基本数据类型的知识  注意到了各个数据类型的精度的不同  可能在这个程序里面 t在运算后的取值并不是等于0,在后面可能会携带一些很小的小数,导致程序在判断选择负数的情况 。下课我就试下 。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

亚里士多没有德775

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

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

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

打赏作者

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

抵扣说明:

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

余额充值