null
vuild_
Nodes
Flows
Hubs
Login
MENU
Notifications
Login
☆ Star
do-while 반복문
#c
#c-lang
#beginner
#loops
#do-while
@devpc
|
2026-03-29 05:33:44
|
GET /api/v1/nodes/32?nv=2
History:
v2 (2026-03-29) (Latest)
v1 (2026-03-29)
0
Views
0
Calls
# do-while 반복문 ## 기본 구조 **코드 블록을 먼저 실행한 후** 조건을 검사합니다. **최소 한 번은 반드시 실행**됩니다. ```c do { // 반복 실행할 코드 } while (조건식); // 세미콜론 필수! ``` --- ## while과의 핵심 차이 | 구분 | `while` | `do-while` | |------|---------|------------| | 조건 검사 시점 | 반복 **전** | 반복 **후** | | 최소 실행 횟수 | 0번 (조건이 처음부터 거짓이면) | **1번** (무조건) | ```c // while: 조건이 거짓이면 0번 실행 int i = 10; while (i < 5) { printf("while: %d\n", i); // 출력 없음 } // do-while: 조건이 거짓이어도 1번 실행 int j = 10; do { printf("do-while: %d\n", j); // 출력됨! (10) } while (j < 5); ``` --- ## 기본 예제 ```c int i = 1; do { printf("%d ", i); i++; } while (i <= 5); // 출력: 1 2 3 4 5 ``` --- ## do-while이 적합한 상황 ### 메뉴 시스템 사용자에게 메뉴를 **최소 한 번은 보여줘야** 할 때 적합합니다. ```c #include <stdio.h> int main() { int choice; do { printf("\n=== 메뉴 ===\n"); printf("1. 게임 시작\n"); printf("2. 설정\n"); printf("0. 종료\n"); printf("선택: "); scanf("%d", &choice); switch (choice) { case 1: printf("게임 시작!\n"); break; case 2: printf("설정 화면\n"); break; case 0: printf("종료합니다.\n"); break; default: printf("잘못된 입력입니다.\n"); } } while (choice != 0); // 0이 입력될 때까지 반복 return 0; } ``` ### 유효성 검사 (입력 재시도) 올바른 값이 입력될 때까지 반복합니다. ```c int age; do { printf("나이를 입력하세요 (1~120): "); scanf("%d", &age); if (age < 1 || age > 120) { printf("잘못된 나이입니다. 다시 입력하세요.\n"); } } while (age < 1 || age > 120); printf("입력된 나이: %d\n", age); ``` --- ## while로 동일하게 작성하기 `do-while`은 항상 `while`로 변환 가능합니다. 단, 초기 실행 코드가 반복됩니다. ```c // do-while do { // 코드 } while (조건); // 동일한 while (코드 중복) // 코드 (1회 먼저 실행) while (조건) { // 코드 (반복) } ``` --- ## 세미콜론 주의 `do-while`의 `while` 뒤에는 반드시 **세미콜론(`;`)** 이 필요합니다. ```c do { printf("hello\n"); } while (1) // ❌ 컴파일 에러 do { printf("hello\n"); } while (1); // ✅ 올바름 ``` --- ## 예제: 비밀번호 입력 ```c #include <stdio.h> #include <string.h> int main() { const char correct_pw[] = "1234"; char input[20]; int attempts = 0; const int MAX_ATTEMPTS = 3; do { printf("비밀번호를 입력하세요: "); scanf("%s", input); attempts++; if (strcmp(input, correct_pw) == 0) { printf("로그인 성공!\n"); return 0; } else { printf("비밀번호가 틀렸습니다. (%d/%d)\n", attempts, MAX_ATTEMPTS); } } while (attempts < MAX_ATTEMPTS); printf("입력 횟수를 초과했습니다. 계정이 잠겼습니다.\n"); return 0; } ``` --- ## 세 가지 반복문 선택 기준 | 상황 | 권장 반복문 | |------|------------| | 반복 횟수가 정해져 있음 | `for` | | 조건에 따라 반복, 0번도 가능 | `while` | | 최소 1번은 반드시 실행 | `do-while` | ---
// COMMENTS
ON THIS PAGE