这条C语言计算一元二次方程的代码哪里不对

img

img

img


先感谢各位的指导,真的不会写,写了一个多小时也还是不对,人都傻了。


#include<stdio.h>
#include<math.h>
int main() {
    double a,b,c,d,x,r,m;
    double x1=0;
    double x2=0;
    scanf("%lf %lf %lf",&a,&b,&c);
    d=b*b-(4*a*c);
    printf("d=%.2lf\n",d);
    if(a==0&&b==0&&c==0){
        printf("Zero Equation");
    }else if(a==0&&b==0&&c!=0){
        printf("Not An Equation");
    }else if(d==0) {    //德尔塔d是为0时,只有一个实数根。 
        x=(-b)/(2*a);
        printf("%.2lf\n",x);
    } else if(d>0){
        x1=(-b+sqrt(d))/(2*a);
        x2=(-b-sqrt(d))/(2*a);
        if(x1>x2){
            printf("x1=%.2lf,x2=%.2lf",x1,x2);
        } else{
            printf("x1=%.2lf,x2=%.2lf",x2,x1);
        }
    }else{
      r=(-b)/(2*a);
      m=sqrt(-d)/(2*a);
      printf("%x1=.2lf+%.2lfi,x2=%.2lf-%.2lfi\n",r,m,r,m);
    }
    return 0;
}

祝你成功!

img

scanf的格式串中不要有空格,输入数据用空格间隔。
代码功能归根结底不是别人帮自己看或讲解或注释出来的;而是被自己静下心来花足够长的时间和精力亲自动手单步或设断点或对执行到某步获得的中间结果显示或写到日志文件中一步一步分析出来的。
提醒:再牛×的老师也无法代替学生自己领悟和上厕所!
单步调试和设断点调试(VS IDE中编译连接通过以后,按F10或F11键单步执行,按Shift+F11退出当前函数;在某行按F9设断点后按F5执行停在该断点处。)是程序员必须掌握的技能之一。

不知道你这个问题是否已经解决, 如果还没有解决的话:

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^