《C语言第三版课后习题》6
课后习题8.2
求方程ax^2+bx+c=0的根,用三个函数gz,ez和sz分别求当b^2-4ac大于0、等于0和小于0时的根,
并输出结果。从主函数输入a、b、c的值。(输出保留3位小数)
#include<stdio.h>
#include<math.h>
float x1, x2, disc, p, q;
void gz(float a, float b)
{
float m = sqrt(disc);
x1 = (-b + sqrt(disc)) / (2 * a);
x2 = (-b - sqrt(disc)) / (2 * a);
}
void ez(float a, float b)
{
x1 = x2 = (-b) / (2 * a);
}
void sz(float a, float b)
{
p = -b / (2 * a);
q = sqrt(-disc) / (2 * a);
}
int main()
{
int a, b, c;
scanf("%d %d %d", &a, &b, &c);
disc = b*b - 4 * a*c;
if (disc > 0)
{
gz(a, b);
printf("x1=%.3f x2=%.3f\n", x1, x2);
}
else if (disc == 0)
{
ez(a, b);
printf("x1=%.3f x2=%.3f\n", x1, x2);
}
else
{
sz(a, b);
printf("x1=%.3f+%.3fi x2=%.3f-%.3fi\n", p, q, p, q);
}
return 0;
}