30.2 사각형으로 별 출력하기

이제 중첩된 반복문을 사용하여 5x5 사각형 형태로 별을 그려보겠습니다. 다음 내용을 소스 코드 편집 창에 입력한 뒤 실행해보세요.

star_square.c

#include <stdio.h>

int main()
{
    for (int i = 0; i < 5; i++)    // 5번 반복. 바깥쪽 루프는 세로 방향
    {
        for (int j = 0; j < 5; j++)    // 5번 반복. 안쪽 루프는 가로 방향
        {
            printf("*");               // 별 출력
        }
        printf("\n");              // 가로 방향으로 별을 다 그린 뒤 다음 줄로 넘어감
    }

    return 0;
}

실행 결과

*****
*****
*****
*****
*****

먼저 안쪽의 for (int j = 0; j < 5; j++) 반복문에서 printf로 별을 그리면 다음과 같이 가로 방향으로 별이 나열됩니다.

그림 30‑1 반복문 j

printf에서 \n과 같은 제어 문자를 사용하지 않고 출력하면 오른쪽 방향으로 문자가 계속 붙는 특성을 이용한 것입니다.

바깥쪽의 for (int i = 0; i < 5; i++) 반복문은 안쪽 for (int j = 0; j < 5; j++) 반복문을 실행하면서 별을 5개씩 그립니다. 그리고 printf로 제어 문자 \n을 출력한 뒤 다음 줄에서 다시 별을 5개씩 그립니다. 이렇게 반복하면서 별을 5개씩 5줄 쌓아나갑니다.

그림 30‑2 반복문 i

콘솔에서는 위에서 아래로 출력되기 때문에 별을 그릴 때도 아래 방향으로 그리게 됩니다.

이제 for 반복문의 조건식을 수정하여 사각형의 모양을 바꿔보겠습니다.

star_rectangle.c

#include <stdio.h>

int main()
{
    for (int i = 0; i < 3; i++)    // 3번 반복. 세로 방향
    {
        for (int j = 0; j < 7; j++)   // 7번 반복. 가로 방향
        {
            printf("*");              // 별 출력
        }
        printf("\n");              // 가로 방향으로 별을 다 그린 뒤 다음 줄로 넘어감
    }

    return 0;
}

실행 결과

*******
*******
*******

안쪽 반복문은 7번 반복하고, 바깥쪽 반복문은 3번 반복하도록 수정하였습니다. 즉, 가로 방향으로 별을 7개 그리고, 세로 방향으로 3줄을 출력합니다. 각자 반복문 조건식의 숫자를 바꿔서 다양한 크기로 출력해보세요.