要求计算一元二次方程ax 2 +bx+c=0(a =0)的根。 主函数中给出3个浮点系数a、b、c,调用函数rootofequation()求解方程的实根。方程的根通过指针类型的参数x1、x2传回主函数,其中x1是值较大的根,x2是值较小的根。 若方程有两个相等的实根,函数返回1; 若方程有两个不等的实根,函数返回2; 若方程无实根,函数返回0。
时间: 2023-04-24 22:02:39 浏览: 208
c代码-求ax平方+bx+c+=0
以下是一种可能的代码实现:
```c++
#include <iostream>
#include <cmath>
using namespace std;
int rootofequation(float a, float b, float c, float* x1, float* x2);
int main() {
float a, b, c, x1, x2;
cout << "请输入一元二次方程的系数a、b、c:" << endl;
cin >> a >> b >> c;
int result = rootofequation(a, b, c, &x1, &x2);
if (result == ) {
cout << "方程无实根。" << endl;
} else if (result == 1) {
cout << "方程有一个实根:" << x1 << endl;
} else {
cout << "方程有两个实根:" << x1 << " 和 " << x2 << endl;
}
return ;
}
int rootofequation(float a, float b, float c, float* x1, float* x2) {
float delta = b * b - 4 * a * c;
if (delta < ) {
return ; // 无实根
} else if (delta == ) {
*x1 = *x2 = -b / (2 * a); // 有一个实根
return 1;
} else {
*x1 = (-b + sqrt(delta)) / (2 * a);
*x2 = (-b - sqrt(delta)) / (2 * a);
if (*x1 < *x2) {
swap(*x1, *x2); // 交换x1和x2的值,使x1是值较大的根
}
return 2; // 有两个实根
}
}
```
该程序首先从用户输入中读取方程的系数a、b、c,然后调用函数rootofequation()求解方程的实根。函数的返回值表示方程的根的情况,通过指针类型的参数x1、x2传回主函数,其中x1是值较大的根,x2是值较小的根。最后根据返回值输出相应的结果。
阅读全文