题目描述
建立一个求一元二次方程解的类(ax2+bx+c=0),输入系数a,b,c 的值后打印出这个方程的解。
输入描述:
输入第一行为样例数m,接下来m行每行3个整数a、b、c。
输出描述:
输出m行,要求格式如下:若无解则输出-1,若有单解则输出x=…,若有两解则输出x1=…,x2=…,具体参见样例,保留小数点后两位。
示例1
输入
3
1 -3 2
1 -2 1
2 1 2
输出
x1=1.00,x2=2.00
x=1.00
-1
备注:
注意a为0的情况。
代码:
#include <stdio.h>
#include <math.h>
int main() {
int count;
scanf("%d", &count);
while (count--) {
float a, b, c;
scanf("%f %f %f", &a, &b, &c);
if (a == 0) {
//if (b == 0) {
// printf("-1\n");
//} else {
printf("x=%0.2f\n", (-c / b));
//}
} else {
float delta = b * b - 4 * a * c;
if (delta < 0) {
printf("-1\n");
} else if (delta == 0) {
printf("x=%0.2f\n", (-b + 0) / (2 * a));
} else {
float sqrt_delta = sqrt(delta);
printf("x1=%0.2f,x2=%0.2f\n", (-b - sqrt_delta) / (2 * a), (-b + sqrt_delta) / (2 * a));
}
}
}
}