由键盘输入一元二次方程ax2+bx+c=0(a≠0)的a、b、c的值(a、b、c的值为整数类型),求方程的解(包括实数解和虚数解)。注意输出格式都是所有的数保留四位小数,并且注意输出中数值的顺序。
输入样例1:(注意输入中的逗号是半角逗号)
3,4,5
输出样例1:
有两个虚根: -0.6667 + 1.1055i and -0.6667 - 1.1055i
输入样例2:
2,4,2
输出样例2:
有两个相同的实根:-1.0000
输入样例3:
1,6,2
输出样例3:
有两个不同的实根: -0.3542 and -5.6458
输入样例4:
0,4,5
输出样例4:
请注意输出中的格式
该方程不是一元二次方程!
#include <stdio.h>
#include <math.h>
int main() {
int a, b, c;
double d, x1, x2, r, q, p;
scanf("%d,%d,%d", &a, &b, &c);
d = b * b - 4 * a * c;
r = sqrt(d);
if (a == 0) {
printf("该方程不是一元二次方程!");
} else if (d > 0) {
x1 = (-b + r) / (2 * a);
x2 = (-b - r) / (2 * a);
printf("有两个不同的实根: %.4lf and %.4lf", x1, x2);
} else if (d == 0) {
x1 = (-b + r) / (2 * a);
printf("有两个相同的实根:%.4lf", x1);
} else {
q = sqrt(-d) / (2 * a);
p = -b / (2.0 * a);
printf("有两个虚根: %.4lf + %.4lfi and %.4lf - %.4lfi", p, q, p, q);
}
}