【C言語を取り戻す】 3. ブランチプログラミング(二分岐・単分岐プログラミング、論理判定、多分岐プログラミング、列挙型表現、代表例:閏年の判定、一変数の二次方程式の根を求める)

目次

序文

3. ブランチプログラミング

3.1 スコアが合格かどうかを判断する - デュアルブランチ プログラミング

3.2 業績と受賞情報 — 単一ブランチ プログラミング

3.3 論理判定 - ブール型

3.4 賞レベル - 複数部門のプログラミング

3.5 車のタイプを示す - 列挙型

3.6 例

3.6.1 例 - 特定の年がうるう年かどうかを判断する

3.6.2 例 - 1 変数の二次方程式の根を求める


    

序文

チャットGPT

        C は、1970 年代初頭にベル研究所のデニス・リッチーによって開発された汎用の手続き型コンピューター プログラミング言語です。これは、システムレベルのプログラミングとアプリケーション開発のための、シンプルで効率的で移植可能な言語となるように設計されています。

C 言語の主な機能の一部を次に示します。

1.構造化プログラミング: C 言語は構造化プログラミングをサポートしています。これにより、逐次実行、条件文 (if-else や switch など)、ループ構造 (for や while など) が提供され、プログラムが読みやすく、理解しやすく、保守しやすくなります。

2.中間言語:C言語は高級言語と低級言語の両方の特徴を持っています。豊富な制御構造と演算子を提供し、メモリやハードウェアに直接アクセスでき、プログラマがビット操作やポインタ操作などの低レベル操作を実行できるようにします。

3.移植性: C 言語で書かれたプログラムは、その構文と機能が異なるコンピュータ システムでも基本的に同じであるため、移植性が高くなります。これにより、コードにあまり多くの変更を加えることなく、プログラムをさまざまなプラットフォームでコンパイルして実行できるようになります。

4.強力な標準ライブラリ: C 言語は、入出力、文字列操作、メモリ管理、数学的演算などを処理するためのさまざまな関数とツールを含む豊富な標準ライブラリを提供します。これらの機能はプログラム開発の効率を向上させることができ、プラットフォームを超えて使用できます。

5.システム指向プログラミング: C 言語はメモリやハードウェアに直接アクセスできるため、オペレーティング システム、組み込みシステム、ドライバーなどの基盤となるソフトウェアの開発によく使用されます。C 言語にはビット演算やポインタなどの機能も用意されており、プログラマはシステム リソースをより適切に制御できます。

6.拡張性: C 言語を使用すると、プログラマはカスタム関数やライブラリを作成して言語の機能を拡張できます。このため、C 言語は大規模プロジェクトの開発に非常に適しており、コードをモジュール構造に編成し、関数呼び出しを通じて再利用できます。

        C 言語は比較的低レベルですが、依然として非常に重要で広く使用されているプログラミング言語です。プログラマーに強力な制御機能とパフォーマンス上の利点を提供し、システムプログラミング、組み込み開発、ゲーム開発などのさまざまな分野で広く使用されています。C++、Java、Python などの現代のプログラミング言語の多くは C 言語の影響を受け、C 言語を拡張および改良してきました。

3. ブランチプログラミング

3.1 スコアが合格かどうかを判断する - デュアルブランチ プログラミング

        デュアル ブランチ プログラミングは、条件の結果に応じて異なるコード パスを実行するために使用される基本的な条件付き制御構造です。C 言語では、if-else ステートメントを使用してデュアルブランチ プログラミングを実装し、生徒のスコアが合格したかどうかを判断できます。学生のスコアが合格基準に達すると、1 つのコード セットが実行され、そうでない場合は、別のコード セットが実行されます。

#include <stdio.h>

int main() {
    int score = 75;
    if (score >= 60) {
        printf("成绩及格\n");
    } else {
        printf("成绩不及格\n");
    }
    return 0;
}

出力:

成绩及格

