题解 | 计算一元二次方程
计算一元二次方程
https://www.nowcoder.com/practice/7da524bb452441b2af7e64545c38dc26
#include <stdio.h> #include <math.h> int main(void) { float a = 0; float b = 0; float c = 0; float medi_value = 0.0; float result_1 = 0.0; float result_2 = 0.0; while (scanf("%f %f %f", &a, &b, &c) != EOF) { medi_value = powf(b, 2) - 4 * a * c; if (a == 0) { printf("Not quadratic equation"); } else { if (medi_value == 0) { result_1 = result_2 = (-b) / (2 * a); result_1 = result_1 == -0.0 ? 0.00 : result_1; result_2 = result_2 == -0.0 ? 0.00 : result_2; printf("x1=x2=%.2f\n", result_1); } else if (medi_value > 0) { result_1 = ((-b) - sqrtf(medi_value)) / (2 * a); result_2 = ((-b) + sqrtf(medi_value)) / (2 * a); result_1 = result_1 == -0.0 ? 0.00 : result_1; result_2 = result_2 == -0.0 ? 0.00 : result_2; printf("x1=%.2f;x2=%.2f\n", result_1, result_2); } else { result_1 = (-b) / (2 * a); result_2 = sqrt(-medi_value) / (2 * a); result_1 = result_1 == -0.0 ? 0.00 : result_1; result_2 = result_2 == -0.0 ? 0.00 : result_2; printf("x1=%.2f-%.2fi;x2=%.2f+%.2fi\n", result_1, result_2, result_1, result_2); } } } return 0; }