要求计算一元二次方程ax \n2\n +bx+c=0(a\n\n=0)的根。 主函数中给出3个浮点系数a、b、c,调用函数rootofequation()求解方程的实根。方程的根通过指针类型的参数x1、x2
时间: 2023-04-29 20:01:55 浏览: 91
来返回。如果方程无实根,则返回。
函数原型为:
int rootofequation(float a, float b, float c, float *x1, float *x2);
其中,a、b、c为输入参数,分别表示一元二次方程的系数;x1、x2为输出参数,分别表示方程的两个实根。
如果方程有两个实根,则将较小的实根存入x1中,较大的实根存入x2中,并返回2;如果方程只有一个实根,则将该实根存入x1中,并返回1;如果方程无实根,则返回。
例如,当a=1,b=-3,c=2时,方程的两个实根分别为1和2,因此调用rootofequation()函数后,x1应该等于1,x2应该等于2。
代码实现如下:
```c
#include <stdio.h>
#include <math.h>
int rootofequation(float a, float b, float c, float *x1, float *x2);
int main()
{
float a, b, c, x1, x2;
printf("请输入一元二次方程的系数a、b、c:");
scanf("%f%f%f", &a, &b, &c);
int num = rootofequation(a, b, c, &x1, &x2);
if (num == )
printf("该方程无实根\n");
else if (num == 1)
printf("该方程有一个实根,为:%f\n", x1);
else
printf("该方程有两个实根,分别为:%f和%f\n", x1, x2);
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 = -b / (2 * a);
return 1;
}
else
{
*x1 = (-b - sqrt(delta)) / (2 * a);
*x2 = (-b + sqrt(delta)) / (2 * a);
return 2;
}
}
```
阅读全文