教程》 2007.9 能解一元二次方程的函数 目前为止我们了解到的函数只能有一个返回值, 由return语句返回。 一个一元二次方程有二个解,如何让此函数返 回二个解。答案是采用指针作为函数的参数。 函数原型可设计为: void SolveQuadratic(double a,double b,double c, double *px1,double *px2) 函数的调用 SolveQuadratic(1.3,4.5,2.1,&x1,&x2) SolveQuadratic(a,b,c,&x1,&x2)
《C++大学教程》 2007.9 v 目前为止我们了解到的函数只能有一个返回值, 由return 语句返回。 v 一个一元二次方程有二个解,如何让此函数返 回二个解。答案是采用指针作为函数的参数。 v 函数原型可设计为: void SolveQuadratic(double a, double b, double c, double *px1, double *px2) v 函数的调用 SolveQuadratic(1.3, 4.5, 2.1, &x1, &x2) SolveQuadratic(a, b, c, &x1, &x2)
《C++大学教程》2007.9 原型的改进 ·并不是每个一元二次方程都有两个不同 根,有的可能有两个等根,有的可能没 有根。函数的调用着如何知道x1和x2中 包含的是否是有效的解? 让函数返回一个整型数。该整型数表示 解的情况
《C++大学教程》 2007.9 v 并不是每个一元二次方程都有两个不同 根,有的可能有两个等根,有的可能没 有根。函数的调用着如何知道x1和x2中 包含的是否是有效的解? v 让函数返回一个整型数。该整型数表示 解的情况
完整的函数 《C++大学教程》2007.9 int SolveQuadratic(double a,double b,double c,double *px1,double *px2) double disc,sqrtDisc; if(a==0)return3;1∥不是一元二次方程 disc=b b-4*a*c; if(disc<0)return2;l无根 if(disc==0){*px1=-b/(2*a);return1;}1/等根 1两个不等根 sqrtDisc sqrt(disc); *px1 (-b sqrtDisc)/(2 a); *px2 (-b sqrtDisc)/(2 a); return 0;
《C++大学教程》 2007.9 int SolveQuadratic(double a,double b,double c, double *px1,double *px2) { double disc, sqrtDisc; if(a == 0) return 3; //不是一元二次方程 disc = b * b - 4 * a * c; if( disc < 0 ) return 2; //无根 if ( disc == 0 ) { *px1 = -b /(2 * a); return 1;} //等根 //两个不等根 sqrtDisc = sqrt(disc); *px1 = (-b + sqrtDisc) / (2 * a); *px2 = (-b - sqrtDisc) / (2 * a); return 0; }
函数的调用 《C++大学教程》2007.9 int main() double a,b,c,x1,x2; int result; cout<<"请输入a,b,c:"; cin >a>>b>>c; result SolveQuadratic(a,b,c,&x1,&x2); switch (result) {case0:cout<"方程有两个不同的根:x1="<x1<<"x2="<< x2;break; case1:cout<"方程有两个等根:"<x1;break; case2:cout<"方程无根";break; case3:cout<"不是一元二次方程"; return 0;
《C++大学教程》 2007.9 int main() { double a,b,c,x1,x2; int result; cout << "请输入a,b,c: "; cin >> a >> b >> c; result = SolveQuadratic(a, b, c, &x1, &x2); switch (result) { case 0: cout << "方程有两个不同的根:x1 = " << x1 << " x2 = " << x2; break; case 1: cout << "方程有两个等根:" << x1; break; case 2: cout << "方程无根"; break; case 3: cout << "不是一元二次方程"; } return 0; }
《C++大学教程》2007.9 指针作为函数参数和返回值 指针作为函数参数 数组名作为函数参数 返回指针的函数 冬引用和引用传递 冬返回引用的函数
《C++大学教程》 2007.9 v 指针作为函数参数 v 数组名作为函数参数 v 返回指针的函数 v 引用和引用传递 v 返回引用的函数