这是书上的一个问题,按它说的去做好像没发现毛病

书上问不要else那里的花括号会这么样,我试了之后没发现有不对,是不是哪里弄错了?
#include
#include
int main()
{
double a,b,c,disc,x1,x2,p,q;
scanf("%lf,%lf,%lf",&a,&b,&c);
disc=bb-4ac;
if(disc<0)
printf("This equatin hasn't real roots\n");
else
{p=-b/(2.0
a);
q=sqrt(disc)/(2.0*a);
x1=q+p;x2=p-q;
printf("real roots:\nx1=%7.2f\nx2=%7.2f",x1,x2);
}
return 0;
}

img

如果不要else的花括号,那么属于else 的语句就只有 p=-b/(2.0a); 这一句了,另外三句就和if else语句没关系了,不管是执行if分支还是else分支,另外三个语句都会被执行。

没发现有不对那你就多输入几组数据试试
你输入之前好歹先知道正确的输出是什么
不要你随便输入两个数,然后看到程序有输出,就认为正常,程序必须有个正确的输出啊

如果不加else的花括号,意味着else分支只有一条语句 p=-b/(2.0*a)。那么,当disc<0时,执行if语句内的代码,执行完成后,继续执行 "q=sqrt..."这些代码,因为此时,这些代码已经不在else分支内了。