永发信息网

简单的C++程序在线判断。。一元二次方程。。

答案:2  悬赏:70  手机版
解决时间 2021-05-10 18:07
  • 提问者网友:疯子也有疯子的情调
  • 2021-05-10 13:23

#include <iostream>
#include <cmath>
using namespace std;

int main()
{
float x1,x2,deta,a,b,c;
cout<<"ax*x+bx+c=0"<<endl;
cout<<"请输入a,b,c的值\n";
cin>>a>>b>>c;

if (a!=0.)
deta=sqrt(b*b-4.*a*c);
if (deta>0.);
{
x1=(-b+deta)/(2.*a);
x2=(-b-deta)/(2.*a);
cout<<"x1="<<"\t"<<x1<<endl;
cout<<"x2="<<"\t"<<x2<<endl;
}
else
if (deta==0;)
{
x1=x2=-b/(2*a);
cout<<"x1=x2="<<"\t"<<x1<<endl;
}
else
cout<<"无解"<<endl;

else
if (b!=0;)
{
x1=x2=-c/b;
cout<<"x1=x2="<<x1<<endl;
}
else
cout<<"无解"<<endl;
}

请告诉我哪里错了谢谢

最佳答案
  • 五星知识达人网友:不甚了了
  • 2021-05-10 14:03

修改后的代码,你可以和原来的对照一下,就清楚了


#include <iostream>
#include <cmath>
using namespace std;


int main()
{
float x1,x2,deta,a,b,c,temp;
cout<<"ax*x+bx+c=0"<<endl;
cout<<"请输入a,b,c的值\n";
cin>>a>>b>>c;


if (a!=0){
temp=b*b-4*a*c;
if (temp>0)
{
deta=sqrt(temp);
x1=(-b+deta)/(2.*a);
x2=(-b-deta)/(2.*a);
cout<<"x1="<<"\t"<<x1<<endl;
cout<<"x2="<<"\t"<<x2<<endl;
}
else
if (temp==0)
{
x1=x2=-b/(2*a);
cout<<"x1=x2="<<"\t"<<x1<<endl;
}
else
cout<<"无解"<<endl;
}
else{
if (b!=0)
{
x1=x2=-c/b;
cout<<"x1=x2="<<x1<<endl;
}
else
cout<<"无解"<<endl;
}
}


全部回答
  • 1楼网友:话散在刀尖上
  • 2021-05-10 14:51

你代码主要是错在输入时的输入法,不能使用中文输入法输入 ,在这里特别是:括号 ()与() 时不一样的!

还有你的算法中有一些重复,我把多余部分做了一些修改,简化了一下,看看吧:

#include <iostream> #include <cmath> using namespace std;

void main() { float x1,x2,deta,a,b,c; cout<<"ax*x+bx+c=0"<<endl; cout<<"请输入a,b,c的值\n"; cin>>a>>b>>c; if(a!=0) //括号要用英文输入法输入,同时去掉括号),前的小数点,以下的同样错误,称 括号问题; { deta=sqrt(b*b-4*a*c); // 分号也在英文输入法,输入,不能用中文输入法! if (deta>=0) //同样错误,括号问题 { x1=(-b+deta)/(2*a); x2=(-b-deta)/(2*a); cout<<"x1="<<"\t"<<x1<<endl; cout<<"x2="<<"\t"<<x2<<endl; } else cout<<"无解"<<endl; } else //括号问题,同时去掉分号 { x1=x2=-c/b; cout<<"x1=x2="<<x1<<endl; } } 演示如下:

^_^

我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