[C言語] アスタリスクで図形(三角形や四角形)を描く方法

C言語でアスタリスクを使って図形を描く方法は、主にループ構造を利用します。

例えば、三角形を描くには、forループを用いて行ごとにアスタリスクの数を増やしていくことで実現できます。

四角形の場合は、縦横のループを組み合わせて、各行に一定数のアスタリスクを出力します。

これにより、コンソール上に視覚的な図形を表示することが可能です。

この手法は、プログラミングの基礎を学ぶ上で、ループや条件分岐の理解を深めるのに役立ちます。

この記事でわかること
  • 等辺三角形と直角三角形の描画方法
  • 正方形と長方形の描画方法
  • 中空の図形を描く方法
  • ピラミッド型や菱形の図形を描く方法

目次から探す

三角形を描く方法

C言語でアスタリスクを使って三角形を描く方法について解説します。

ここでは、等辺三角形と直角三角形の描画方法を紹介します。

等辺三角形の描画

等辺三角形は、すべての辺の長さが等しい三角形です。

ここでは、基本的な等辺三角形の描き方と、特定の高さを指定した等辺三角形の描画方法を説明します。

基本的な等辺三角形の描き方

以下のコードは、基本的な等辺三角形を描画する方法を示しています。

#include <stdio.h>
int main() {
    int height = 5; // 三角形の高さ
    for (int i = 1; i <= height; i++) {
        // 空白を出力
        for (int j = i; j < height; j++) {
            printf(" ");
        }
        // アスタリスクを出力
        for (int k = 1; k <= (2 * i - 1); k++) {
            printf("*");
        }
        printf("\n");
    }
    return 0;
}
    *
   ***
  *****
 *******
*********

このプログラムは、指定した高さの等辺三角形を描画します。

空白を調整することで、中央にアスタリスクが配置されるようにしています。

高さを指定した等辺三角形の描画

高さをユーザーから入力して等辺三角形を描画する方法を示します。

#include <stdio.h>
int main() {
    int height;
    printf("三角形の高さを入力してください: ");
    scanf("%d", &height);
    for (int i = 1; i <= height; i++) {
        for (int j = i; j < height; j++) {
            printf(" ");
        }
        for (int k = 1; k <= (2 * i - 1); k++) {
            printf("*");
        }
        printf("\n");
    }
    return 0;
}
三角形の高さを入力してください: 3
  *
 ***
*****

このプログラムでは、ユーザーが入力した高さに基づいて等辺三角形を描画します。

直角三角形の描画

直角三角形は、1つの角が90度の三角形です。

ここでは、基本的な直角三角形の描き方と、直角の位置を変えた三角形の描画方法を説明します。

基本的な直角三角形の描き方

以下のコードは、基本的な直角三角形を描画する方法を示しています。

#include <stdio.h>
int main() {
    int height = 5; // 三角形の高さ
    for (int i = 1; i <= height; i++) {
        for (int j = 1; j <= i; j++) {
            printf("*");
        }
        printf("\n");
    }
    return 0;
}
*
**
***
****
*****

このプログラムは、左下に直角がある直角三角形を描画します。

直角の位置を変えた三角形の描画

直角を右下に配置した三角形を描画する方法を示します。

#include <stdio.h>
int main() {
    int height = 5; // 三角形の高さ
    for (int i = 1; i <= height; i++) {
        for (int j = i; j < height; j++) {
            printf(" ");
        }
        for (int k = 1; k <= i; k++) {
            printf("*");
        }
        printf("\n");
    }
    return 0;
}
*
   **
  ***
 ****
*****

このプログラムは、右下に直角がある直角三角形を描画します。

空白を調整することで、アスタリスクが右側に寄るようにしています。

四角形を描く方法

C言語でアスタリスクを使って四角形を描く方法について解説します。

ここでは、正方形と長方形の描画方法を紹介します。

正方形の描画

正方形は、すべての辺の長さが等しい四角形です。

ここでは、基本的な正方形の描き方と、特定のサイズを指定した正方形の描画方法を説明します。

基本的な正方形の描き方

以下のコードは、基本的な正方形を描画する方法を示しています。

#include <stdio.h>
int main() {
    int size = 5; // 正方形のサイズ
    for (int i = 0; i < size; i++) {
        for (int j = 0; j < size; j++) {
            printf("*");
        }
        printf("\n");
    }
    return 0;
}
*****
*****
*****
*****
*****

