C 언어 : 6. 루프 제어문

2026. 5. 19. 13:34·C/Study

안녕하세요.

이번에는 루프 제어문에 대한 정리를 하겠습니다.

 

1. 루프 제어문(루프문)

 1) 의미

  • 루프 제어문(루프문)이란 일정한 조건에 맞춰 내용을 반복하는 제어문입니다.

 2) 종류

  • 진입 조건 루프문 : while 문, for 문
  • 탈출 조건 루프문 : do while 문
  • 중첩 루프문

 3) 종료 : 조건 종료

  • 루프에 관련된 조건이 false 가 되었을 때 루프를 종료하는 경우를 말합니다.

 4) 점프 : break

  • break 이라는 키워드를 만나 루프를 종료하는 경우를 말합니다.

 4.1) 점프 : continue

  • continue 라는 키워드를 만나 루프를 재반복하는 경우를 말합니다.

2. 진입 조건 루프문

  • 진입 조건 루프란 조건이 진입에 관련되어 시작하는 루프문을 말합니다.
더보기

1. while 문

 1) 의미

  • while 문이란 조건이 참인 경우에 내용을 반복하는 루프 제어문입니다.
  • 따라서 while 문을 종료시키기 위해서는 조건을 거짓으로 만들거나, break 문을 사용해야 합니다.

 2) 사용 구조

while(조건)
{

}

> 조건이 참(true, 0이 아닌 경우)이라면 블록({~})을 반복합니다.

 

3) 확정 루프(test4.c)

  • 확정루프란 조건의 종료가 명확히 밝혀진 경우를 말합니다.
#include <stdio.h>

int main(void)
{
    int i = 1;

    // step1 : while
    while(i <= 5)
    {
        printf("%d\n", i);

        // step 2 : 조건 -> false
//      i = 6;

        // step 3 : break
//      break;

        // step 4 : continue
    /*  if(i == 1)
        {
            i = 5;
            continue;
        }*/

        i++;
    }

    return 0;
}

 

> step 1 : while 문은 확정된 조건의 범위인 i = 1 인 경우부터 i = 5 일 때까지 총 5번 반복하여 i의 값을 출력합니다.

 

 3.1) 조건 종료(test4.c)

#include <stdio.h>

int main(void)
{
    int i = 1;

    // step1 : while
    while(i <= 5)
    {
        printf("%d\n", i);

        // step 2 : 조건 -> false
        i = 6;

        // step 3 : break
//      break;

        // step 4 : continue
    /*  if(i == 1)
        {
            i = 5;
            continue;
        }*/

        i++;
    }

    return 0;
}

> step 2 : while 문은 처음 i = 1 인 상태에서 조건에 맞게 블록을 실행하지만, i = 6 이라는 대입문을 만나 값이 변경되고 while의 조건인 i <= 5 라는 관계 연산에서 6 <= 5 가 되어 false 를 반환받아 종료하게 됩니다.

 

 4) 점프 : break(test4.c)

#include <stdio.h>

int main(void)
{
    int i = 1;

    // step1 : while
    while(i <= 5)
    {
        printf("%d\n", i);

        // step 2 : 조건 -> false
//      i = 6;

        // step 3 : break
        break;

        // step 4 : continue
    /*  if(i == 1)
        {
            i = 5;
            continue;
        }*/

        i++;    
    }

    return 0;
}

> step 3 : while 문은 처음 i = 1 인 상태에서 조건에 맞게 블록을 실행하지만, break 이라는 키워드를 만나 종료하게 됩니다.

 

4.1) 점프 : continue(test4.c)

#include <stdio.h>

int main(void)
{
    int i = 1;

    // step1 : while
    while(i <= 5)
    {
        printf("%d\n", i);

        // step 2 : 조건 -> false
//      i = 6;

        // step 3 : break
//      break;

        // step 4 : continue
        if(i == 1)
        {
            i = 5;
            continue;
        } 

        i++;
    }

    return 0;
}

> step 4 : i 가 1 인 경우에는 i = 5 를 대입한 후 다시 한번 반복합니다.

이후 증가 연산자로 증가된 i 가 관계연산에서 false 를 반환하고, 루프가 종료됩니다. 

 

5) 미확정 루프(test5.c)

  • 미확정 루프란 조건의 종료가 명확하지 않는 경우를 말합니다.
  • 보통 while True + 종료 조건 구조로 작성합니다.
#include <stdio.h>

int main(void)
{
    int num;

    // while True
    while (1)
    {
        printf("숫자 입력 (0 입력 시 종료) : ");
        scanf("%d", &num);

        // 종료 조건
        if (num == 0)
        {
            printf("프로그램 종료\n");
            break;
        }

        printf("입력값 : %d\n\n", num);
    }

    return 0;
}

> 종료 조건인 0 입력 전까지 계속 반복됩니다.


2. for 문

 1) 의미

  • for 문이란 초기화, 조건, 갱신을 한번에 처리하는 루프문을 말합니다.

 2) 사용 구조

