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不对应,不知道咋加花括号 请高手指点下。 展开
#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不对应,不知道咋加花括号 请高手指点下。 展开
3个回答
展开全部
每个配对的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);}}
}
#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);}}
}
展开全部
if
(b*b-4*a*c==0)
{
printf("该一元二次方程有一个实根");
x1=(float)(-b/(2*a));
printf("%f",x1);
}
else
加上{}试试
(b*b-4*a*c==0)
{
printf("该一元二次方程有一个实根");
x1=(float)(-b/(2*a));
printf("%f",x1);
}
else
加上{}试试
追问
嗯 你加的对着 当时试了好几处花括号位置 记得当时加花括号 加到了(b*b-4*a*c)的前面
另一个花括号位置和你一样 你为啥这样加
追答
if 语句如果不加{},只能控制其后的一条语句,其他的语句就和if没有关系了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
第二个if后面的三句用化花括号括起来
第二个else后面的四句用花括号括起来
第二个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);
}
}
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询