注册 登录
编程论坛 C++教室

请大家帮忙看看这个错误怎么改,什么原因造成的?谢谢。

xyz326547445 发布于 2011-03-28 13:30, 672 次点击
求ax2+bx+c=0的一元二次方程的解。
#include "iostream.h"
#include"math.h"
void main()
{
float a,b,c,disc,x1,x2,p,q;

cin>>"输入a,b,c三个数">>a>>b>>c;
if((a==0)&&(b!=0)) cout<<"它不是二次方程"<<"x1=x2="<<(-c)/b<<endl;
if((a==0)&&(b==0)&&(c!=0)) cout<<"x无解"<<endl;
if((a==0)&&(b==0)&&(c==0)) cout<<"x可以为任何值"<<endl;
if(a!=0){ disc=(b*b-4*a*c);
        if (disc=0) cout<<"有两个相等实根"<<"x1=x2="<<(-b)/(2*a)<<endl;
else if (disc>0)
cout<<"有两个不等的实根"<<"x1="<<(-b+sqrt(disc))/(2*a)<<"x2="<<(-b-sqrt(disc))/(2*a)<<endl;
else p=-b/(2*a);
q=sqrt(-disc)/(2*a) ;
 cout<<"有两个共轭复根"<<"x1="<<p+q<<"i"<<"x2="<<p-q<<"i"<<endl;}
}
已运行就成这样子了:
只有本站会员才能查看附件,请 登录

这怎么回事啊?
vc我弄好了,运行有三个警告,怎么改?如下:
c:\documents and settings\administrator\桌面\1.cpp(17) : warning C4244: '=' : conversion from 'double' to 'float', possible loss of data
c:\documents and settings\administrator\桌面\1.cpp(5) : warning C4101: 'x1' : unreferenced local variable
c:\documents and settings\administrator\桌面\1.cpp(5) : warning C4101: 'x2' : unreferenced local variable
什么意思啊?

[ 本帖最后由 xyz326547445 于 2011-3-28 21:46 编辑 ]
9 回复
#2
Lyone2011-03-28 14:41
if((a==0)||(b!=0)) cout<<"它不是二次方程"<<"x1=x2="<<(-c)/b<<endl;
if((a==0)||(b==0)||(c!=0)) cout<<"x无解"<<endl;
if((a==0)||(b==0)||(c==0)) cout<<"x可以为任何值"<<endl;
我怎么觉得这几个“或”应该改成“且”呢?

[ 本帖最后由 Lyone 于 2011-3-28 15:00 编辑 ]
#3
xyz3265474452011-03-28 17:44
不好意思,弄错了。
但我在我电脑上装的vc6.0怎么用不成,怎么运行都有一个错误,也不出错在哪,就只显示有一个错误,也没法调试,这是怎么回事啊?
如果换成“且”是不是就可以了?
#4
pangding2011-03-28 17:55
提示的错误是什么?
#5
xyz3265474452011-03-28 18:06
只有本站会员才能查看附件,请 登录
只有本站会员才能查看附件,请 登录

就是这,不管是什么程序都是,课本上照抄的也出现这情况。
#6
pangding2011-03-28 20:19
去百度一下呗。
http://zhidao.baidu.com/question/90288727.html
#7
shining小南2011-03-28 22:09
cout<<"输入a,b,c三个数:";
cin>>a>>b>>c;
这个地方有问题,还有你的 if else用的让人看碧清,给整理了一下,我调了一下,没问题了。

#include "iostream.h"
#include"math.h"
void main()
{
float a,b,c,disc,x1,x2,p,q;

cout<<"输入a,b,c三个数:";
cin>>a>>b>>c;
if((a==0)&&(b!=0)) cout<<"它不是二次方程"<<"x1=x2="<<(-c)/b<<endl;
if((a==0)&&(b==0)&&(c!=0)) cout<<"x无解"<<endl;
if((a==0)&&(b==0)&&(c==0)) cout<<"x可以为任何值"<<endl;
if(a!=0)
{
    disc=(b*b-4*a*c);
    if (disc==0) cout<<"有两个相等实根"<<"x1=x2="<<(-b)/(2*a)<<endl;
    else
    {
        if (disc>0) cout<<"有两个不等的实根"<<"x1="<<(-b+sqrt(disc))/(2*a)<<"x2="<<(-b-sqrt(disc))/(2*a)<<endl;
        else
        {
            p=-b/(2*a);
            q=sqrt(-disc)/(2*a) ;
            cout<<"有两个共轭复根"<<"x1="<<p+q<<"i"<<"x2="<<p-q<<"i"<<endl;
        }
    }
}
}
只有本站会员才能查看附件,请 登录
#8
linzhiqing2011-03-29 09:00
我刚刚运行了一下,版主的程序问题出在倒数第二个右括号上,那个括号不是英文字符
#9
linzhiqing2011-03-29 09:01
还有一个错误就是有个if用了等号而不是==
#10
xyz3265474452011-03-29 12:37
谢谢了,终于知道问题所在了。呵呵。
1