【分支结构】求解一元二次方程

题目描述

求解方程ax2+bx+c=0。输入a、b、c的值(其中a≠0),计算并输出方程的解x(保留一位小数)。如果方程无实数解,输出“no real solution”。

输入

输入a,b,c的值

输出

输出方程的解,如果有实数解,按照从大到小输出,保留一位小数。

样例输入 

1 4 3

样例输出 

x1=-1.0
x2=-3.0

错误代码

#include <stdio.h>
#include <math.h>
int main()
{
    double a, b, c, x1, x2;
    double d = 0;
    scanf("%lf %lf %lf", &a, &b, &c);
    double k = b * b - (4 * a * c);
    d = sqrt(b * b - (4 * a * c));
    x1 = (-b + d) / (2.0 * a);
    x2 = (-b - d) / (2.0 * a);
    if (k >= 0)
    {
        if (x1 > x2)
            printf("x1=%.1lf\nx2=%.1lf\n", x1, x2);
        else
            printf("x2=%.1lf\nx1=%.1lf\n", x2, x1);
    }
    else
        printf("no real solution\n");
    return 0;
}

正确代码

#include <stdio.h>
#include <math.h>
int main()
{
    double p, q, x1, x2, disc, a, b, c;
    scanf("%lf%lf%lf", &a, &b, &c);
    disc = b * b - 4 * a * c;
    p = -b / (2.0 * a);
    if (disc >= 0)
    {
        q = (sqrt(disc)) / (2.0 * a);
        x1 = p + q;
        x2 = p - q;
        printf("x1=%.1lf\nx2=%.1lf\n", x1, x2);
    }
    else
    {
        printf("no real solution\n");
    }
    return 0;
}
知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