for(초기화; 조건; 갱신)
{
	
}

for(int i = 0; i < 10; i++)
{

}

> 첫번째 표현으로 정수형 변수 i 를 선언하고, 0 을 대입하여 초기화를 진행합니다.

> 두번째 표현으로 루프의 조건을 선언하여, i 가 10 이 되는 경우 루프를 종료합니다.

> 세번째 표현으로 루프의 갱신을 선언하여, 블록이 한번 진행된 후 i 를 1 증가시킵니다.

 

 3) 확정 루프(test6.c)

  • 확정 루프란 조건의 종료가 명확히 밝혀진 경우를 말합니다.
#include <stdio.h>

int main(void)
{
    int i;

    for(i = 1; i <= 10; i++)
    {
        printf("%d ", i);

        // step 1 : 조건 -> false
//      i = 11;

        // step 2 : break
//      break;

        // step 3 : continue
    /*  if(i == 1)
        {
            i = 9;
            continue;
        } */
    }

    return 0;
}

> for 문의 갱신은 블록이 끝난 후 독립적으로 실행되므로 후위증가, 전위증가는 실질적으로 효과 차이가 미미합니다.

다만 전위증가의 경우에 더 빠르거나 안전한 경우가 있기 때문에 전위증가를 사용하는 습관을 가지는 것이 좋습니다.

 

 3.1) 조건 종료(test7.c)

#include <stdio.h>

int main(void)
{
    int i;

    for(i = 1; i <= 10; i++)
    {
        printf("%d ", i);

        // step 1 : 조건 -> false
        i = 11;

        // step 2 : break
//      break;

        // step 3 : continue
    /*  if(i == 1)
        {
            i = 9;
            continue;
        } */
    }

    return 0;
}

> step 1 : for 문은 처음 i = 1 인 상태에서 조건에 맞게 블록을 실행하지만, i = 11 이라는 대입문을 만나 값이 변경되고 for 문의 조건인 i <= 10 라는 관계 연산에서 11 <= 10 이 되어 false 를 반환받아 종료하게 됩니다.

 

 4) 점프 : break(test7.c)

#include <stdio.h>

int main(void)
{
    int i;

    for(i = 1; i <= 10; i++)
    {
        printf("%d ", i);

        // step 1 : 조건 -> false
//      i = 11;

        // step 2 : break
        break;

        // step 3 : continue
    /*  if(i == 1)
        {
            i = 9;
            continue;
        } */
    }

    return 0;
}

 > step 2 : for 문은 처음 i = 1 인 상태에서 조건에 맞게 블록을 실행하지만, break 이라는 키워드를 만나 종료하게 됩니다.

 

 4.1) 점프 : continue(test7.c)

#include <stdio.h>

int main(void)
{
    int i;

    for(i = 1; i <= 10; i++)
    {
        printf("%d ", i);

        // step 1 : 조건 -> false
//      i = 11;

        // step 2 : break
//      break;

        // step 3 : continue
        if(i == 1)
        {
            i = 9;
            continue;
        }
    }

    return 0;
}

> step 3 : i 가 1인 경우 i = 9 를 대입하고, contiunue 키워드를 만나 for 문을 다시 반복하게 됩니다.

for문을 다시 반복하며 증가 연산자를 통해 i 는 10 이 되어 마지막 반복이 실행되고, 이후 종료되게 됩니다.

 

 5) 미확정 루프(test8.c)

  • 미확정 루프란 조건의 종료가 명확하지 않는 경우를 말합니다.
  • 보통 for(;;) + 종료 조건 구조로 작성합니다.
  • for(;;) 는 while True 와 같은 역할을 합니다.
#include <stdio.h>

int main(void)
{
    int num;

    for(;;)
    {
        printf("0 입력 시 종료 : ");
        scanf("%d", &num);

        if(num == 0)
        {
            break;
        }

        printf("입력값 : %d\n", num);
    }

    printf("프로그램 종료");

    return 0;
}

> 종료 조건인 0 입력 전까지 계속 반복됩니다.


2. 탈출 조건 루프문

  • 탈출 조건 루프란 조건이 탈출에 관련되어 있는 루프문을 말합니다.
더보기

1. do while 문

 1) 의미

  • do while 문은 while, for 문과 같은 진입 조건 루프문과 다르게 루프의 문장을 적어도 한 번은 실행하도록 보장하는 루프 제어문입니다.
  • 잘 사용하지 않습니다

 2) 사용구조

do
{

} while(조건);

> do 를 통해 블록의 내용이 먼저 실행된 후 while 조건이 참이면 반복, 거짓이면 종료됩니다.

 

3) 조건 true(test9.c)

#include <stdio.h>

int main(void)
{
    // step 1 : true
    int i = 1;
    // step 2 : false
//  int i = 6;

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

    return 0;
}

