没有匹配IF的非法ELSE,求解答,在线等。
求一元二次方程是否有解、若有接输出解。#include<stdio.h>#include<math.h>intmain(){doublea,b,c,p,x1,x2;sca...
求一元二次方程是否有解、若有接输出解。
#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时还是说匹配不合法。 展开
#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个回答
展开全部
第一个程序中语句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;
}
#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;
}
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询