用C解决一元二次方程根的问题集锦.docx

上传人:b****3 文档编号:12666134 上传时间:2023-04-21 格式:DOCX 页数:16 大小:18.26KB
下载 相关 举报
用C解决一元二次方程根的问题集锦.docx_第1页
第1页 / 共16页
用C解决一元二次方程根的问题集锦.docx_第2页
第2页 / 共16页
用C解决一元二次方程根的问题集锦.docx_第3页
第3页 / 共16页
用C解决一元二次方程根的问题集锦.docx_第4页
第4页 / 共16页
用C解决一元二次方程根的问题集锦.docx_第5页
第5页 / 共16页
点击查看更多>>
下载资源
资源描述

用C解决一元二次方程根的问题集锦.docx

《用C解决一元二次方程根的问题集锦.docx》由会员分享,可在线阅读,更多相关《用C解决一元二次方程根的问题集锦.docx(16页珍藏版)》请在冰豆网上搜索。

用C解决一元二次方程根的问题集锦.docx

用C解决一元二次方程根的问题集锦

c++求一元二次方程ax^+bx+c=0的根

#include

#include

#defineESSP0.00000001

voidmain()

{

doublea,b,c,delta,root1,root2;

cout<<"Pleaseinputa:

";

cin>>a;

cout<<"Pleaseinputb:

";

cin>>b;

cout<<"Pleaseinputc:

";

cin>>c;

delta=b*b-4*a*c;

if(delta<-ESSP)

cout<<"Thisequationhasnorealroot."<

elseif(delta>ESSP)

{

root1=(-b+sqrt(delta))/(2*a);

root2=(-b-sqrt(delta))/(2*a);

cout<<"Thisequtionhastwounequalizeroots:

"<

}

else

{

root1=-b/(2*a);

cout<<"Thisequtionhastwoequalizeroots:

"<

}

}

结构化编程方法:

//fortworoots

#include

#include

intmain()

{

doublea,b,c,rp,ip;//方程系数

doublex1,x2;//方程的根

doubled;//根的判别式

cout<<"inputa,b,c(方程系数):

";

cin>>a>>b>>c;

if(a==0)

cout<<"这不是二元一次方程";

else

{

d=b*b-4*a*c;

if(d>=0)

{

if(d==0)

{

x1=-b/(2*a);

cout<<"只有一个实根:

"<

}

else

{

x1=(-b+sqrt(d))/(2*a);

x2=(-b-sqrt(d))/(2*a);

cout<<"有二个实根:

"<

}

}

else

{rp=-d/(2*a);

ip=sqrt(-d)/(2*a);

x1=rp+ip;

x2=rp-ip;

cout<<"有二个虚根:

"<

}

}

return0;

}

简单的类对象:

#include"iostream.h"

#include"math.h"

classFindRoot

{

private:

floata,b,c,d;

doublex1,x2;

public:

FindRoot(floatx,floaty,floatz);

voidFind();

voidDisplay();

};

FindRoot:

:

FindRoot(floatx,floaty,floatz)

{

a=x;

b=y;

c=z;

d=b*b-4*a*c;

}

voidFindRoot:

:

Find()

{

if(d>0)

{

x1=(-b+sqrt(d))/(2*a);

x2=(-b-sqrt(d))/(a*a);

}

elseif(d==0)

{

x1=x2=(-b)/(2*a);

}

else

{

doublerp=-d/(2*a);

doubleip=sqrt(-d)/(2*a);

x1=rp+ip;

x2=rp-ip;

}

}

voidFindRoot:

:

Display()

{

if(d>0)

{

cout<<"x1="<

}

elseif(d==0)

{

cout<<"x1=x2="<

}

else

{

cout<<"x1="<

cout<<"x2="<

}

}

voidmain()

{

FindRootobj(1,2,3);

obj.Find();

obj.Display();

}

根据要求编写程序。

①从键盘输入三个实数a、b、c分别作为一个一元二次方程ax2+bx+c=0的三个系数。

使用系

统给出的平方根函数,编写一段程序,使之求出这个方程的两个根。

其中,求△=b2-4*a*c

的功能要以函数形式出现。

(提示:

求根公式,△<0时方程无解)

②已知a1=1,a2=1,当n大于等于2时,a(n+1)=3*a-a(n-1),要求用递归函数输出a1到a8。

#include"stdio.h"

#include"math.h"

voidmain()