> step 1 : do 를 만나 i = 1 일 때의 블록을 실행하고, while 의 조건에 맞춰 i = 5 까지 반복하게 됩니다.

 

3.1) 조건 false(test9.c)

#include <stdio.h>

int main(void)
{
    // step 1 : true
//  int i = 1;
    // step 2 : false
    int i = 6;

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

    return 0;
}

> step 2 : do 를 만나 i = 6 일 때의 블록을 실행하지만, while 의 조건의 관계 연산(6 <= 5)이 false 를 반환하며 반복이 종료되게 됩니다.


3. 중첩 루프문

더보기

 1) 의미

  • 중첩 루프문이란 내부에 다른 루프문이 들어있는 루프문을 말합니다.
  • 보통 행과 열을 표현하기 위한 용도로 사용합니다.

 2) 중첩 루프(test10.c)

#include <stdio.h>

int main(void)
{
    int row = 3;
    int col = 5;

    // step1 : 중첩 루프
    for(int i = 1; i <= row; i++)
    {
        for(int j = 1; j <= col; j++)
        {
            // step2 : break
        //    break;

            printf("%d", j);

            // step3 : continue
        /*    if(j == 1)
            {
                j = 2;
                continue;
            } */

            
        }

        printf("\n");
    }

    return 0;
}

> step 1 : 바깥 루프가 행이되고, 내부 루프가 열이되어 표현할 수 있습니다.

 

 3) 점프의 범위

  • 점프 키워드(break, continue)는 해당 블록에서 가장 가까운 루프 제어문을 기준으로 합니다.
  • 예를 들어 내부의 break 키워드가 있다면 내부 루프문만 종료하게 됩니다.
  • 예를 들어 내부의 continue 키워드가 있다면 내부 루프문을 다시 반복하게 됩니다.

 3.1) 점프 : break

  • break 키워드는 가장 가까운 루프문을 탈출합니다.
#include <stdio.h>

int main(void)
{
    int row = 3;
    int col = 5;

    // step1 : 중첩 루프
    for(int i = 1; i <= row; i++)
    {
        for(int j = 1; j <= col; j++)
        {
            // step2 : break
            break;

            printf("%d", j);

            // step3 : continue
        /*    if(j == 1)
            {
                j = 2;
                continue;
            } */

            
        }

        printf("\n");
    }

    return 0;
}

> step 2 : 중첩루프 중 내부 루프문에서 break 키워드를 만나 종료하게 되어 어떤 것도 출력할 수 없습니다.

 

 3.2) 점프 : continue

  • continue 키워드는 가장 가까운 루프문을 다시 반복합니다.
#include <stdio.h>

int main(void)
{
    int row = 3;
    int col = 5;

    // step1 : 중첩 루프
    for(int i = 1; i <= row; i++)
    {
        for(int j = 1; j <= col; j++)
        {
            // step2 : break
        //    break;

            printf("%d", j);

            // step3 : continue
            if(j == 1)
            {
                j = 2;
                continue;
            }

            
        }

        printf("\n");
    }

    return 0;
}

> step 3 : j 가 1인 경우 j = 2 를 대입하고, contiunue 키워드를 만나 내부 for 문을 다시 반복하게 됩니다.

for문을 다시 반복하며 증가 연산자를 통해 i 는 2 가 되어 반복이 진행되게 됩니다.

 

'C > Study' 카테고리의 다른 글

C언어 : 8. 함수  (0) 2026.05.25
C언어 : 7. 분기 제어문  (0) 2026.05.19
C언어 : 5. 연산자  (0) 2026.05.19
C언어 : 4. 문자열과 입출력  (0) 2026.05.18
C언어 : 3. 데이터형  (0) 2026.05.18
'C/Study' 카테고리의 다른 글
  • C언어 : 8. 함수
  • C언어 : 7. 분기 제어문
  • C언어 : 5. 연산자
  • C언어 : 4. 문자열과 입출력
m_Dev
m_Dev
  • m_Dev
    m_Dev
    m_Dev
  • 전체
    오늘
    어제
    • 분류 전체보기
      • MAIN STUDY
        • 정보보안
        • 빅데이터
        • 정보처리
        • 컴퓨터 구조
        • 기타
      • JOB
        • Study
        • Project
      • LMS 7
        • 개발일지
      • FRAMEWORK
        • Qt
        • MFC
        • Winform
        • WPF
        • MAUI
      • NETWORK
        • Study
        • Assignment
      • PYTHON
        • Set
        • Study
        • Assignment
        • Project
      • C
        • Set
        • Study
        • Assignment
        • Project
      • C++
        • Set
        • Study
        • Assignment
        • Project
      • C#
        • Set
        • Study
        • Assignment
        • Project
      • DATABASE
        • MySQL
        • SQLite
      • IDE
        • VisualStudioCode
        • VisualStudio
        • Pycharm
        • Colab
      • 기타
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.4
m_Dev
C 언어 : 6. 루프 제어문
상단으로

티스토리툴바