C언어 초급 - 7장: 반복문 (7.2 do-while 문)

2025. 2. 23. 19:08프로그래밍 언어/C

7.2 do-while 문

C 언어에서 do-while 문조건을 확인하기 전에 코드 블록을 최소 한 번 실행하는 반복문입니다.
즉, 일반적인 while 문과 달리, 반복 조건이 false여도 최소 1회 실행이 보장됩니다.


1. do-while 문의 개념

  • while 문: 조건을 먼저 검사하고 실행 여부를 결정.
  • do-while 문: 한 번 실행 후 조건을 검사 → 조건이 참(true)이면 반복 실행.

📌 while 문과의 차이점

반복문  실행 순서 최소 실행 횟수
while 조건 검사 → 참이면 실행 0번 이상
do-while 실행 → 조건 검사 → 참이면 반복 1번 이상

2. do-while 문의 기본 구조

do {
    // 실행할 코드
} while (조건);

📌 while (조건); 뒤에 세미콜론(;)이 필요함!
📌 최소 한 번 실행한 후 조건을 검사하여 반복 여부 결정.


3. do-while 문 예제

3.1 최소 한 번 실행되는 반복문

아래 코드는 1부터 5까지 출력하는 프로그램입니다.

#include <stdio.h>

int main() {
    int i = 1;

    do {
        printf("%d\n", i);
        i++;
    } while (i <= 5);

    return 0;
}

출력 결과

1
2
3
4
5

📌 설명

  • do 블록 실행 (i = 1 출력).
  • i++ 실행 (i = 2).
  • while (i <= 5) 조건 확인 → 참(true)이면 반복.

4. do-while 문과 while 문의 차이

4.1 조건이 처음부터 false일 경우

아래 코드를 비교해 보겠습니다.

(1) while 문

#include <stdio.h>

int main() {
    int i = 10;

    while (i < 5) { // 조건이 처음부터 false
        printf("%d\n", i);
        i++;
    }

    return 0;
}

출력 결과

(아무것도 출력되지 않음)

📌 while 문은 조건이 거짓(false)이면 한 번도 실행되지 않음.


(2) do-while 문

#include <stdio.h>

int main() {
    int i = 10;

    do {
        printf("%d\n", i);
        i++;
    } while (i < 5);

    return 0;
}

출력 결과

10

📌 설명

  • do 블록을 실행(i = 10 출력) → 최소 한 번 실행.
  • while (i < 5) 조건 확인 → 거짓(false).
  • 반복 종료.

5. 사용자 입력을 받는 do-while 예제

5.1 올바른 값이 입력될 때까지 반복

사용자가 0~100 사이의 점수를 입력할 때까지 반복하는 프로그램입니다.

#include <stdio.h>

int main() {
    int score;

    do {
        printf("점수를 입력하세요 (0~100): ");
        scanf("%d", &score);
    } while (score < 0 || score > 100);

    printf("입력한 점수: %d\n", score);

    return 0;
}

실행 예시

점수를 입력하세요 (0~100): 150
점수를 입력하세요 (0~100): -5
점수를 입력하세요 (0~100): 85
입력한 점수: 85

📌 설명

  • 첫 번째 입력이 0~100 범위를 벗어나면 계속 입력 요청.
  • do 블록을 최소 한 번 실행 후 조건 검사.
  • 올바른 값(0~100)을 입력하면 반복 종료.

6. do-while 문을 활용한 비밀번호 확인 시스템

6.1 올바른 비밀번호를 입력할 때까지 반복

사용자가 1234를 입력할 때까지 반복하는 프로그램입니다.

#include <stdio.h>

int main() {
    int password;

    do {
        printf("비밀번호를 입력하세요: ");
        scanf("%d", &password);
    } while (password != 1234);

    printf("비밀번호가 확인되었습니다.\n");

    return 0;
}

실행 예시

비밀번호를 입력하세요: 1111
비밀번호를 입력하세요: 2222
비밀번호를 입력하세요: 1234
비밀번호가 확인되었습니다.

📌 설명

  • 최소 한 번 실행 후 비밀번호 검사.
  • 비밀번호가 틀리면 다시 입력 요청.
  • 올바른 비밀번호를 입력하면 do-while 문 종료.

7. do-while 문과 while 문 비교

반복문 실행 순서 최소 실행 횟수 사용 예제
while 조건 검사 → 참이면 실행 0번 이상 사용자 입력 값이 유효한 경우에 실행
do-while 실행 → 조건 검사 → 참이면 반복 1번 이상 사용자 입력이 필요한 경우, 메뉴 반복

📌 언제 do-while을 사용해야 할까?

  • 사용자 입력이 최소 한 번 필요할 때 (비밀번호 입력, 메뉴 선택)
  • 조건이 처음엔 false여도 한 번 실행해야 하는 경우

8. do-while 문을 활용한 간단한 메뉴 시스템

8.1 사용자가 0을 입력하면 종료되는 프로그램

#include <stdio.h>

int main() {
    int choice;

    do {
        printf("\n===== 메뉴 =====\n");
        printf("1. 게임 시작\n");
        printf("2. 설정\n");
        printf("3. 종료\n");
        printf("메뉴를 선택하세요 (1~3, 0 입력 시 종료): ");
        scanf("%d", &choice);

        switch (choice) {
            case 1:
                printf("게임을 시작합니다!\n");
                break;
            case 2:
                printf("설정 화면으로 이동합니다.\n");
                break;
            case 3:
                printf("게임을 종료합니다.\n");
                break;
            case 0:
                printf("프로그램을 종료합니다.\n");
                break;
            default:
                printf("잘못된 입력입니다. 다시 선택하세요.\n");
        }
    } while (choice != 0);

    return 0;
}

실행 예시

===== 메뉴 =====
1. 게임 시작
2. 설정
3. 종료
메뉴를 선택하세요 (1~3, 0 입력 시 종료): 1
게임을 시작합니다!

===== 메뉴 =====
1. 게임 시작
2. 설정
3. 종료
메뉴를 선택하세요 (1~3, 0 입력 시 종료): 0
프로그램을 종료합니다.

📌 설명

  • do-while 문을 사용하여 최소 한 번 메뉴를 표시.
  • 0을 입력하면 프로그램 종료.

9. 정리

개념  설명 예제
do-while 최소 한 번 실행 후 조건 검사 do { 실행코드 } while (조건);
최소 실행 횟수 1회 이상 do { printf("Hello"); } while (0);
일반 while과 차이 while은 조건 검사 후 실행 while (조건) { 실행 }

📌 사용자가 반드시 입력해야 하는 경우 → do-while 사용
📌 조건이 처음에 false여도 실행이 필요한 경우 → do-while 사용