{

floata,b,c,x1,x2,disc,realpart,imagpart;

printf("请输入三个数值\n");

scanf("%f%f%f",&a,&b,&c);

disc=b*b-4*a*c;

if(a==0)

printf("该方程不是一元二次方程组\n");

elseif(disc==0)

{

x1=(-b)/(2*a);

x2=(-b)/(2*a);

printf("x1=%.2f\tx2=%.2f\n",x1,x2);

}

elseif(b*b-4*a*c>0)

{

x1=(-b)+sqrt(disc);

x2=(-b)-sqrt(disc);

printf("x1=%.2f\tx2=%.2f\n",x1,x2);

}

else

printf("b²-4ac<0,该方程没有实根\n",x1,x2);

}

#include"stdio.h"

inta[8]={0};

intgetResult(intn)

{

if(n==1||n==2)

{

return1;

}

else

{

return3*getResult(n-1)-getResult(n-2);

}

}

voidmain()

{

inti;

a[0]=1;

a[1]=1;

for(i=2;i<8;i++)

a[i]=getResult(i+1);

for(i=0;i<8;i++)

printf("a%d=%d\n",i+1,a[i]);

}

用C语言编写一个程序,计算一元二次方程的解(x1,x2)。

一元二次方程:

Ax2+Bx+C=0(假设A=4,B=6,C=1)

按顺序输入a,b,c

#include"stdio.h"

#include"stdlib.h"

#include"math.h"

intmain(){

floata,b,c;

scanf("%f",&a);

scanf("%f",&b);

scanf("%f",&c);

printf("%f\n",(-b+sqrt(b*b-4*a*c))/2/a);

printf("%f",(-b-sqrt(b*b-4*a*c))/2/a);

system("pause");

return0;

};

解一元二次方程的C++程序

#include

#include

#include

voidsqrt1(double,double);

voidsqrt2(double,double);

voidprinter(double,double);

voidmain()

{

floata,b,c;

doublex1,x2;

cout<<"请输入a,b,c:

"<

cin>>a>>b>>c;

if(b*b-4*a*c!

=0)

{

if(b*b-4*a*c)

{

sqrt1(x1,x2);

}

else

{

printer(x1,x2);

}

}

else

{

sqrt2(x1,x2);

}

}

voidsqrt1(doublex1,doublex2)//b*b-4ac>0

{

floata,b,c;

if(a!

=0)

{

x1=(-b+sqrt(b*b-4*a*c))/(2*a);

x2=(-b-sqrt(b*b-4*a*c))/(2*a);

cout<<"x1="<

}

else

{

if(b==0)

{

if(c==0)

cout<<"x为任意解"<

else

cout<<"无解"<

}

else

{

x1=x2=-c/b;

cout<<"x1="<<"x2="<

}

}

}

voidsqrt2(doublex1,doublex2)//b*b-4ac=0

{

floata,b,c;

x1=x2=-b/(2*a);

cout<<"x1="<<"x2="<

}

voidprinter(doublex1,doublex2)//b*b-4ac<0

{

floata,b,c;

chari='i';//i后面为虚部

x1=(-b/(2*a))+(i*(sqrt(b*b-4*a*c)/(2*a)));

x2=(-b/(2*a))-(i*(sqrt(b*b-4*a*c)/(2*a)));

cout<<"x1="<

}

用C++编几个程序

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

讨论下述情形:

(1)a=0,不是二次方程。

(2)b^2-4ac=0,有两个相等实根。

(3)b^2-4ac>0,有两个不等实根。

(4)b^2-4ac<0,有两个复根(表示成x+yi,x-yi)。

2.编写一个程序,打印下列图形:

1

12

123

1234

12345

3.编写一个函数将一nxn矩阵转置(即a[i][j]与a[j][i]的值交换),然后编写一main()

函数调用它(取n=3)。

第1个我记得书上有例题的

第2个:

#include

intmain()

{

for(inti=1;i<=5;i++)

{

for(intj=1;j<=i;j++)

printf("%d",j);

printf("\n");

}

return0;

}

3.

#include

#defineN3

intmain()

