C语言错误改正问题:error C2181: illegal else without matching if

具体如下:#include<stdio.h>#include<math.h>main(){inta,b,c;printf("请输入方程系数a,b,c\n");scanf(... 具体如下:
#include<stdio.h>
#include<math.h>
main()
{int a,b,c;
printf("请输入方程系数a,b,c\n");
scanf("%d%d%d",&a,&b,&c);
if
(b*b-4*a*c<0)
printf("该一元二次方程有复根");

else
{float x1,x2;
if
(b*b-4*a*c==0)
printf("该一元二次方程有一个实根");
x1=(float)(-b/(2*a));
printf("%f",x1);
else
printf("该一元二次方程有两个不相等实根");
x1=(float)(-b+sqrt(b*b-4*a*c))/(2*a);
x2=(float)(-b-sqrt(b*b-4*a*c))/(2*a);
printf("%f%f",x1,x2);}
}

这个运行后有错误,错误类型我也百度了,if和else不对应,不知道咋加花括号 请高手指点下。
展开
 我来答
hell_mao
推荐于2016-03-09 · TA获得超过163个赞
知道小有建树答主
回答量:112
采纳率:0%
帮助的人:64.1万
展开全部
每个配对的if 和 else之间只允许有一条单语句或一条复合语句。所以加上{}就行了
#include<stdio.h>
#include<math.h>
main()
{int a,b,c;
printf("请输入方程系数a,b,c\n");
scanf("%d%d%d",&a,&b,&c);
if(b*b-4*a*c<0)
printf("该一元二次方程有复根");
else
{float x1,x2;
if(b*b-4*a*c==0) //该if下加了{}括号,形成一条复合语句
{printf("该一元二次方程有一个实根");
x1=(float)(-b/(2*a));
printf("%f",x1);}
else //该else下也加了{}号,形成一条复合语句
{printf("该一元二次方程有两个不相等实根");
x1=(float)(-b+sqrt(b*b-4*a*c))/(2*a);
x2=(float)(-b-sqrt(b*b-4*a*c))/(2*a);
printf("%f%f",x1,x2);}}
}
百度网友fd104b60d
2015-05-05 · TA获得超过330个赞
知道小有建树答主
回答量:293
采纳率:100%
帮助的人:131万
展开全部
if
(b*b-4*a*c==0)
{
printf("该一元二次方程有一个实根");
x1=(float)(-b/(2*a));
printf("%f",x1);
}
else
加上{}试试
追问
嗯   你加的对着   当时试了好几处花括号位置  记得当时加花括号 加到了(b*b-4*a*c)的前面
另一个花括号位置和你一样 你为啥这样加
追答
if 语句如果不加{},只能控制其后的一条语句,其他的语句就和if没有关系了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
zyz郑远征
2015-05-05 · TA获得超过1116个赞
知道小有建树答主
回答量:462
采纳率:100%
帮助的人:470万
展开全部
第二个if后面的三句用化花括号括起来
第二个else后面的四句用花括号括起来
更多追问追答
追问
嗯   你加的也对着 比另一位回答的多了花括号   不过也对  当时试了好几处花括号位置  这个我也试过  记得当时加前花括号 加到了(b*b-4*a*c)的前面
其它和你加的一样 这个为啥错了?
追答

哪里还错了,我这运行对了啊,下面是我改的代码, 你看看

#include<stdio.h>
#include<math.h>
main()
{
int a,b,c;
printf("请输入方程系数a,b,c\n");
scanf("%d%d%d",&a,&b,&c);
if(b*b-4*a*c<0)
printf("该一元二次方程有复根");

else 
{
float x1,x2;
if(b*b-4*a*c==0)
{
printf("该一元二次方程有一个实根:\n");
x1=(float)(-b/(2*a));
printf("%f\n",x1);
}
else
{
printf("该一元二次方程有两个不相等实根:\n");
    x1=(float)(-b+sqrt(b*b-4*a*c))/(2*a);
    x2=(float)(-b-sqrt(b*b-4*a*c))/(2*a);
    printf("x1 = %f, x2 = %f\n",x1,x2);
}
}
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式