csdn_xjm 2023-03-05 06:33 采纳率: 87.5%
浏览 24
已结题

一元二次方程求根结果不对

为什么结果不对啊

img

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

int main()
{
    double a, b ,c,disc,x1,x2,realpart,imagpart;
    scanf("%lf %lf lf%",&a,&b,&c);
    printf("the equation ");
    if(fabs(a)<=1e-6)
    {
        printf("is not a quadratic!\n");
        printf("x1 = x2 = %lf",-(c/b));
    }
    else
    {
        disc = b*b-4*a*c;
        if(fabs(disc)<=1e-6)
        {
            printf("has two equal roots:%lf\n",-b/(2*a));
        }
        else
        {
            if(disc>1e-6)
            {
                x1 = (-b+sqrt(disc))/2*a;
                x2 = (-b-sqrt(disc))/2*a;
                printf("has two real roots :%lf and %lf \n",x1,x2);
            }
            else
            {
                realpart = -b/(2*a);
                imagpart = sqrt(-disc)/(2*a);
                printf("has complex roots :\n");
                printf("%lf + %lfi\n",realpart,imagpart);
                printf("%lf - %lfi\n",realpart,imagpart);
            }
        }
    }
    return 0;
}

展开全部

  • 写回答

2条回答 默认 最新

  • 快乐鹦鹉 2023-03-05 06:57
    关注

    第7行最后一个%lf,写反了

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
    csdn_xjm 2023-03-05 07:02

    还有别的错误吗?这个改过来也还是不对

    回复
    快乐鹦鹉 回复 csdn_xjm 2023-03-05 08:53

    怎么不对了???

    回复
    快乐鹦鹉 回复 csdn_xjm 2023-03-05 08:54

    x1 = (-b+sqrt(disc))/2 * a;
    改为
    x1 = (-b+sqrt(disc))/(2 * a);
    x2也一样修改

    回复
    展开全部4条评论
查看更多回答(1条)
编辑
预览

报告相同问题?

问题事件

  • 系统已结题 3月13日
  • 已采纳回答 3月6日
  • 创建了问题 3月5日
手机看
程序员都在用的中文IT技术交流社区

程序员都在用的中文IT技术交流社区

专业的中文 IT 技术社区,与千万技术人共成长

专业的中文 IT 技术社区,与千万技术人共成长

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

客服 返回
顶部