{

voidf(int);

inta[N][N];

for(inti=0;i

for(intj=0;j

scanf("%d",&a[i][j]);

f(a);

for(inti=0;i

{

for(intj=0;j

printf("%d",a[i][j]);

printf("\n");

}

return0;

}

voidf(inta[][])

{

inttemp;

for(inti=0;i

for(intj=i;j

{

temp=a[i][j];

a[i][j]=a[j][i];

a[j][i]=temp;

}

}

七(复数)

#include"iostream.h"

#include"math.h"

voidmain()

{

floata,b,c;

cout<<"Inputax*x+bx+c=0:

\na=";

cin>>a;

cout<<"b=";

cin>>b;

cout<<"c=";

cin>>c;

if(b*b-4*a*c<0)

{

cout<<"Noradixinrealnumber!

"<

complex x1,x2; 

     x1 = complex((-b)/(2*a), sqrt(-d)/(2*a)); 

     x2 = complex((-b)/(2*a), -(sqrt(-d)/(2*a))); 

 return;

}

八建立复数类求方程的根

#include  

 #include  

 #include  

 using namespace std; 

  

 int main(void) 

 { 

     double a = 1.0, b = 0.0, c = 1.0; // ax^2 + bx + c = 0 

     complex x1,x2; 

     double d = b * b - 4.0 * a * c; 

     if (d >= 0) 

     { 

         x1 = (-b + sqrt(d))/(2*a); 

         x2 = (-b - sqrt(d))/(2*a); 

     } 

     else 

     { 

         x1 = complex((-b)/(2*a), sqrt(-d)/(2*a)); 

         x2 = complex((-b)/(2*a), -(sqrt(-d)/(2*a))); 

     } 

     cout << "x1 = " << x1.real() << " + " << x1.imag() << "i" << endl; 

     cout << "x2 = " << x2.real() << " + " << x2.imag() << "i" << endl; 

  

     return 0; 

 }

复数类如下:

 

 #include 

 #include  

 // class 

 class complex 

 { 

 private:

 

  

    double a,b; 

    double _copy; 

     

  

 public:

 

    double getreal(); 

    double getimag(); 

    double getZ(); 

    void solution(double a,double b,double c,double p,complex &x1,complex &x2); 

    complex(int x) 

    { 

     a=x;b=0; 

    } 

    complex(double av,double bv):

a(av),b(bv) 

    { 

    } 

    complex(){} 

    complex(complex& _copy) 

    { 

    a=_copy.a; 

    b=_copy.b; 

    } 

  

      friend ostream& operator<<(ostream& i,complex& j); 

      friend istream& operator>>(istream& g,complex& i); 

  

  

      friend complex operator+(complex& x,complex& y); 

      friend complex operator-(complex& x,complex& y); 

      friend complex operator*(complex& x,complex& y); 

      friend complex operator/(complex& x,complex& y); 

      complex operator=(complex& y); 

      void output() 

      { 

      cout<<"z="<

      } 

      void put() 

      { 

       cout<<"("<

      } 

      void gen() 

  {int sign=1, double g,h; 

  if(b<0) 

  sign=-1; 

  else 

  sign=1; 

  g=sqrt((sqrt((a*a)+(b*b))+a)/2); 

  h=sign*sqrt((sqrt((a*a)+(b*b))-a)/2); 

  cout<<"the sqrt-root is:

 "<

  } 

 }; 

 ostream& operator<<(ostream& stream ,complex& x) 

 { 

   x.put(); 

   return stream; 

 } 

  

 //input 

 istream& operator>>(istream& stream,complex& x) 

 { 

 cout<<"\treal="; 

 cin>>x.a; 

 cout<<"\timag="; 

 cin>>x.b; 

 return stream; 

 } 

 //add 

 complex operator+(complex& x,complex& y) 

   { 

     return complex(x.a+y.a,x.b+y.b); 

   } 

 //sub 

 complex operator-(complex& x,complex& y) 

   { 

     return complex(x.a-y.a,x.b-y.b); 

   } 

 //mul 

 complex operator*(complex& x,complex &y) 

   { 

   return complex((x.a*y.a)-(x.b*y.b),(x.a*y.b)+(x.b*y.a)); 

   } 

 //div 

 complex operator/(complex& x,complex& y) 

 { 

 return complex(((x.a*y.a+x.b*y.b))/(y.a*y.a+y.b*y.b),(x.b*y.a-x.a*y.b)/(y.a*y.a+y.b*y.b)); 

 } 

  

 //assignment 

 complex complex:

:

operator=(complex& y) 

 { 

 this->a=y.a; 

 this->b=y.b; 

 return *this; 

 } 

 double complex:

:

getreal() 

      { 

     return a; 

      } 

 double complex:

:

getimag() 

      { 

     return b; 

      } 

 double complex:

:

getZ(

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 法律文书 > 调解书

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1