【C言語を取り戻す】 4. ループプログラミングの古典例集(最大公約数、階乗和、正の整数の変換、文字正方行列の印刷、フィボナッチ数列...)

目次

序文

4. サイクルプログラミング

4.3 プログラミング例

4.3.1 2 つの数値の最大公約数を求める

4.3.2 階乗和

4.3.3 正の整数の変換

4.3.4 文字マトリックスの印刷

4.3.5 百の金と百の鶏の問題 

4.3.6 フィボナッチ数列

4.3.7 方程式を解くための反復法


序文

チャット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 言語の影響を受け、拡張および改良されています。

4. サイクルプログラミング

4.3 プログラミング例

4.3.1 2 つの数値の最大公約数を求める

#include <stdio.h>

int main() {
    int num1, num2;
    printf("请输入两个整数:");
    scanf("%d %d", &num1, &num2);

    int gcd;
    for (int i = 1; i <= num1 && i <= num2; i++) {
        if (num1 % i == 0 && num2 % i == 0) {
            gcd = i;
        }
    }

    printf("最大公因数是:%d\n", gcd);

    return 0;
}

4.3.2 階乗和

       ループを使用して一連の数値の階乗を計算し、それらを合計します。

#include <stdio.h>

int main() {
    int n;
    printf("请输入一个正整数:");
    scanf("%d", &n);

    int factorial = 1;
    int sum = 0;

    for (int i = 1; i <= n; i++) {
        factorial *= i;
        sum += factorial;
    }

    printf("阶乘和为:%d\n", sum);

    return 0;
}

4.3.3 正の整数の変換

        ループを使用して、正の整数を対応する文字列表現に変換します。

4.3.4 文字マトリックスの印刷

#include <stdio.h>

int main() {
    int size;
    printf("请输入方阵的大小:");
    scanf("%d", &size);

    if (size <= 0) {
        printf("无效的大小!请输入一个正整数。\n");
        return 0;
    }

    char character;
    printf("请输入要打印的字符:");
    scanf(" %c", &character);

    for (int i = 0; i < size; i++) {
        for (int j = 0; j < size; j++) {
            printf("%c ", character);
        }
        printf("\n");
    }

    return 0;
}

4.3.5 百の金と百の鶏の問題 

        数百枚のコインと数百羽のニワトリの問題は、網羅的方法によって解決できる古典的な数学の問題です。問題の説明は次のとおりです: 100 枚のコインと 100 羽の鶏があるとします。各雄鶏のコストは 5 コイン、雌鶏のコストは 3 コイン、鶏 3 羽のコストは 1 コインです。今、100 のお金で 100 羽の鶏を買いたいのですが、雄鶏、鶏、ひよこは何羽いますか?

#include <stdio.h>

int main() {
    printf("公鸡数量\t母鸡数量\t小鸡数量\n");

    for (int x = 0; x <= 20; x++) {
        for (int y = 0; y <= 33; y++) {
            int z = 100 - x - y;
            if (5 * x + 3 * y + z / 3 == 100 && z % 3 == 0) {
                printf("%d\t\t%d\t\t%d\n", x, y, z);
            }
        }
    }

    return 0;
}

4.3.6 フィボナッチ数列

#include <stdio.h>

int main() {
    int n = 10; // 需要计算斐波那契数列的项数
    int a = 0, b = 1, temp, i;

    printf("斐波那契数列前 %d 项:\n", n);
    printf("%d %d ", a, b);

    for (i = 2; i < n; i++) {
        temp = a + b;
        printf("%d ", temp);
        a = b;
        b = temp;
    }
    printf("\n");

    return 0;
}

4.3.7 方程式を解くための反復法

おすすめ

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