Phase 1 · C언어 입문

반복문 — 자동으로 반복하기

매번 똑같은 코드를 수백 번씩 복사하여 붙여넣을 수는 없습니다. 이제 for, while 반복문을 이용해 프로그램에게 "이 작업을 원하는 만큼 스스로 반복해!"라고 지시하는 방법을 배웁니다.

예상 학습 시간 : 150분
난이도 : ★★★☆☆ 초중급
사전 지식 : Step 05 조건문
다음 단계 : 배열
01

학습 목표

이번 단계를 완료하면 다음 능력을 갖추게 됩니다.

1
for문과 while문, do~while문의 차이와 사용법을 이해한다.
2
초기식, 조건식, 증감식을 제어하여 원하는 횟수만큼 반복시킨다.
3
breakcontinue로 반복 흐름을 제어할 수 있다.
4
반복문 안에 조건문을 결합하여 데이터를 선별하고 처리한다.
5
중첩 반복문을 사용하여 구구단, 별 찍기 등을 구현한다.
6
합계, 최댓값 찾기 등 알고리즘의 기초를 구현한다.
02

반복문이란?

반복문(Loop)은 "조건이 참인 동안 같은 코드를 여러 번 계속해서 실행하라"는 문법입니다.

반복문 종류 특징 언제 사용하나요?
for초기식, 조건식, 증감식이 한 줄에 있음"10번 반복해라" 처럼 반복 횟수가 명확할 때
while조건식만 있음"로그인 성공할 때까지" 처럼 특정 조건이 유지되는 동안
do ~ while무조건 1번은 실행 후 조건 검사"일단 사용자 입력을 1번 받고 나서 판단할 때"
03

for문의 구조와 동작 원리

① 초기식 (int i = 1)
② 조건식 (i <= 5) ──(거짓)──> 반복 종료
↓ 참 (YES)
③ 내부 코드 실행 ( printf )
④ 증감식 (i++) 실행 후 다시 ②번(조건식)으로
⚙️ C
// 1부터 5까지 출력하기
for (int i = 1; i <= 5; i++)
{
    printf("%d\n", i);
}
04

for문 제어하기

역순으로 (10부터 1까지)

⚙️ C
for (int i = 10; i >= 1; i--) {
    printf("%d ", i);
}
// 10 9 8 7 6 5 4 3 2 1

2씩 건너뛰기 (홀수)

⚙️ C
for (int i = 1; i <= 10; i += 2) {
    printf("%d ", i);
}
// 1 3 5 7 9
05

while문과 do ~ while문

1. while문

조건이 참인 동안 반복합니다. 내부에서 i++를 해주지 않으면 영원히 멈추지 않는 무한 반복(Infinite loop)에 빠질 수 있으니 주의하세요.

⚙️ C
int i = 1;         // 초기식
while (i <= 5) {   // 조건식
    printf("%d\n", i);
    i++;           // 증감식 (이게 빠지면 무한루프!)
}

2. do ~ while문

조건식을 블록의 끝에서 검사합니다. 처음 조건이 거짓이더라도 무조건 1번은 코드가 실행됩니다.

⚙️ C
int i = 10;
do {
    printf("한 번은 실행됨: %d\n", i);
    i++;
} while (i < 5); // 11은 5보다 작지 않으므로 여기서 종료됨
06

break와 continue

🛑 break

"즉시 그만!"
반복문 자체를 완전히 강제 종료하고 빠져나갑니다.

for(int i=1; i<=5; i++){
    if(i == 3) break;
    printf("%d", i);
} // 결과: 12
⏭️ continue

"이번 턴만 건너뛰고 다음!"
현재 회차의 남은 코드를 건너뛰고 증감식으로 갑니다.

for(int i=1; i<=5; i++){
    if(i == 3) continue;
    printf("%d", i);
} // 결과: 1245 (3만 건너뜀)
07

반복문과 조건문의 결합

