C语言求一元二次方程“ax^2+bx+c=0”的 根,其中a不等于0。结果要求精确到 小数点后5位。 若两个实根相等,则输出形式 为:“×1=x2=.” 若两个实根不等,需满足根小者在前 的原则,中间用分号隔开,输出形式 为:“x1=XX.XXXXX;x2=XX.XXXXX” 若无实根输出“没有答案!”。
时间: 2023-05-11 16:03:40 浏览: 154
根据一元二次方程的求根公式,可以得到:
delta = b*b - 4*a*c
如果 delta < 0,则无实根;如果 delta = 0,则有两个相等的实根;如果 delta > 0,则有两个不相等的实根。
根据题目要求,我们需要将结果精确到小数点后5位,可以使用 "%.5f" 格式化输出。
下面是 C 语言的代码实现:
#include <stdio.h>
#include <math.h>
int main()
{
double a, b, c, delta, x1, x2;
printf("请输入一元二次方程的系数 a, b, c:");
scanf("%lf %lf %lf", &a, &b, &c);
delta = b*b - 4*a*c;
if (delta < 0) {
printf("没有答案!\n");
} else if (delta == 0) {
x1 = x2 = -b / (2*a);
printf("x1=x2=%.5f\n", x1);
} else {
x1 = (-b - sqrt(delta)) / (2*a);
x2 = (-b + sqrt(delta)) / (2*a);
if (x1 < x2) {
printf("x1=%.5f;x2=%.5f\n", x1, x2);
} else {
printf("x1=%.5f;x2=%.5f\n", x2, x1);
}
}
return 0;
}
如果你有更多的问题,可以继续问我。
阅读全文