1028: C语言程序设计教程(第三版)课后习题8.2

时间:2022-05-17 11:56:39
Description
求方程 的根,用三个函数分别求当b^2-4ac大于0、等于0、和小于0时的根,并输出结果。从主函数输入a、b、c的值。
Input
a b c
Output
x1=? x2=?
Sample Input
4 1 1
Sample Output
x1=-0.125+0.484i x2=-0.125-0.484i
思路:注意当b*b-4*a*c<0时,应该是sqrt(4*a*c-b*b),并且复数加上i

#include<stdio.h>
#include<math.h>
int main()
{
    double a,b,c;
    while (scanf("%lf%lf%lf",&a,&b,&c)==3)
    {
    double x1,x2;
    double t1,t2;
    char s1='+',s2='-';
    if((b*b-4*a*c)<0)
    {    t1=-b/(2*a);
        t2=sqrt(4*a*c-b*b)/(2*a);       //复数部分
            printf("x1=%.3lf%c%.3lfi ",t1,s1,t2);
            printf("x2=%.3lf%c%.3lfi\n",t1,s2,t2);
    }
 
    else if((b*b-4*a*c)>=0)
    {
        t1=-b*1.0/(2*a);
        t2=sqrt(b*b-4*a*c)/(2*a);;
            printf("x1=%.3lf%c%.3lf ",t1,s1,t2);
            printf("x2=%.3lf%c%.3lf\n",t1,s2,t2);
    }
    }
    return 0;
}