반복(여러 데이터를 확인) + 조건(필요한 것만 필터링)의 결합은 프로그래밍의 가장 중요한 뼈대입니다.

⚙️ C
// 1부터 10까지 돌면서 짝수만 찾아서 더하는 코드
int sum = 0;
for (int i = 1; i <= 10; i++) {
    if (i % 2 == 0) {
        sum += i; // sum = sum + i; 와 동일
    }
}
printf("합계: %d\n", sum);
08

중첩 반복문 (Nested Loop)

반복문 안에 또 다른 반복문을 넣습니다. 이차원 구조(표, 게임 맵, 구구단)를 만들 때 쓰입니다.

핵심 예제
별 찍기 (직각 삼각형)

바깥 for문은 '줄(Row)'을 제어하고, 안쪽 for문은 '칸(Col)'을 제어합니다.

⚙️ C
for (int i = 1; i <= 5; i++) {        // 5줄
    for (int j = 1; j <= i; j++) {    // 줄 수(i)만큼 별 찍기
        printf("*");
    }
    printf("\n"); // 줄바꿈
}
*
**
***
****
*****
09

알고리즘 기초 실습

🧪
Practice 01
최댓값 찾기 알고리즘

반복문을 통해 입력받으며 기존의 최댓값보다 더 큰 값이 들어오면 최댓값을 갱신합니다.

⚙️ C
int number, max;
printf("첫 번째 숫자: ");
scanf("%d", &max);

for (int i = 2; i <= 5; i++) {
    printf("%d번째 숫자: ", i);
    scanf("%d", &number);
    
    if (number > max) {
        max = number; // 새 최댓값으로 덮어씌움
    }
}
printf("가장 큰 수: %d\n", max);
10

무한 반복과 제어

게임을 플레이하거나, 서버 프로그램은 사용자가 명시적으로 종료할 때까지 무한히 돕니다.

⚙️ C
while (1) {
    printf("숫자 입력(0:종료) : ");
    scanf("%d", &number);
    
    if (number == 0) {
        break; // 0을 누르면 무한루프 탈출
    }
    printf("입력값: %d\n", number);
}
printf("프로그램 종료\n");
11

STEP 06 최종 프로젝트

🚀 Mission

반복형 계산기 프로그램

사용자로부터 메뉴 입력을 받아 더하기/빼기/곱하기/나누기를 수행하고, '종료(5번)'를 선택할 때까지 무한히 계산을 할 수 있는 상용 프로그램 수준의 인터페이스를 만드세요.

[추가 알고리즘 도전 과제]

  • 약수 구하기 : 어떤 수 N을 입력받아 1부터 N까지 반복하며 N과 나누어 떨어지는(% 연산) 수 출력
  • 소수(Prime Number) 판별 : 어떤 수 N을 입력받아 약수의 개수가 2개인지 판단
  • 구구단 전체 출력 : 중첩 for문을 이용해 2단부터 9단까지 출력
12

STEP 06 완료 체크리스트

for문, while문, do~while문을 목적에 맞게 구분하여 사용할 수 있다.
for문의 초기식, 조건식, 증감식을 다뤄 반복 횟수를 마음대로 제어한다.
무한 루프를 만들고 break를 이용해 탈출시킬 수 있다.
반복문 내부에 if문을 결합해 조건에 맞는 데이터만 더하거나 카운트할 수 있다.
중첩 for문의 구조(행/열)를 이해하고 구구단이나 별 찍기를 구현할 수 있다.
입력 → 판단 → 연산 로직을 무한루프 안에서 처리하는 프로그램을 구성할 수 있다.
핵심 제어구조 완성

조건문(판단)과 반복문(자동화)을 익혔습니다. 이 두 가지 블록만 있으면 사실상 "세상의 모든 알고리즘 논리"를 만들어낼 수 있습니다. 축하합니다!

이전 : Step 05 Step 07 : 배열