如何编写一个C程序来找到二次方程的根?
问题
应用软件开发方法解决任意问题在C语言中实现。
解决方案
- 找到一个二次方程的根,ax2+bx+c。
- 给定二次方程将有两个根。
分析
输入 - a、b、c的值
输出 - r1、r2的值
步骤
r_{1}=\frac{-b+\sqrt{b^2-4ac}}{2a}
r_{2}=\frac{-b-\sqrt{b^2-4ac}}{2a}
设计(算法)
- 开始
- 读取a、b、c的值
- 计算d = b2-4ac
- 如果d > 0,则
- r1 = b+ sqrt (d)/(2*a)
- r2 = b sqrt(d)/(2*a)
- 否则,如果d = 0,则
- 计算r1 = -b/2a,r2=-b/2a
- 打印r1、r2的值
- 否则,如果d < 0,则打印根是虚数
- 停止
实现代码
# include<stdio.h>
# include<math.h>
int main () {
float a,b,c,r1,r2,d;
printf ("Enter the values of a b c: ");
scanf (" %f %f %f", &a, &b, &c);
d= b*b - 4*a*c;
if (d>0) {
r1 = -b+sqrt (d) / (2*a);
r2 = -b-sqrt (d) / (2*a);
printf ("The real roots = %f %f", r1, r2);
}
else if (d==0) {
r1 = -b/(2*a);
r2 = -b/(2*a);
printf ("Roots are equal =%f %f", r1, r2);
}
else
printf("Roots are imaginary");
return 0;
}
测试
Case 1:
Enter the values of a b c: 1 4 3
The real roots = -3.000000 -5.000000
Case 2:
Enter the values of a b c: 1 2 1
Roots are equal =-1.000000 -1.000000
Case 3:
Enter the values of a b c: 1 1 4
Roots are imaginary