下面是一个求一元二次方程ax^2+bx+c=0的根的C++控制台程序
#include"iostream"
#include<math.h>
using namespace std;
int solve(double a,double b,double c,double &x1,double &x2)
//函数solve()有五个形参参数,其中后俩是引用参数,引用参数的改变将会改变被引用变量x1,x2的初始值
{
double d;
int count;
d=b*b-4*a*c;
if(d>0)
{
count=2;
x1=(-b+sqrt(d))/(2*a);
x2=(-b-sqrt(d))/(2*a);
}
else if(d==0)
{
count=1;
x1=-b/(a*2);
}
else
count=0;
return count;
}
void disp(double a,double b,double c)
{
double x1,x2;
cout<<"("<<a<<","<<b<<","<<c<<"):";
switch(solve(a,b,c,x1,x2))
{
case 0:
cout<<"无实根"<<endl;
break;
case 1:
cout<<"x="<<x1<<endl;
break;
case 2:
cout<<"x1="<<x1<<",x2="<<x2<<endl;
break;
}
}
void main()
{
while(1)
{
int a,b,c;
cout<<"请输入ax^2+bx+c=0的系数a,b,c"<<endl;
cout<<"a=";
cin>>a;
cout<<"b=";
cin>>b;
cout<<"c=";
cin>>c;
cout<<"正确的答案为:"<<endl;
disp(a,b,c);
}
getchar();
}
注意:引用并非是对象,相反的,它只是为一个已经存在的对象所起的另外一个名字。
在定义引用时,程序把引用和它的初始值对象绑定在一起,而不是将初始值拷贝给引用,这不是复制与被复制的关系,是绑定的关系,就像你有两个名字,家人喊哪个名字,你都会应声。一旦初始化完成,引用将和它的初始值对象绑定在一起。因为无法令引用重新绑定到另外一个对象,因此引用必须初始化。