3.2 業績と受賞情報 — 単一ブランチ プログラミング

        単一分岐プログラミングは、条件の結果に応じて異なるコード パスを実行するために使用される別のタイプの条件付き制御構造です。この場合、単一ブランチ プログラミングを使用して生徒の成績を判定し、成績が特定の条件に達したときに受賞情報を追加できます。学生の成績が特定の基準を満たした場合、一連のコードを実行して賞情報を追加できます。

#include <stdio.h>

int main() {
    int score;
    char award;

    printf("请输入成绩:");
    scanf("%d", &score);
    getchar(); // 消耗输入缓冲区中的换行符

    printf("请输入获奖信息:");
    scanf("%c", &award);

    if (award == 'Y') {
        score += 10;
    }

    printf("最终得分:%d\n", score);

    return 0;
}

出力:

3.3 論理判定 - ブール型

        C言語では論理的な判断をブール型で表現できます。C 言語では、Boolean 型の値は true または false になります。C 言語には組み込みのブール型はありませんが、整数型を使用してブール値を表すことができます。0 は false を表し、ゼロ以外の値は true を表します。

#include <stdbool.h>
#include <stdio.h>

int main() {
    bool isTrue = true;

    if (isTrue) {
        printf("条件为真\n");
    } else {
        printf("条件为假\n");
    }

    return 0;
}

出力:

条件为真

3.4 賞レベル - 複数部門のプログラミング

        マルチブランチ プログラミングは、さまざまな条件結果に基づいてさまざまなコード パスを実行するために使用される条件付き制御構造です。C 言語では、if-else if-elseステートメントを使用してマルチブランチ プログラミングを実装し、さまざまなレベルの勝利スコアに応じて対応するコードを実行できます。

#include <stdio.h>

int main() {
    int score = 75;
    if (score >= 90) {
        printf("一等奖\n");
    } else if (score >= 80) {
        printf("二等奖\n");
    } else if (score >= 70) {
        printf("三等奖\n");
    } else {
        printf("未获奖\n");
    }

    return 0;
}

3.5 車のタイプを示す - 列挙型

        列挙型は、名前付き定数値のセットを定義するために使用される特別なデータ型です。車のカテゴリを表す場合、列挙型を使用してさまざまな車のカテゴリを定義し、それらに特定の定数値を割り当てることができます。このように、これらの列挙値をプログラム内で使用して、さまざまな車種を表し、対応する操作や判断を実行できます。

#include <stdio.h>

int main() {
    enum CarType {
        SEDAN,
        SUV,
        HATCHBACK
    };

    enum CarType myCar = SUV;

    if (myCar == SUV) {
        printf("这辆车是SUV类型\n");
    }
}

3.6 例

3.6.1 例 - 特定の年がうるう年かどうかを判断する

#include <stdio.h>

int main() {
    int year;

    printf("请输入年份: ");
    scanf("%d", &year);

    if ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0) {
        printf("%d年是闰年\n", year);
    } else {
        printf("%d年不是闰年\n", year);
    }

    return 0;
}

3.6.2 例 - 1 変数の二次方程式の根を求める

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

int main() {
    double a, b, c;
    double discriminant, realPart, imaginaryPart;

    printf("请输入一元二次方程的系数:\n");
    printf("a: ");
    scanf("%lf", &a);
    printf("b: ");
    scanf("%lf", &b);
    printf("c: ");
    scanf("%lf", &c);

    discriminant = b * b - 4 * a * c;

    if (discriminant > 0) {
        // 有两个实数根
        double root1 = (-b + sqrt(discriminant)) / (2 * a);
        double root2 = (-b - sqrt(discriminant)) / (2 * a);
        printf("方程的根为:%.2lf 和 %.2lf\n", root1, root2);
    } else if (discriminant == 0) {
        // 有一个实数根
        double root = -b / (2 * a);
        printf("方程的根为:%.2lf\n", root);
    } else {
        // 有两个虚数根
        realPart = -b / (2 * a);
        imaginaryPart = sqrt(-discriminant) / (2 * a);
        printf("方程的根为:%.2lf + %.2lfi 和 %.2lf - %.2lfi\n", realPart, imaginaryPart, realPart, imaginaryPart);
    }

    return 0;
}

おすすめ

転載: blog.csdn.net/m0_63834988/article/details/133523113