计算概论(A)/基础编程练习1(8题)/4:求一元二次方程的根

 1 #include
 2 #include
 3 int main() {
 4     // 待解方程数目
 5     int n;
 6     scanf("%d", &n);
 7 
 8     // 声明方程系数
 9     float a, b, c;
10 
11     // 存储读入的系数
12     float args[n][n];
13 
14     // 声明方程的根
15     double x1, x2;
16 
17     // 循环读入存储每行方程的系数a、b和c
18     int count=0;
19     while(count!=n) {
20         scanf("%f %f %f", &a, &b, &c);
21         args[count][0] = a;
22         args[count][1] = b;
23         args[count][2] = c;
24         count++;
25     }
26 
27     // 循环计算每行的一元二次方程根
28     for(int i=0; i) {
29         double delta = 0.0;
30         a = args[i][0];
31         b = args[i][1];
32         c = args[i][2];
33         delta = b * b - 4 * a * c;
34         if(delta==0) {
35             x1 = (-b+0)/(2*a);
36             x2 = x1;
37             printf("x1=x2=%.5f\n", x1);
38         } else if(delta>0) {
39             x1 = (-b+sqrt(delta))/(2*a);
40             x2 = (-b-sqrt(delta))/(2*a);
41             if(x1>x2)
42                 printf("x1=%.5f;x2=%.5f\n", x1, x2);
43             else
44                 printf("x2=%.5f;x1=%.5f\n", x2, x1);
45         } else {
46             // 实部计算公式: -1.0*b/(2*a) 虚部计算公式:+/- (sqrt(-delta))/(2*a)
47             printf("x1=%.5f+%.5fi;x2=%.5f-%.5fi\n", -1.0*b/(2*a), (sqrt(-delta))/(2*a), -1.0*b/(2*a), (sqrt(-delta))/(2*a));
48         }
49     }
50     return 0;
51 }
52 /*
53 pkuic_1709.c
54 计算概论(A)/基础编程练习1(8题)/4:求一元二次方程的根
55 http://pkuic.openjudge.cn/base1/4/
56 4:求一元二次方程的根
57 查看 提交 统计 提问
58 总时间限制: 1000ms 内存限制: 65536kB
59 描述
60     利用公式x1 = (-b + sqrt(b*b-4*a*c))/(2*a), x2 = (-b - sqrt(b*b-4*a*c))/(2*a)求一元二次方程ax2 + bx + c =0的根,其中a不等于0。
61 输入
62     第一行是待解方程的数目n。其余n行每行含三个浮点数a, b, c(它们之间用空格隔开),分别表示方程ax2 + bx + c =0的系数。
63 输出
64     输出共有n行,每行是一个方程的根:
65     若是两个实根,则输出:x1=...;x2 = ...
66     若两个实根相等,则输出:x1=x2=...
67     若是两个虚根,则输出:x1=实部+虚部i; x2=实部-虚部i
68     所有实数部分要求精确到小数点后5位,数字、符号之间没有空格。
69     x1和x2的顺序:x1的实部>Re的实部||(x1的实部==x2的实部&&x1的虚部>=x2的虚部)
70 样例输入
71     3
72     1.0 3.0 1.0
73     2.0 -4.0 2.0
74     1.0 2.0 8.0
75 样例输出
76     x1=-0.38197;x2=-2.61803
77     x1=x2=1.00000
78     x1=-1.00000+2.64575i;x2=-1.00000-2.64575i
79 提示
80     1、需要严格按照题目描述的顺序求解x1、x2。
81     2、方程的根以及其它中间变量用double类型变量表示。
82     3、函数sqrt()在头文件math.h中。
83     4、要输出浮点数、双精度数小数点后5位数字,可以用下面这种形式:printf("%.5f", num);
84 注意
85     在使用Java做此题时,可能会出现x1或x2等于-0的情形,此时,需要把负号去掉
86 来源
87     2005~2006医学部计算概论期末考试
88 */

 

转载于:https://www.cnblogs.com/valuestack/p/two-equation-of-one-variable.html

你可能感兴趣的:(c/c++,java)