このプログラムは、指定したサイズの正方形を描画します。

各行に同じ数のアスタリスクを出力することで正方形を形成します。

サイズを指定した正方形の描画

サイズをユーザーから入力して正方形を描画する方法を示します。

#include <stdio.h>
int main() {
    int size;
    printf("正方形のサイズを入力してください: ");
    scanf("%d", &size);
    for (int i = 0; i < size; i++) {
        for (int j = 0; j < size; j++) {
            printf("*");
        }
        printf("\n");
    }
    return 0;
}
正方形のサイズを入力してください: 3
***
***
***

このプログラムでは、ユーザーが入力したサイズに基づいて正方形を描画します。

長方形の描画

長方形は、対辺が等しい四角形です。

ここでは、基本的な長方形の描き方と、幅と高さを指定した長方形の描画方法を説明します。

基本的な長方形の描き方

以下のコードは、基本的な長方形を描画する方法を示しています。

#include <stdio.h>
int main() {
    int width = 7;  // 長方形の幅
    int height = 3; // 長方形の高さ
    for (int i = 0; i < height; i++) {
        for (int j = 0; j < width; j++) {
            printf("*");
        }
        printf("\n");
    }
    return 0;
}
*******
*******
*******

このプログラムは、指定した幅と高さの長方形を描画します。

各行に幅の数だけアスタリスクを出力することで長方形を形成します。

幅と高さを指定した長方形の描画

幅と高さをユーザーから入力して長方形を描画する方法を示します。

#include <stdio.h>
int main() {
    int width, height;
    printf("長方形の幅を入力してください: ");
    scanf("%d", &width);
    printf("長方形の高さを入力してください: ");
    scanf("%d", &height);
    for (int i = 0; i < height; i++) {
        for (int j = 0; j < width; j++) {
            printf("*");
        }
        printf("\n");
    }
    return 0;
}
長方形の幅を入力してください: 4
長方形の高さを入力してください: 2
****
****

このプログラムでは、ユーザーが入力した幅と高さに基づいて長方形を描画します。

応用例

ここでは、アスタリスクを使った図形描画の応用例を紹介します。

中空の図形やピラミッド型、菱形の描画方法を解説します。

中空の図形を描く方法

中空の図形は、外枠だけが描かれた図形です。

ここでは、中空の正方形と長方形の描画方法を説明します。

中空の正方形の描画

以下のコードは、中空の正方形を描画する方法を示しています。

#include <stdio.h>
int main() {
    int size = 5; // 正方形のサイズ
    for (int i = 0; i < size; i++) {
        for (int j = 0; j < size; j++) {
            if (i == 0 || i == size - 1 || j == 0 || j == size - 1) {
                printf("*");
            } else {
                printf(" ");
            }
        }
        printf("\n");
    }
    return 0;
}
*****
*   *
*   *
*   *
*****

このプログラムは、外枠だけがアスタリスクで描かれた中空の正方形を描画します。

中空の長方形の描画

以下のコードは、中空の長方形を描画する方法を示しています。

#include <stdio.h>
int main() {
    int width = 7;  // 長方形の幅
    int height = 4; // 長方形の高さ
    for (int i = 0; i < height; i++) {
        for (int j = 0; j < width; j++) {
            if (i == 0 || i == height - 1 || j == 0 || j == width - 1) {
                printf("*");
            } else {
                printf(" ");
            }
        }
        printf("\n");
    }
    return 0;
}
*******
*     *
*     *
*******

このプログラムは、外枠だけがアスタリスクで描かれた中空の長方形を描画します。

ピラミッド型の図形を描く方法

ピラミッド型の図形は、底辺が広く、上に行くほど狭くなる形状です。

ここでは、基本的なピラミッドの描き方と、特定の高さを指定したピラミッドの描画方法を説明します。

基本的なピラミッドの描き方

以下のコードは、基本的なピラミッドを描画する方法を示しています。

#include <stdio.h>
int main() {
    int height = 5; // ピラミッドの高さ
    for (int i = 1; i <= height; i++) {
        for (int j = i; j < height; j++) {
            printf(" ");
        }
        for (int k = 1; k <= (2 * i - 1); k++) {
            printf("*");
        }
        printf("\n");
    }
    return 0;
}
    *
   ***
  *****
 *******
