null
vuild_
Nodes
Flows
Hubs
Login
MENU
Notifications
Login
☆ Star
while 반복문
#c
#c-lang
#beginner
#loops
#while
@devpc
|
2026-03-29 05:33:44
|
GET /api/v1/nodes/31?nv=2
History:
v2 (2026-03-29) (Latest)
v1 (2026-03-29)
0
Views
0
Calls
# while 반복문 ## 기본 구조 **조건이 참인 동안** 반복합니다. 반복 횟수가 불명확할 때 주로 사용합니다. ```c while (조건식) { // 반복 실행할 코드 } ``` --- ## 기본 예제 ```c int i = 1; while (i <= 5) { printf("%d ", i); i++; // 증감식을 반드시 직접 작성해야 함 } // 출력: 1 2 3 4 5 ``` --- ## for vs while 동일한 동작을 두 가지 방식으로 작성할 수 있습니다. ```c // for 방식 for (int i = 0; i < 5; i++) { printf("%d\n", i); } // while 방식 (동일) int i = 0; while (i < 5) { printf("%d\n", i); i++; } ``` **언제 while을 선택하나요?** - 반복 횟수를 미리 알 수 없을 때 - 특정 이벤트나 입력이 올 때까지 반복할 때 - 조건 자체가 중심인 경우 --- ## 무한 루프와 탈출 조건 ```c // 올바른 숫자를 입력할 때까지 반복 int input; while (1) { // 항상 참 → 무한 루프 printf("1~10 사이 숫자 입력: "); scanf("%d", &input); if (input >= 1 && input <= 10) { break; // 조건 충족 시 탈출 } printf("범위를 벗어났습니다. 다시 입력하세요.\n"); } printf("입력한 숫자: %d\n", input); ``` --- ## 탈출 조건 설계 주의 `while`에서 탈출 조건을 잘못 설계하면 **무한 루프**에 빠집니다. ```c // ❌ 무한 루프 — i가 증가하지 않음 int i = 0; while (i < 10) { printf("%d\n", i); // i++ 누락! } // ✅ 올바른 종료 조건 int i = 0; while (i < 10) { printf("%d\n", i); i++; } ``` --- ## 사용자 입력 처리 패턴 ```c #include <stdio.h> int main() { int sum = 0; int count = 0; int num; printf("숫자를 입력하세요 (0 입력 시 종료):\n"); while (1) { scanf("%d", &num); if (num == 0) break; sum += num; count++; } if (count > 0) { printf("합계: %d\n", sum); printf("개수: %d\n", count); printf("평균: %.2f\n", (double)sum / count); } else { printf("입력된 숫자가 없습니다.\n"); } return 0; } ``` --- ## 파일/스트림 처리 패턴 `while`은 데이터를 끝까지 읽을 때도 자주 사용됩니다. ```c int ch; while ((ch = getchar()) != '\n' && ch != EOF) { printf("%c", ch); // 한 줄 입력을 문자 단위로 처리 } ``` --- ## 예제: 숫자 맞추기 게임 ```c #include <stdio.h> #include <stdlib.h> #include <time.h> int main() { srand(time(NULL)); int answer = rand() % 100 + 1; // 1~100 랜덤 int guess; int tries = 0; printf("1~100 사이의 숫자를 맞춰보세요!\n"); while (1) { printf("추측: "); scanf("%d", &guess); tries++; if (guess < answer) { printf("더 큰 숫자입니다.\n"); } else if (guess > answer) { printf("더 작은 숫자입니다.\n"); } else { printf("정답! %d번 만에 맞췄습니다.\n", tries); break; } } return 0; } ``` ---
// COMMENTS
ON THIS PAGE