没有匹配IF的非法ELSE,求解答,在线等。

求一元二次方程是否有解、若有接输出解。
#include <stdio.h>
#include <math.h>
int main()
{
double a,b,c,p,x1,x2;
scanf("%lf%lf%lf",&a,&b,&c);
p=sqrt(b*b-4*a*c);
if (p>=0)
{if (p=0)
x1=x2=((-b)/2)/a;
printf("x1=%lf,x2=%lf\n",x1,x2);
else x1=((-b+p)/2)/a;x2=((-b-p)/2)/a;
printf("x1=%lf,x2=%lf\n",x1,x2);
}
else printf("方程无解");
return 0;
}
我把程序修改成这样就没有问题了。但是我还是想知道我第一个程序不匹配问题到底出现在哪里。求高手,求解答。
#include <stdio.h>
#include <math.h>
int main()
{
double a,b,c,p;
scanf("%lf%lf%lf",&a,&b,&c);
p=sqrt(b*b-4*a*c);
if (p<0) printf("方程无实根");

else if (p>0)

printf("x1=%lf,x2=%lf\n",((-b+p)/2)/a,((-b-p)/2)/a);

else printf("x1=%lf,x2=%lf\n",((-b)/2)/a,((-b)/2)/a);
return 0;
}
主要是把x1,x2去掉输出表列直接换成表达式了。跟调整if else无关,我刚开始从语句1嵌套调整成语句2嵌套而没有换掉x1,x2时还是说匹配不合法。

第一个程序中语句1中嵌套的嵌套的if..else下面有多个语句,需要用括号括起来。修改如下:
#include <stdio.h>
#include <math.h>
int main()
{
double a,b,c,p,x1,x2;
scanf("%lf%lf%lf",&a,&b,&c);
p=sqrt(b*b-4*a*c);
if (p>=0)
{if (p=0)
{x1=x2=((-b)/2)/a;
printf("x1=%lf,x2=%lf\n",x1,x2);}
else {x1=((-b+p)/2)/a;x2=((-b-p)/2)/a;
printf("x1=%lf,x2=%lf\n",x1,x2);}
}
else printf("方程无解");
return 0;
}
温馨提示:内容为网友见解,仅供参考
无其他回答

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

c语言中 语法错误 类型,没有匹配if的非法else 求C语言大神指点迷津...
if(int(b)==b)改为:if((int)b==b)

没有匹配 if 的非法 else 下面有我的编程,在线等人解答,新手求助!
else if (x < 0,y > 0){c = 180 - b;printf("the angle is %.3lf",angle);} else if (x < 0,y < 0){c = 270 - b;printf("the angle is %.3lf",angle);} else {c = 360 - b;printf("the angle is %.3lf",angle);} return 0;} ...

C语音 用F7编译后 一直有错误:没有匹配 if 的非法 else
你的if ( a == b );后面多了一个分号;它把if语句给结束了,导致后面的else没有匹配到相应的if条件。这种错误是教科书级的,刚学习c语言的时候老师就举过这样的例子。

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

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

c语言没有匹配 if 的非法 else
void add(float a,float b){float c;int xz;c = a + b;printf("第一个数%f和第二个数%f的和是%f\\n", a, b, c);printf("是否返回?[1.返回\/2.退出]");scanf(" %d",&xz);if (xz == 1)\/\/这里的分号去掉{main();\/\/对main的调用是允许的 不过一般不建议这样做}else if (...

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

C语言编程没有匹配 if 的非法 else
include <stdio.h> include <math.h> int main(void){ int a=0;printf("请输入年龄\\n");scanf("%d",&a);getchar();if(a>18&&a<30);{ printf("合格");} if(a<18&&a>30);\/\/这多了个分号 { printf("不合格");}else { printf("123");} getchar();return 0;} ...

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

相似回答