把你后面的if都改为else if
最后一个if改为else
#include
#include
void main()
{
double a,b,c,dise,x1,x2,p,q;
printf("请输入a,b,c:");
scanf("%lf %lf %lf",&a,&b,&c);
//dise=b*b-4*a*c;
if(a == 0)
{
if(b == 0)
printf("这不是方程");
if(c == 0 && b != 0)
printf("方程的解为:x=0");
if(c != 0 && b != 0)
printf("方程的解为:x=%5.2f",-c/b);
}
else if(dise=b*b-4*a*c>0)
{
p=-b/(2*a);
q=sqrt(dise)/(2*a);
x1=p+q;x2=p-q;
printf("方程有存在2个不同的解\nx1=%5.2f\nx2=%5.2f\n",x1,x2);
}
else if((dise=b*b-4*a*c)==0 )
{
p=-b/(2*a);
printf("方程有存在2个相同的解x1=x2=%5.2f\n",p);
}
else if(dise=b*b-4*a*c<0)
{
printf("方程不存在解");
}
}
====================
把if改成else if就行了,将这些条件语句放在同一层次,满足任意一个,就跳出该层次的判断
#include
#include
int main()
{
double a,b,c,dise,x1,x2,p,q;
printf("请输入a,b,c\n");
scanf("%lf%lf%lf",&a,&b,&c);
dise=b*b-4*a*c;
if(a==0&&b&&c)
{
printf("方程的解为x1=%lf\n",-b/c);
}
else if(a==0&&b==0)
printf("这不是方程\n");
if(dise&&a)
{
p=-b/(2*a);
q=sqrt(dise)/(2*a);
x1=p+q;
x2=p-q;
if(dise>0)
printf("方程有存在2个不同的解x1=%.2lf\nx2=%.2lf\n",x1,x2);
else if(dise==0 )
printf("方程有存在2个相同的解x1=x2=%5.2f\n",x1);
else
printf("方程不存在解\n");
}
return 0;
}
简化了一下。。。。
#include "stdafx.h"
#include "math.h"
int main(int argc, char* argv[])
{
float a,b,c;
scanf("a=%f b=%f c=%f",&a,&b,&c);
float disc;
disc=b*b-4*a*c;
if(disc>0)
{
printf("x1=%f\n",(-b+sqrt(disc))/(2*a));
printf("x2=%f\n",(-b-sqrt(disc))/(2*a));
}
if(disc==0)
{
printf("x=%f\n",-b/(2*a));
}
if(disc<0)
{
printf("方程式没有实根。\n");
}
return 0;
}