[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;
}
*
***
*****
*******
*********
*******
*****
***
*
このプログラムは、上半分のピラミッドと下半分の逆ピラミッドを組み合わせてダイヤモンド型を形成しています。
各段のスペースとアスタリスクの数を調整することで、形を整えています。
よくある質問
まとめ
この記事では、C言語を使ってアスタリスクを階段状に表示する方法とその応用例を紹介しました。
ループを活用することで、効率的にパターンを生成できることがわかりました。
これを機に、他の記号や形状を試して、プログラミングの理解を深めてみてください。