会C++的大侠来帮忙看看~小弟新学C++两天,今天试着编个小程序~出现了错误,希望大侠帮忙看看~~

我前两天看那个《易学C++》,今天没事试着做,然后想做个关于二次函数,就是Y=AX^2+BX+C的。我的意思是,创建一个字符变量M,然后让别人输入“Y,X,A,B,C”其中一个字母的,然后就判断去求哪个,再通过表达式求出来,比如说别人输入字符Y,就是求Y,然后让别人再输入A,B,C,X,就能求出来Y的值。我试着执行了一下,求A,B,C,Y的值都行,而求X的值时候求出来的就不对,希望哪位大侠可以帮忙纠正一下错误,然后告诉我这样做的原因,小弟谢谢了!!!!以下是小弟写的:#include"iostream.h"#include"math.h"int main(){ char m; cin>>m; double a,b,c,x,y; if(m==✀y✀) { cin>>a>>b>>c>>x; y=a*x*x+b*x+c; cout<<y<<endl; } if(m==✀a✀) { cin>>b>>c>>x>>y; a=(y-b*x-c)/(x*x); cout<<a<<endl; } if(m==✀b✀) { cin>>a>>c>>x>>y; b=(y-a*x*x-c)/x; cout<<b<<endl; } if(m==✀c✀) { cin>>a>>b>>x>>y; c=y-a*x*x-b*x; cout<<c<<endl; } if(m==✀x✀) { int x2,temp; cin>>a>>b>>c>>y; temp=b*b-4*a*c; if(temp>=0) { sqrt(temp); x=(0-b-temp)/2*a; x2=(temp-b); cout<<x<<x2; } else { cout<<"Error!"; } } else { cout<<"Error!"; } return 0;}
2026年09月22日 23:18
有4个网友回答
网友(1):

1、求X那里Y没有参与计算:temp=b*b-4*a*c;改为temp=b*b-4*a*(c-y);
2、还有每次运行到最后(除了求X时temp大于等于零的情况)不论对不对都会出现“Error!”;这是因为每个else都会与与它最近的if语句配对,因此最后一个else与倒数第二个if配对;因而在求Y,A,B,时最后那条else语句都会执行。
3、(1)建议可以用else if语句,如:if(xxx){xxxxx}
else if(xxx) {xxxxx}
else if(xxx) {xxxxx}
else {xxx}
这样就避免了上述情况。
(2)建议为了使程序更具可读性可以加些帮助理解的输出语句,如:
你的程序中 char m; char m;
cin>>m; =》 cout<<"请输入所要求的字母";
double a,b,c,x,y; cin>>m;
double a,b,c,x,y;

4、当然这只是两个建议,方法还有很多种自己可以慢慢研究。

网友(2):

if(m=='x')
{
int x2,temp;
cin>>a>>b>>c>>y;
temp=b*b-4*a*c;
if(temp>=0)
{
sqrt(temp);
x=(0-b-temp)/2*a;
x2=(temp-b);
cout< }
else
{
cout<<"Error!";
}
}
这里输入的y没有参与计算。

网友(3):

if(m=='x')
{
int x2,temp;
cin>>a>>b>>c>>y;
temp=b*b-4*a*c;
if(temp>=0)
{
其中temp应该等于b*b-4*a*(c-y),y要移到方程同侧,不要漏了

网友(4):

程序没有错误,计算X的时候你赋值给y,y并没有参与计算,可能是你把y写错成某一字母导致运算结果和你自己运算的有差别。