编写一个程序求一元二次方程的解.

编写一个程序求一元二次方程的解。讨论下述情形:(1)a=0,不是二次方程。(2)b^2-4ac=0,有两个相等实根。(3)b^2-4ac>0,有两个不等实根。(4)b^2... 编写一个程序求一元二次方程的解。
讨论下述情形:
(1)a=0,不是二次方程。
(2)b^2-4ac=0,有两个相等实根。
(3) b^2-4ac>0,有两个不等实根。
(4) b^2-4ac<0,有两个复根(表示成x+yi,x-yi)。
用C++编写
展开
 我来答
xsyhzhb1991
推荐于2017-09-04 · TA获得超过1.4万个赞
知道大有可为答主
回答量:5125
采纳率:75%
帮助的人:8928万
展开全部
C++的代码:
#include <iostream.h>
#include <math.h>
void main(void)
{
double a,b,c,d;
char ch('y');
do{
cout<<"请依次输入二次方程ax^2+bx+c=0的系数(a不等于0):"<<endl;
cin>>a>>b>>c;
if(-0.0001<a<0.0001) //浮点数不宜直接判断相等
{cout<<"不是二次方程"<<endl;continue;}
d=b*b-4*a*c;
if(d==0)cout<<"方程有两个相等实根:"<<-b/(2*a)<<endl;
else if(d<0)cout<<"方程有两个不相等复根:"<<-b/(2*a)<<"+i"<<sqrt(-d)/(2*a)<<' '<<-b/(2*a)<<"-i"<<sqrt(-d)/(2*a)<<endl;
else cout<<"方程有两个不相等实根:"<<-b/(2*a)+sqrt(d)/(2*a)<<' '<<-b/(2*a)+sqrt(d)/(2*a)<<endl;
cout<<"继续?(y/n):";cin>>ch;
}while(ch=='y'||ch=='Y');
}
15805513673
2010-07-22
知道答主
回答量:24
采纳率:0%
帮助的人:6.5万
展开全部
我用C语言帮你编一个,可以在VC++ 里面运行!
#include "stdio.h"
#define i
void main()
{float a,b,c,x1,x2,temp;
printf("请输入一元二次方程的系数:\n");
scanf("%f,%f,%f",&a,&b,&c);
temp=b*b-4*a*c;
if(a==0)
printf("这不是一元二次方程!");
else
{if(temp==0)
{x1=x2=-b/(2*a) ;printf("%f,%f",x1,x2);}
else
{ if(temp>0)
x1=(-b+temp)/(2*a);x2=(-b-temp)/(2*a);printf("%f,%f",x1,x2);
if(temp<0)
{x1=(-b+(temp)i)/(2*a);x2=(-b-(temp)i)/(2*a);printf("%f,%f",x1,x2);}

}}}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
niulu90
2010-07-22 · TA获得超过2472个赞
知道小有建树答主
回答量:1005
采纳率:0%
帮助的人:948万
展开全部
一元二次方程的解的程序#include "stdafx.h" #include<iostream> #include"cmath" #include<string.h> using namespace std; class Jie { public: Jie() //缺省的构造函数 {} Jie(double _a,double _b,double _c); //带参数的构造函数 int display(); // 求根函数 private: double a; //方程组的系数a double b; //方程组的系数b double c; //方程组的系数c }; Jie::Jie(double _a, double _b, double _c) { a=_a; b=_b; c=_c; } int Jie::display() { double t1,t2,y1,y2; if(a==0) { cout<<"不是一元二次方程组!"<<endl; return 0; } else { t1=b*b-4*a*c; t2=-b/(2*a); if(t1==0) { cout<<"方程有且仅有一个根!"<<endl; cout<<"y1=y2="<<t2<<endl; } else if(t1>0) { cout<<"方程有两个根"<<endl; y1=t2+sqrt(t1)/(2*a); y2=t2-sqrt(t1)/(2*a); cout<<"y1="<<y1<<endl; cout<<"y2="<<y2<<endl; } else if(t1<0) { y1=sqrt(-t1)/(2*a); if(t2==0) { cout<<"y= i"<<y1<<endl; } else { cout<<"y1="<<t2<<"+ i"<<y1<<endl; cout<<"y2="<<t2<<"- i"<<y1<<endl; } } } return 0; } void main() { double m,n,k; cout<<"请输入一元二次方程组的系数a,b,c"<<endl; cin>>m>>n>>k; cout<<"方程组为"<<m<<"x*x+"<<n<<"x+"<<k<<"=0"<<endl; Jie A(m,n,k); cout<<"方程的根为:"<<A.display(); }答案补充
typearr = array[1..3]of double;vara: arr;procedure solve(a: arr);vardelta: double;begindelta := a[2] * a[2] - 4 * a[1] * a[3];if delta < 0 thenwriteln('No solution')else if delta = 0 thenwriteln('x = ', - a[2] / (a[1] * 2):0:5)else beginwriteln('x1 = ', (- a[2] + sqrt(delta)) / (a[1] * 2):0:5);writeln('x2 = ', (- a[2] - sqrt(delta)) / (a[1] * 2):0:5);end;end;beginreadln(a[1], a[2], a[3]); //表示方程a[1]*x^2+a[2]*x+a[3]=0solve(a);readln;end.
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
bigbirdzx
2010-07-22 · TA获得超过345个赞
知道小有建树答主
回答量:546
采纳率:0%
帮助的人:279万
展开全部
这不是以前上计算机课做过的作业吗?怎么还要百度问呢?
记得书上还有流程图,根据图就写出来了啊。
我们教的FORTRAN,程序源码早就不知道哪里去了
建议你自己安流程图自己写,加深印象
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式