Computer >> 컴퓨터 >  >> 프로그래밍 >> C 프로그래밍

C 언어로 피라미드·직각삼각형 패턴 출력하기: 반복문 활용 예제


문제 상황

C 언어에서 피라미드나 직각삼각형처럼 다양한 형태(패턴)로 숫자를 출력하려면 어떤 논리를 사용해야 할까요?

해결 방법

숫자나 기호를 여러 가지 모양으로 출력하려면 for 반복문을 활용하면 됩니다. 핵심은 중첩 반복문(nested loop)입니다.

  • 바깥쪽 반복문: 전체 줄(행)의 개수를 제어합니다.
  • 안쪽 반복문: 각 줄에 출력될 공백이나 문자의 개수를 제어합니다.

예제 1: 피라미드 패턴 출력하기

다음은 별표(*)로 피라미드 모양을 출력하는 C 프로그램입니다.

#include <stdio.h>
int main(){
    int n;
    printf("Enter number of lines: ");
    scanf("%d", &n);
    printf("\n");
    // 줄 수만큼 반복하는 바깥쪽 루프
    for(int i = 1; i <= n; i++){
        // 각 줄 앞에 들어갈 공백을 출력하는 루프
        for(int space = 0; space <= n - i; space++){
            printf(" ");
        }
        // 별표(*)를 출력하는 루프
        for(int j = 1; j <= i * 2 - 1; j++){
            printf(" * ");
        }
        printf("\n");
    }
    return 0;
}

동작 원리: i번째 줄에서는 먼저 n−i개의 공백을 출력한 뒤, 2×i−1개의 별표를 출력합니다. 이 규칙 덕분에 위쪽은 좁고 아래쪽은 넓은 대칭형 피라미드가 완성됩니다.

실행 결과

Enter number of lines: 8
                *
              * * *
            * * * * *
          * * * * * * *
        * * * * * * * * *
      * * * * * * * * * * *
    * * * * * * * * * * * * *
  * * * * * * * * * * * * * * *

예제 2: 직각삼각형 패턴으로 숫자 출력하기

다음은 숫자를 직각삼각형 형태로 출력하는 프로그램입니다.

#include <stdio.h>
void main(){
    int i, j, rows;
    printf("Input number of rows : ");
    scanf("%d", &rows);
    for(i = 1; i <= rows; i++){
        for(j = 1; j <= i; j++)
            printf("%d", j);
        printf("\n");
    }
}

동작 원리: 바깥쪽 루프 변수 i는 현재 줄 번호를 나타내고, 안쪽 루프는 1부터 i까지의 숫자를 한 줄에 이어서 출력합니다. 그 결과 첫째 줄에는 '1', 둘째 줄에는 '12'처럼 줄이 내려갈수록 숫자가 하나씩 늘어나며 직각삼각형 모양이 만들어집니다.

실행 결과

Input number of rows : 10
1
12
123
1234
12345
123456
1234567
12345678
123456789
12345678910

마무리

이처럼 중첩 for 반복문과 각 줄의 출력 개수를 조절하는 규칙만 잘 세우면 피라미드, 직각삼각형은 물론 다이아몬드, 역삼각형 등 다양한 패턴도 쉽게 구현할 수 있습니다. 패턴 출력 문제는 반복문과 조건문 감각을 기르는 데 매우 좋은 연습 소재이므로, 직접 코드를 수정해 가며 여러 가지 모양을 만들어 보시길 권합니다.