一只小白


私信TA

用户名:1165094031

访问量:6311

签 名:

好难啊好难!!!

等  级
排  名 4010
经  验 1718
参赛次数 0
文章发表 17
年  龄 23
在职情况 待业
学  校 淮北师范大学
专  业

  自我简介:

解题思路:

由题目可以知道,当方程没有解的时候,需要输出虚数解,我们可以把虚部和实部分别求出来,

把 x1 = (-b + sqrt(b * b - 4ac)) /  (2a)

    x2= (-b - sqrt(b * b - 4ac)) /  (2a) 

换成

    x1 = (-b) / (2a) + sqrt(b * b - 4ac) /  (2a) 

    x2 = (-b) / (2a) - sqrt(b * b - 4ac) /  (2a)

这样的话 (-b) / (2a) 就可以表示实部,用 s 表示,而sqrt( -(b* b - 4ac)) /  (2a)i来表示虚部,用 m 表示。 

当函数没有实数解的时候,就可以用上面的方法求出虚数解

用printf("x1=%.3lf+%.3lfi x2=%.3lf-%.3lfi\n", s, m, s, m)就可以输出虚数解了。


注意事项:

1、虚部要注意在 sqrt 里面是要加 '-' 的
2、在 % 后面加“.3”表示输出值保留三位小数

3、输出虚数解的时候不能把 ‘i’忘记了

参考代码:


void i(int a, double s, double n)           //当方程有两个解

{

    double x1, x2;

    x1 = s + ((sqrt(n)) / (2*a));

    x2 = s - ((sqrt(n)) / (2*a));

    printf("x1=%.3lf x2=%.3lf\n", x1, x2 );

}


void j(double s, double n)                 //当方程有一个解

{

    double x1, x2;

    x1 = x2 = s;

    printf("x1=%.3lf x2=%.3lf", x1, x2);

}


void k(int a, double s, double n)          //当方程没有实数解,怎么输出虚数解

{

    double m;

    m = (sqrt(-n)) / (2*a);                //表示函数的虚部

    printf("x1=%.3lf+%.3lfi x2=%.3lf-%.3lfi\n", s, m, s, m);

 //如何输出函数的虚数解


int main()

{

    double a, b, c, s, n;

    scanf("%lf%lf%lf", &a, &b, &c);  //输入

    s = (-b) / (2*a);                //可以表示方程解的实部

    n = b*b - 4*a*c;                //为了后面写代码的方便,把 b*b - 4*a*c 赋给 n

    if(n > 0)                        //判断有没有解

        i(a, s, n);                 //调用函数

    else if(n == 0)

        j(s, n);

    else

        k(a, s, n);


    return 0;

}



 

0.0分

0 人评分

看不懂代码?想转换其他语言的代码? 或者想问其他问题? 试试问问AI编程助手,随时响应你的问题:

编程语言转换

万能编程问答  

代码解释器

代码纠错

SQL生成与解释

  评论区