题解 | #计算一元二次方程#
计算一元二次方程
http://www.nowcoder.com/practice/7da524bb452441b2af7e64545c38dc26
- #include<stdio.h>
- #include<math.h>
- int ifsize(float a, float b, float c, double sum)
- {
- if (sum == 0)
- {
- return 0;
- }
- else if (sum > 0)
- {
- return 1;
- }
- else
- {
- return -1;
- }
- }
- int main()
- {
- float a = 0;
- float b = 0;
- float c = 0;
- while (scanf("%f %f %f", &a, &b, &c) != EOF)
- {
- double sum = (b * b) - (4 * a * c);
- if (a == 0.0)
- {
- printf("Not quadratic equation\n");
- }
- else
- {
- int sz = ifsize(a, b, c, sum);
- if (sz == 0)
- {
- double ret1 = (-b) / (2 * a);
- if (ret1 == 0.00)
- printf("x1=x2=0.00\n");
- else
- printf("x1=x2=%.2lf\n", ret1);
- }
- else if (sz > 0)
- {
- double ret1 = (-b + sqrt(sum)) / (2.0 * a);
- double ret2 = (-b - sqrt(sum)) / (2.0 * a);
- if (ret1 < ret2)
- printf("x1=%.2lf;x2=%.2lf\n", ret1, ret2);
- else
- printf("x1=%.2lf;x2=%.2lf\n", ret2, ret1);
- }
- else
- {
- double p1 = (-b) / (2.0 * a);
- double p2 = (sqrt(-sum)) / (2.0 * a);
- if (p2 > 0)
- printf("x1=%.2lf-%.2lfi;x2=%.2lf+%.2lfi\n", p1, p2, p1, p2);
- else
- printf("x1=%.2lf-%.2lfi;x2=%.2lf+%.2lfi\n", p1, -p2, p1, -p2);
- }
- }
- }
- return 0;
- }


