error C2181: illegal else without matching if

来源:百度知道 编辑:UC知道 时间:2024/06/14 07:49:49
麻烦告诉我要怎么改?...
#include <stdio.h>
#include <math.h>

void main()
{
double a=1,b=-5,c=6,d,x1,x2;
if(b*b-4*a*c>=0)
d= sqrt(b*b-4*a*c);
x1= (-b+d)/(2*a);
x2= (-b-d)/(2*a);
printf("x1=%.3f,x2=%.3f\n",x1,x2);
else
printf("error\n");
}

#include <stdio.h>
#include <math.h>

void main()
{
double a=1,b=-5,c=6,d,x1,x2;
if(b*b-4*a*c>=0)
{ //加括号
d= sqrt(b*b-4*a*c);
x1= (-b+d)/(2*a);
x2= (-b-d)/(2*a);
printf("x1=%.3f,x2=%.3f\n",x1,x2);
} //加括号
else
{ //加括号
printf("error\n");
} //加括号
}

if后面如果只是只执行一句可以不加括号,然后跟着写else;但是你后面执行多句话,那么编译器会将你的代码看作为:
if(b*b-4*a*c>=0)
{
d= sqrt(b*b-4*a*c);
}
x1= (-b+d)/(2*a);
x2= (-b-d)/(2*a);
else
...
那么else就没有相对应的if了,所以需要像修改的那样,将程序段用括号括起。

error C2181: illegal else without matching if的意思是错误:如果没有匹配的其他c2181非法。

例句
1
It is illegal to intercept radio messages.
拦截无线电报是非法的。
2
An Arkansas judge recently ordered J& J to pay$ 1.2 billion in penalties for illegal marketing practices.
最近阿肯色州的一位法官又要求强生支付12亿美元的罚金,理由是它涉嫌非法市场操