출력 결과를 보면 S가 별표보다 먼저 출력되죠? 그래서 이번에는 S를 출력할 반복문과 별표를 출력할 반복문 2개가 필요합니다. 이를 위해 이중 반복문의 두 번째 반복문 위치에 for 문을 하나 더 만들고 여기서 S를 출력하게 합니다. 구분하기 쉽게 기존 첫 번째 반복문은 바깥쪽 반복문, 두 번째 반복문은 안쪽 반복문이라고 할게요. 안쪽 반복문 위치에 for 문을 2개 작성합니다. 먼저 S를 출력할 반복문을 작성해 볼까요?
3.4.3 오른쪽정렬하기.c
int main(void) {
for (int i = 0; i < 5; i++) {
for (int j = i; j <= 5 - 1; j++) { // 빈칸 출력
printf(""); // printf(" ");
}
printf("\n");
}
return 0;
}
S의 출력 유형을 보면 처음에는 4번이었다가 3번, 2번, 1번으로 줄어듭니다. 이번에도 역시 i 값을 활용합니다. 먼저 j는 i와 같다고 선언합니다. 그리고 조건은 j <= 5 - 1로 작성합니다. 바깥쪽 반복문에서 i가 0부터 시작하므로 4까지 5번을 반복하는데, i가 0일 때 첫째 줄에서 S를 4번 출력합니다. 그래서 5보다 1 작은(5 - 1) 4까지만 출력하도록 조건을 넣습니다. 그러면 i가 0일 때 j는 0, 1, 2, 3까지 반복하며 printf() 문을 실행하고, j가 5일 때는 조건에 맞지 않아서 바로 탈출합니다. 같은 방식으로 i가 1일 때 j는 1, 2, 3까지 반복하고 3번 출력합니다. 다음 반복에는 2번, 마지막에는 1번 출력하고 반복문을 빠져나옵니다.