#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;
}
祝你成功!
scanf的格式串中不要有空格,输入数据用空格间隔。
代码功能归根结底不是别人帮自己看或讲解或注释出来的;而是被自己静下心来花足够长的时间和精力亲自动手单步或设断点或对执行到某步获得的中间结果显示或写到日志文件中一步一步分析出来的。
提醒:再牛×的老师也无法代替学生自己领悟和上厕所!
单步调试和设断点调试(VS IDE中编译连接通过以后,按F10或F11键单步执行,按Shift+F11退出当前函数;在某行按F9设断点后按F5执行停在该断点处。)是程序员必须掌握的技能之一。
例如 你定义
#define mul(a,b) a*b
就像下面输出结果是41而不是66
int main()
{
int a=5,b=6;
int c=mul(a+b,b);
printf("%d\n",c);
}
mul(a+b,b)并不是按(a+b)*b 而是 a+b*b输出结果 并没有运算规则 他是完整的把a+b 传递给了a 其实说成没有运算规则不严谨 只是没有按照我们给他的设想去计算,它比较死,一股脑传递过去 自然成了a+b*b
#define mul(a,b) (a)*(b)
结果自然是66