30.6 연습문제: 역삼각형 모양으로 별 출력하기

다음 소스 코드를 완성하여 역삼각형 모양으로 별이 출력되게 만드세요.

practice_star_inverted_triangle.c

#include <stdio.h>

int main()
{
    for (int i = 0; i < 5; i++)
    {
        for (int j = 0; j < 5; j++)
        {
            ____________________
            ...
            ____________________
        }
        printf("\n");
    }
    return 0;
}

실행 결과

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

정답

if (j < i)
    printf(" ");
else
    printf("*");

해설

먼저 별을 출력하는 조건식을 세우려면 출력된 모양을 분석해야 합니다. 윗부분이 넓고 아래로 갈수록 좁아지는 삼각형 모양인데 공백 부분이 하나씩 늘어나고 있습니다.

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

공백 부분은 세로 방향인 줄의 위치에 비례하므로 조건식도 세로 방향 변수 i에 맞추어 작성합니다. 단, 여기서는 i보다 j가 1이 작은 상황입니다. 따라서 조건식은 if (j < i)와 같이 가로 방향으로 공백을 출력할 때는 세로 방향의 변수보다 작을 때까지 출력하고, 반대되는 조건에서는 별을 출력하면 됩니다.