C++编程:什么地方有错?麻烦解释一下。
- 提问者网友:遮云壑
- 2021-04-23 21:54
# include <math.h>
void main ()
{double a,b,c,disc,x1,x2,p,q;
printf("please enter a,b,c:");
scanf("a=%1f,b=%1f,c=%1f",&a,&b,&c);
if (a==0)
printf("不是一元二次方程");
else
{
disc=b*b-4*a*c;
if(disc<0)
printf("无实根");
else
{
p=-b/(2*a);
q=sqrt(disc)/(2*a);
x1=p+q;
x2=p-q;
if(disc==0)
x1=x2;
printf("x1==x2=%5.2f\n",x1==x2);
else
printf("x1=%5.2f\nx2=%5.2f\n",x1,x2);}
}
}
}
}
- 五星知识达人网友:妄饮晩冬酒
- 2021-04-23 23:08
以下程序通过测试.
# include <stdio.h>
# include <math.h>
void main ()
{
double a,b,c,disc,x1,x2,p,q;
printf("please enter a,b,c:");
scanf("a=%1f,b=%1f,c=%1f",&a,&b,&c);
if (a==0)
printf("不是一元二次方程");
else
{
disc=b*b-4*a*c;
if(disc<0)
printf("无实根");
else
{
p=-b/(2*a);
q=sqrt(disc)/(2*a);
x1=p+q;
x2=p-q;
if(disc==0)
{
x1=x2;
printf("x1==x2=%5.2f\n",x1==x2);
} //if语句执行的语句块应该用花括号包括起来.
else
printf("x1=%5.2f\nx2=%5.2f\n",x1,x2);
}
}
}
//}}//多了两个右花括号.
- 1楼网友:洒脱疯子
- 2021-04-24 00:35
那我说 你们既然是在C++环境做的,为什么不用cin、cout呢???包含一个输入输出流就okay了,看得人眼花。。。
- 2楼网友:妄饮晩冬酒
- 2021-04-23 23:53
写程序要采用缩进式编写,这样在嵌套的时候就不会搞乱。你的程序多了2个 },应删去。把程序改一下,如下:
# include <stdio.h> # include <math.h> void main () {
double a,b,c,disc,x1,x2,p,q; printf("please enter a,b,c:"); scanf("a=%1f,b=%1f,c=%1f",&a,&b,&c); if (a==0) printf("不是一元二次方程"); else { disc=b*b-4*a*c;
if(disc<0) printf("无实根"); else { p=-b/(2*a); q=sqrt(disc)/(2*a); x1=p+q; x2=p-q;
if(disc==0) x1=x2; printf("x1==x2=%5.2f\n",x1==x2);
else printf("x1=%5.2f\nx2=%5.2f\n",x1,x2);
}
}
}
- 3楼网友:duile
- 2021-04-23 23:35
#include <stdio.h> #include <math.h> void main () { double a,b,c,disc,x1,x2,p,q; printf("please enter a,b,c:"); scanf("a=%1f,b=%1f,c=%1f",&a,&b,&c); if (a==0) printf("不是一元二次方程"); else { disc=b*b-4*a*c; if(disc<0) printf("无实根"); else if(disc>0) { p=-b/(2*a); q=sqrt(disc)/(2*a); x1=p+q; x2=p-q; printf("x1=%5.2f\nx2=%5.2f\n",x1,x2); } else if(disc==0) { x1=x2; printf("x1==x2=%5.2f\n",x1==x2); } }
你的条件没匹配好。上面是我做的 可以通过