C++为什么总是提示没有if匹配的非法else

#include<stdio.h>
#include<math.h>
int main()
{
double a,b,c,d,e,x,x1,x2;
printf("请输入a,b,c");
scanf("%d,%d,%d",&a,&b,&c);
if (a==0);
{
printf("这不是一元二次方程\n");
}
else
{
d=b*b-4*a*c;
if (d<0);
{
printf("该一元二次方程无实数解\n");
}
else if (d==0);
{
x=b/(-2*a);
printf("该方程有两个相等实根x=%d\n",x);
}
else
{
e=sqrt(d);
x1=(-b+e)/2*a;
x2=(-b-e)/2*a;
printf("该方程的两根分别为\n");
printf("x1=%d\n",x1);
printf("x2=%d\n",x2);
}
}
return 0;
}

Compiling...
sdy7.cpp
D:\c语言作业\sdy7.cpp(9) : warning C4390: ';' : empty controlled statement found; is this the intent?
D:\c语言作业\sdy7.cpp(12) : error C2181: illegal else without matching if
D:\c语言作业\sdy7.cpp(16) : warning C4390: ';' : empty controlled statement found; is this the intent?
D:\c语言作业\sdy7.cpp(19) : error C2181: illegal else without matching if
D:\c语言作业\sdy7.cpp(20) : warning C4390: ';' : empty controlled statement found; is this the intent?
D:\c语言作业\sdy7.cpp(24) : error C2181: illegal else without matching if
Error executing cl.exe.

sdy7.obj - 3 error(s), 3 warning(s)

if和else没有正确配对,导致这样的错误。还有第二个if else 后面的分号应该去掉,不然就会逻辑错误。
温馨提示:内容为网友见解,仅供参考
第1个回答  2019-03-24
第二个else没有if吐,应该是if {} if else{} 希望能够帮助到你。

C++为什么总是提示没有if匹配的非法else
if和else没有正确配对,导致这样的错误。还有第二个if else 后面的分号应该去掉,不然就会逻辑错误。

C++为什么总是提示没有if匹配的非法else
在每个else if 后面的语句需要用花括号{ }括起来,不然系统认为就是没有对应的if语句了。如果if语句后面只有一条语句,花括号是可以省略。如果不止一条,就必须用括号括起来。用法如下:if(){ } else if(){ ...}

C++:没有匹配 if 的非法 else,语法错误 求解答!
小问题是else if(p==\/) m=3; 是分号不是冒号。这个和错误没什么关系。真正错误是char p。你p定义类型是字符类型,那么就要p=='+',p=='-',p=='*',p=='\/'。这个才是错误点。

我的c语言怎么总出错,下面提示 没有匹配 if 的非法 else 谢谢诶
if (d<0);这里的分号是多余的,导致错误

关于c++的if语句嵌套的if与else非法配对问题
第一你的书写不规范。书写规范很重要,规范的书写可以避免括号的问题。int main (){ int x,a,b,c,d,e,f;if( 0 != x\/10000 ){ cout<<"五位数";f = 1;} else { if( 0 != x\/10000 ){ cout<<"五位数";} f = 1; \/\/错误!!!else {\/\/...} } } 规范书写你的代码就是...

error C2181: 没有匹配 if 的非法 else C语言编程问题!!
但是我建议还是要加上{} 这样就会避免出现error C2181这样的错误 你这个错误是在第一个else if时出现的 因为你的代码有两句 而你没有加上{}导致了编译器认为continue语句是不属于else if语句块的 scanf函数我用vc6测试了下没有问题 头文件已经正确包含了 include<stdio.h> int main(){ float n=...

提示没有匹配 if 的非法 else
if (d<0);这里的分号是多余的,导致错误

为什么在编译时会出现没有匹配 if 的非法 else。
号,去掉就可以了 include "StdAfx.h"include<iostream> using namespace std;int main(){ int a;cout<<"key a number:\\n";cin>>a;if((a%4==0&&a%100!=0)||(a%400==0))cout<<a<<"这年是闰年\\n";else cout<<a<<"这年不是闰年\\n";return 0;} 用这个再试试 ...

C语言程序没有匹配if的非法else
if那一行后面多了个分号;

这个程序为什么说没有匹配if的非法else, 应输入一个语句
if (b != 0);后面的分号删掉

相似回答