30.3 계단식으로 별 출력하기

계단식으로 별을 출력하려면 어떻게 해야 할까요? 앞에서 사각형 모양으로 별을 출력할 때는 사각형에 꽉 채워서 별을 출력하지만, 계단식으로 출력할 때는 별을 출력하지 않는 부분이 있으므로 조건문으로 printf를 제어해야 합니다.

for (int i = 0; i < 5; i++)    // 5번 반복. 세로 방향
{
    for (int j = 0; j < 5; j++)    // 5번 반복. 가로 방향
    {
        //        ↓ 별 출력을 제어하기 위한 조건문
        if (              )
            printf("*");           // 별 출력
    }  
    printf("\n");              // 가로 방향으로 별을 다 그린 뒤 다음 줄로 넘어감
}

첫 번째 줄에는 별이 한 개, 두 번째 줄에는 별이 두 개, 세 번째 줄에는 별이 세 개, 네 번째 줄에는 별이 네 개, 다섯 번째 줄에는 별이 다섯 개입니다.

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

즉, 별의 개수는 세로 방향인 줄의 위치에 비례하므로 조건식도 세로 방향 변수 i에 맞추어 작성합니다.

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

조건식은 if (j <= i)와 같이 작성하여 가로 방향(j)으로 별을 출력할 때는 세로 방향(i)의 변수만큼 출력하면 됩니다. 즉, i가 증가하면 i만큼 별이 늘어나게 됩니다.

조건식 작성이 끝났으니 다음 내용을 소스 코드 편집 창에 입력한 뒤 실행해보세요.

star_triangle.c

#include <stdio.h>

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

    return 0;
}

실행 결과

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

소스 코드를 컴파일한 뒤 실행을 해보면 계단식으로 별이 출력되는 것을 볼 수 있습니다.