*********

このプログラムは、指定した高さのピラミッドを描画します。

高さを指定したピラミッドの描画

高さをユーザーから入力してピラミッドを描画する方法を示します。

#include <stdio.h>
int main() {
    int height;
    printf("ピラミッドの高さを入力してください: ");
    scanf("%d", &height);
    for (int i = 1; i <= height; i++) {
        for (int j = i; j < height; j++) {
            printf(" ");
        }
        for (int k = 1; k <= (2 * i - 1); k++) {
            printf("*");
        }
        printf("\n");
    }
    return 0;
}
ピラミッドの高さを入力してください: 3
  *
 ***
*****

このプログラムでは、ユーザーが入力した高さに基づいてピラミッドを描画します。

菱形の図形を描く方法

菱形は、対角線が互いに直角に交わる四辺形です。

ここでは、基本的な菱形の描き方と、特定のサイズを指定した菱形の描画方法を説明します。

基本的な菱形の描き方

以下のコードは、基本的な菱形を描画する方法を示しています。

#include <stdio.h>
int main() {
    int size = 5; // 菱形のサイズ
    for (int i = 1; i <= size; i++) {
        for (int j = i; j < size; j++) {
            printf(" ");
        }
        for (int k = 1; k <= (2 * i - 1); k++) {
            printf("*");
        }
        printf("\n");
    }
    for (int i = size - 1; i >= 1; i--) {
        for (int j = size; j > i; j--) {
            printf(" ");
        }
        for (int k = 1; k <= (2 * i - 1); k++) {
            printf("*");
        }
        printf("\n");
    }
    return 0;
}
    *
   ***
  *****
 *******
*********
 *******
  *****
   ***
    *

このプログラムは、指定したサイズの菱形を描画します。

サイズを指定した菱形の描画

サイズをユーザーから入力して菱形を描画する方法を示します。

#include <stdio.h>
int main() {
    int size;
    printf("菱形のサイズを入力してください: ");
    scanf("%d", &size);
    for (int i = 1; i <= size; i++) {
        for (int j = i; j < size; j++) {
            printf(" ");
        }
        for (int k = 1; k <= (2 * i - 1); k++) {
            printf("*");
        }
        printf("\n");
    }
    for (int i = size - 1; i >= 1; i--) {
        for (int j = size; j > i; j--) {
            printf(" ");
        }
        for (int k = 1; k <= (2 * i - 1); k++) {
            printf("*");
        }
        printf("\n");
    }
    return 0;
}
菱形のサイズを入力してください: 3
  *
 ***
*****
 ***
  *

このプログラムでは、ユーザーが入力したサイズに基づいて菱形を描画します。

よくある質問

ループを使わずに図形を描くことは可能ですか?

ループを使わずに図形を描くことは可能ですが、非常に非効率的です。

ループを使わない場合、各行の出力を手動で記述する必要があります。

例えば、正方形を描く場合、printf("*****\n*****\n*****\n*****\n*****\n");のようにすべての行を個別に書くことになります。

ループを使うことで、コードの可読性と保守性が向上します。

図形のサイズを動的に変更するにはどうすればいいですか?

図形のサイズを動的に変更するには、ユーザーからの入力を受け取る方法が一般的です。

scanf関数を使用して、ユーザーにサイズを入力してもらい、その値を変数に格納します。

その変数をループの条件に使用することで、図形のサイズを動的に変更できます。

例:scanf("%d", &size);でサイズを取得し、forループでsizeを使用します。

アスタリスク以外の文字で図形を描くことはできますか?

アスタリスク以外の文字で図形を描くことは可能です。

printf関数で出力する文字を変更するだけで、任意の文字を使用できます。

例えば、printf("#");とすることで、アスタリスクの代わりにシャープ記号を使用して図形を描くことができます。

出力する文字を変数として定義し、柔軟に変更できるようにすることも可能です。

まとめ

この記事では、C言語を用いてアスタリスクでさまざまな図形を描く方法を解説しました。

基本的な三角形や四角形の描画から、応用的な中空図形やピラミッド、菱形の描画までをカバーしました。

これらの知識を活用して、より複雑な図形やパターンを描くことに挑戦してみてください。

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