- 题目2:求方程的根,用三个函数分别求当b^2-4ac大于0、等于0、和小于0时的根,并输出结果。从主函数输入a、b、c的值。
//输入 4 1 1 //输出 x1=-0.125+0.484i x2=-0.125-0.484i
考虑三种情况:
- 大于0时,有两个实根x1,x2;
- 小于0时,有两个共轭复根x1,x2;
- 等于0时,有一个根;
回忆公式:
- 两个实根:
x1=(-b)+sqrt(bb-4ac)/(2a)
x2=(-b)-sqrt(bb-4ac)/(2a); - 共轭复根:
x1=(-b)/(2a)+sqrt(-bb+4ac)/(2a)
x2=(-b)/(2a)-sqrt(-bb+4ac)/(2a) - 一个实根:
x=(-b)/(2a)
代码实现
#include#include void more(double a,double b,double c) { //有两个实根 double x1; double x2; double num = b*b-4*a*c; x1 = (-b+sqrt(num))/(2*a); x2 = (-b-sqrt(num))/(2*a); printf("x1=%.3lf x2=%.3lf ",x1,x2); } void equal(double a,double b) { //有一个实根 double x ; x = (-b)/(2*a); printf("x=%.3lf",x); } void less(double a,double b,double c) { //有两个共轭复根 double x1; double x2; double num1; num1 = b*b-4*a*c; x1 = (-b)/(2*a); x2 = sqrt(-num1)/(2*a); printf("x1=%.3lf+%.3lfi x2=%.3lf-%.3lfi",x1,x2,x1,x2); } int main() { double a; double b; double c; double sum ; scanf("%lf %lf %lf",&a,&b,&c); sum = b*b-4*a*c; //分类计算根值 if(sum>0) { more(a,b,c); }else if(sum==0) { equal(a,b); }else { less(a,b,c); } return 0; }
运行结果
4 1 1 x1=-0.125+0.484i x2=-0.125-0.484i
运行结果
4 8 4 x=-1.000
运行结果
8 9 9 x1=-0.562+0.899i x2=-0.562-0.899i
题目:C语言网



