「アルゴリズムに関する注意事項」セクション2.2-C / C ++クイックスタート->シーケンシャル構造の例3-5未知の1つで2次方程式の根を見つける

例3-51つの未知数から2次方程式の根を見つける


問題の説明1つの変数で2次方程式ax2 + bx + c = 0の根を見つけます。3つの係数a、b、およびcはキーボードによって入力され、aを0にすることはできず、b2-4ac> 0です。
プログラムに含まれる変数はdouble型です。スペースで区切られた1つの要素の2次方程式の3つの係数を
入力
し、2倍精度のダブルタイプの
出力
。2つのルートは次のように分岐によって出力されます(最後の新しい行に注意してください)
。r1=最初のルート
r2 = 2番目のルート
結果が出力されるとき、幅は小数点以下2桁を含む7桁。
サンプル入力コピー
1 3 2
サンプル出力コピー
R1 = -1.00
R2 = -2.00
、それはシーケンシャル構造の質問設定されているため、シーケンシャル構造の溶液法が採用されています

#include <stdio.h>
#include <math.h>

int main() {
    
    
    double a, b, c, r1, r2;
    scanf("%lf%lf%lf", &a, &b, &c);
    double discriminant;
    discriminant = b * b - 4 * a * c;
    if (a == 0)
        return 0;
    if (discriminant <= 0)
        return 0;
    else {
    
    
        r1 = (-b + sqrt(discriminant)) / (2 * a);
        r2 = (-b - sqrt(discriminant)) / (2 * a);
        printf("r1=%7.2f\nr2=%7.2f", r1, r2);
    }
    return 0;
}

実際、この質問は選択構造で書くこともでき、コードの行数が減ります

#include <stdio.h>
#include <math.h>

int main() {
    
    
    double a, b, c;
    scanf("%lf%lf%lf", &a, &b, &c);
    double discriminant = b * b - 4 * a * c;
    if (a != 0) {
    
    
        if (discriminant > 0) {
    
    
            printf("r1=%7.2f\n", (-b + sqrt(discriminant)) / 2 * a);
            printf("r2=%7.2f\n", (-b - sqrt(discriminant)) / 2 * a);
        }
    }
    return 0;
}

おすすめ

転載: blog.csdn.net/DoMoreSpeakLess/article/details/109733056