1028: C语言程序设计教程(第三版)课后习题8.2
题目描述
求方程 的根,用三个函数分别求当b^2-4ac大于0、等于0、和小于0时的根,并输出结果。从主函数输入a、b、c的值。
输入
a b c
输出
x1=? x2=?
样例输入
4 1 1
样例输出
x1=-0.125+0.484i x2=-0.125-0.484i
1 #include <stdio.h> 2 #include <math.h> 3 4 // delta = 0 5 void delta_eq_0(int a, int b, int c) 6 { 7 float res = (float)(0 - b) / (2 * a); 8 printf("x1=%.3f x2=%.3f\n", res, res); 9 } 10 11 // delta > 0 12 void delta_gt_0(int a, int b, int c) 13 { 14 int delta = b * b - 4 * a * c; 15 float res1, res2; 16 res1 = (-b+sqrt(delta)) / (2 * a); 17 res2 = (-b-sqrt(delta)) / (2 * a); 18 printf("x1=%.3f x2=%.3f\n", res1, res2); 19 } 20 21 // delta < 0 22 void delta_lt_0(int a, int b, int c) 23 { 24 int delta = b * b - 4 * a * c; 25 float res1, res2; 26 res1 = (float)(0 - b) / (2 * a); 27 res2 = sqrt(abs(delta)) / (2 * a); 28 printf("x1=%.3f+%.3fi x2=%.3f-%.3fi\n", res1, res2, res1, res2); 29 } 30 31 // 计算结果 32 void caculate(int a, int b, int c) 33 { 34 int delta = b * b - 4 * a * c; 35 36 if(delta == 0) 37 delta_eq_0(a, b, c); 38 else if(delta > 0) 39 delta_gt_0(a, b, c); 40 else 41 delta_lt_0(a, b, c); 42 } 43 44 45 int main(int argc, char const *argv[]) 46 { 47 48 int a, b, c; 49 scanf("%d%d%d", &a, &b, &c); 50 caculate(a, b, c); 51 return 0; 52 }