此题用求根公式分类讨论比较容易
代码如下:
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<math.h>
int main(void)
{
float a = 0, b = 0, c = 0;//为何数值更方便转换直接都用浮点型
printf("请输入a,b,c:\n");
scanf("%f %f %f", &a, &b, &c);
if (a == 0)//首相要判断a是不是0,确定是一元二次方程还是一元二次方程
printf("%.2f", -(c / b));
else//然后要确定其delta是大于零还是等于零还是小于零,确定有多少个根
{
if (b * b - 4 * a * c > 0)
printf("%.2f\n%.2f", ((-b) + sqrt(b * b - 4 * a * c)) / 2 * a, ((-b) - sqrt(b * b - 4 * a * c)) / 2 * a);
else if (b * b - 4 * a * c == 0)
printf("%.2f", -(2 * a / b));
else
printf("无根");
}
return 0;
}
a > 0 时:
a = 0 时: