27.11 연습문제: for 반복문에서 변수 두 개 사용하기

다음 소스 코드를 완성하여 정수 2 5, 4 4, 8 3, 16 2, 32 1이 각 줄에 출력되게 만드세요.

practice_for_multiple_variable.c

#include <stdio.h>

int main()
{
    for (_____________________________________)
    {
        printf("%d %d\n", i, j);
    }

    return 0;
}

실행 결과

2 5
4 4
8 3
16 2
32 1

정답

int i = 2, j = 5; i <= 32; i *= 2, j--

해설

출력된 숫자의 규칙을 살펴보면 첫 번째 숫자는 2부터 크기가 두 배씩 늘어나고, 두 번째 숫자는 5부터 1씩 줄어듭니다. 따라서 변수를 두 개 선언한 뒤 반복할 때마다 2배씩 만들고, 1씩 감소시킵니다.

즉, 2부터 32까지 출력되며 2배씩 늘어나고, 5부터 1씩 감소하므로 for (int i = 2, j = 5; i <= 32; i *= 2, j--)와 같이 작성하면 됩니다. 또는 for (int i = 2, j = 5; i <= 32 || j >= 1; i *= 2, j--)과 같이 조건식에서 변수 ij를 검사하면서 || 논리 연산자를 사용해도 됩니다.