编写一个程序求一元二次方程的解.
编写一个程序求一元二次方程的解。讨论下述情形:(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++编写 展开
讨论下述情形:
(1)a=0,不是二次方程。
(2)b^2-4ac=0,有两个相等实根。
(3) b^2-4ac>0,有两个不等实根。
(4) b^2-4ac<0,有两个复根(表示成x+yi,x-yi)。
用C++编写 展开
展开全部
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');
}
#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');
}
展开全部
我用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);}
}}}
#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);}
}}}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
一元二次方程的解的程序#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.
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.
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
这不是以前上计算机课做过的作业吗?怎么还要百度问呢?
记得书上还有流程图,根据图就写出来了啊。
我们教的FORTRAN,程序源码早就不知道哪里去了
建议你自己安流程图自己写,加深印象
记得书上还有流程图,根据图就写出来了啊。
我们教的FORTRAN,程序源码早就不知道哪里去了
建议你自己安流程图自己写,加深印象
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询