[C言語] アスタリスク(*)を階段状に表示する方法

C言語でアスタリスクを階段状に表示するには、二重ループを使用します。

外側のループは行数を制御し、内側のループは各行に表示するアスタリスクの数を制御します。

例えば、外側のループで変数iを0から指定した行数までインクリメントし、内側のループで変数jを0からiまでインクリメントすることで、各行にi個のアスタリスクを表示できます。

この方法を使うと、アスタリスクが階段状に増えていくパターンを簡単に作成できます。

この記事でわかること
  • forループ、whileループ、do-whileループを使った階段状の表示方法
  • 逆階段状、ピラミッド型、ダイヤモンド型の表示方法
  • ループを使う理由とインデントの調整方法
  • 他の記号を使ったパターン表示の応用例

目次から探す

C言語での実装方法

C言語でアスタリスク(*)を階段状に表示する方法について解説します。

ここでは、forループ、whileループ、do-whileループを使った3つの実装方法を紹介します。

forループを使った実装

forループを使うと、繰り返し処理を簡潔に記述できます。

以下は、forループを使ってアスタリスクを階段状に表示するサンプルコードです。

#include <stdio.h>
int main() {
    int i, j;
    int steps = 5; // 階段の段数
    // 外側のループは段数を制御
    for (i = 1; i <= steps; i++) {
        // 内側のループは各段のアスタリスクを制御
        for (j = 1; j <= i; j++) {
            printf("*");
        }
        printf("\n"); // 各段の終わりで改行
    }
    return 0;
}
*
**
***
****
*****

このプログラムは、forループを使って、1段目から5段目までのアスタリスクを順に表示します。

外側のループで段数を制御し、内側のループで各段のアスタリスクの数を制御しています。

whileループを使った実装

whileループを使うと、条件が真の間、繰り返し処理を行います。

以下は、whileループを使った実装例です。

#include <stdio.h>
int main() {
    int i = 1, j;
    int steps = 5; // 階段の段数
    // 外側のループは段数を制御
    while (i <= steps) {
        j = 1;
        // 内側のループは各段のアスタリスクを制御
        while (j <= i) {
            printf("*");
            j++;
        }
        printf("\n"); // 各段の終わりで改行
        i++;
    }
    return 0;
}
*
**
***
****
*****

このプログラムでは、whileループを使って同様にアスタリスクを階段状に表示します。

forループと異なり、ループ変数の初期化と更新を手動で行う必要があります。

do-whileループを使った実装

do-whileループは、少なくとも一度はループ内の処理を実行します。

以下は、do-whileループを使った実装例です。

#include <stdio.h>
int main() {
    int i = 1, j;
    int steps = 5; // 階段の段数
    // 外側のループは段数を制御
    do {
        j = 1;
        // 内側のループは各段のアスタリスクを制御
        do {
            printf("*");
            j++;
        } while (j <= i);
        printf("\n"); // 各段の終わりで改行
        i++;
    } while (i <= steps);
    return 0;
}
*
**
***
****
*****

このプログラムは、do-whileループを使ってアスタリスクを階段状に表示します。

do-whileループは、条件を後で評価するため、少なくとも一度はループ内の処理が実行されます。

応用例

アスタリスクを階段状に表示する基本的な方法を学んだところで、次にその応用例を紹介します。

ここでは、逆階段状、ピラミッド型、ダイヤモンド型にアスタリスクを表示する方法を解説します。

逆階段状に表示する方法

逆階段状に表示するには、段数が減少するようにアスタリスクを配置します。

以下はそのサンプルコードです。

#include <stdio.h>
int main() {
    int i, j;
    int steps = 5; // 階段の段数
    // 外側のループは段数を制御
    for (i = steps; i >= 1; i--) {
        // 内側のループは各段のアスタリスクを制御
        for (j = 1; j <= i; j++) {
            printf("*");
        }
        printf("\n"); // 各段の終わりで改行
    }
    return 0;
}
*****
****
***
**
*

このプログラムでは、外側のループで段数を減少させ、内側のループで各段のアスタリスクの数を制御しています。

ピラミッド型に表示する方法

ピラミッド型に表示するには、各段の中央にアスタリスクを配置し、左右にスペースを追加します。

以下はそのサンプルコードです。

#include <stdio.h>
int main() {
    int i, j, k;
    int steps = 5; // ピラミッドの高さ
    // 外側のループは段数を制御
    for (i = 1; i <= steps; i++) {
        // スペースを出力
        for (j = i; j < steps; j++) {
            printf(" ");
        }
        // アスタリスクを出力
        for (k = 1; k <= (2 * i - 1); k++) {
            printf("*");
        }
        printf("\n"); // 各段の終わりで改行
    }
    return 0;
}
    *
   ***
  *****
 *******
*********

このプログラムでは、各段の前にスペースを出力し、その後にアスタリスクを出力することでピラミッド型を形成しています。

ダイヤモンド型に表示する方法

ダイヤモンド型は、ピラミッド型を上下に組み合わせた形です。

以下はそのサンプルコードです。

#include <stdio.h>
int main() {
    int i, j, k;
    int steps = 5; // ダイヤモンドの半分の高さ
    // 上半分のピラミッド
    for (i = 1; i <= steps; i++) {
        for (j = i; j < steps; j++) {
            printf(" ");
        }
        for (k = 1; k <= (2 * i - 1); k++) {
            printf("*");
        }
        printf("\n");
    }
    // 下半分の逆ピラミッド
    for (i = steps - 1; i >= 1; i--) {
        for (j = steps; j > i; j--) {
            printf(" ");
        }
        for (k = 1; k <= (2 * i - 1); k++) {
            printf("*");
        }
        printf("\n");
    }
    return 0;
}
    *
   ***
  *****
 *******
*********
 *******
  *****
   ***
    *

このプログラムは、上半分のピラミッドと下半分の逆ピラミッドを組み合わせてダイヤモンド型を形成しています。

各段のスペースとアスタリスクの数を調整することで、形を整えています。

よくある質問

なぜループを使うのですか?

ループを使う理由は、同じ処理を繰り返し実行するためです。

アスタリスクを階段状に表示する場合、各段に異なる数のアスタリスクを出力する必要があります。

ループを使うことで、段数に応じたアスタリスクの数を効率的に制御できます。

例えば、forループを使うと、for (i = 1; i <= steps; i++)のように段数を簡単に管理できます。

インデントを調整する方法は?

インデントを調整するには、スペースやタブを使って出力位置を制御します。

例えば、ピラミッド型を表示する際には、各段の前にスペースを出力してアスタリスクを中央に配置します。

具体的には、for (j = i; j < steps; j++) { printf(" "); }のようにスペースを出力するループを追加します。

これにより、アスタリスクの位置を調整できます。

他の記号でも同じ方法で表示できますか?

はい、他の記号でも同じ方法で表示できます。

アスタリスクの代わりに任意の記号を使うには、printf("*");の部分をprintf("#");のように変更するだけです。

これにより、アスタリスクの代わりにシャープ記号が表示されます。

記号を変更することで、さまざまなパターンを作成できます。

まとめ

この記事では、C言語を使ってアスタリスクを階段状に表示する方法とその応用例を紹介しました。

ループを活用することで、効率的にパターンを生成できることがわかりました。

これを機に、他の記号や形状を試して、プログラミングの理解を深めてみてください。

  • URLをコピーしました!
目次から探す