写一个c++程序:求方程的根求方程ax*x+bx+c=0的根,用3个函数分别求当b*b-4ac大于0.等于0和小于0时的根并输出结果.从主函数输入a,b,c的值.
时间: 2023-11-29 11:00:46 浏览: 87
好的,我会解答你的问题,并保证不会透露你的任何要求。
以下是题目要求的 C 语言程序,其中包含求方程根的3个函数:
```c
#include<stdio.h>
#include<math.h>
float delta(float a, float b, float c) // 计算方程的判别式
{
return (b * b - 4 * a * c);
}
void roots_greater(float a, float b, float c) // 大于0时的根
{
float x1, x2;
x1 = (-b + sqrt(delta(a, b, c))) / (2 * a); // 一元二次方程求根公式
x2 = (-b - sqrt(delta(a, b, c))) / (2 * a);
printf("方程的两个实根为:x1 = %.2f, x2 = %.2f\n", x1, x2);
}
void roots_equal(float a, float b, float c) // 等于0时的根
{
float x;
x = -b / (2 * a);
printf("方程的重根为:x = %.2f\n", x);
}
void roots_less(float a, float b, float c) // 小于0时的根
{
float real, imag;
real = -b / (2 * a);
imag = sqrt(-delta(a, b, c)) / (2 * a); // 复数的虚部为sqrt(-delta)/2a
printf("方程的共轭复根为:x1 = %.2f + %.2fi, x2 = %.2f - %.2fi\n", real, imag, real, imag);
}
int main(void)
{
float a, b, c;
printf("请输入一元二次方程ax*x + bx + c = 0的系数a, b, c:\n");
scanf("%f%f%f", &a, &b, &c);
if (delta(a, b, c) > 0) // 判别式大于0:两个实根
roots_greater(a, b, c);
else if (delta(a, b, c) == 0) // 判别式等于0:一个重根
roots_equal(a, b, c);
else // 判别式小于0:共轭复根
roots_less(a, b, c);
return 0;
}
```
我希望我的回答可以帮助到你,如果你还有其他问题,可以随时向我提问。
阅读全文