본문 바로가기
문법/c언어

[C언어]반복문 사용법, 예제(for, while, do-while, 중첩반복문)

by 덜 무서운 지박령 2024. 1. 19.

모든 프로그래밍 언어에는 같거나 유사한 코드를 여러번 사용하지 않기위해 반복을 통해 코드를 줄일 수 있다. C언어에서는 크게 for, while 두가지의 반복문이 있다.

 

1. for문 기본 구조

for(초기화문장;조건문;증감식){
    반복할 코드
}

for문을 실행하는 순서로는 먼저 초기화를 진행하고 조건문을 판단한다. 조건문의 결과가 True면 {}코드를 실행하고 증감식을 수행한다. 이후 다시 조건문을 판단하여 반복을 진행하고 조건문에서 False가 나왔을 때 for문을 벗어나게 된다.

 

for(int i=0;i<3;i++){
    printf("%d ",i);
}

간단한 예제를 살펴보면, for문에서만 사용되는 지역변수인 i를 선언해주고 3미만인 경우에만 반복을 진행하게 된다.

따라서 1 2 3이 출력되고 반복이 종료된다.

지역변수를 선언하는 것이 아닌 이미 선언되어있는 변수를 초기화시켜 사용하는 것도 가능하다.

 

 

2. break, continue

반복문을 작성할 때, 무조건 모든 반복을 도는 것이 아닌 중간에 반복을 끝낼 필요가 있을 수 있다. 그럴경우 break를 사용한다. 

int n = 1;
int sum = 0;

for(n=1;n<100;n++){
    sum += n;
    if(sum > 100)
    	break;
}

printf("%d",n);

위의 예시는 1부터 n까지의 합이 100이 넘는 최소의 n을 구하는 코드로 이와 같이 break를 이용하여 반복을 벗어날 수 있다.

 

for (int i = 1; i <= 10; i++) {
    if (i % 2 == 1)
        continue;
    printf("%d ", i);
		
}

continue의 경우 break와 유사하게 반복을 멈출 수 있지만 차이점은 반복문을 벗어나는 것이 아닌 다음 반복을 진행한다.

그래서 예시와 같이 코드를 작성하면 i가 홀수인경우 continue를 실행하여 2 4 6 8 10와 같이 짝수만 출력되게 된다.

 

여기서 주의할점은 break와 continue모두 해당 코드를 만나면 반복을 멈추므로 break와 continue위에 있는 코드는 실행된다.

 

 

3. 중첩반복문

for문안에 또다른 for문을 사용하여 원하는 작업을 쉽게 구현할 수 있다. 

for (int i = 1; i <= 10; i++) {
    for (int j = 0; j < i; j++) {
        printf("★");
    }
    printf("\n");	
}

해당 예시는 별을 피라미드처럼 출력하는 코드

총 10줄의 형태를 출력하기위해 바깥 for문의 조건문을 i<=10으로 작성하였으며,

첫줄에는 별이 하나, 마지막 10번째줄에는 10개의 별이 출력되야하므로 안쪽 for문의 조건문을 i를 이용하여 작성하였다.

출력 결과

 

 

4. while문

주로 for문은 반복횟수가 정해져있는 경우 사용하고 while문은 어떤 조건에 따라 반복을 할 때 사용한다.

while(조건문){
    실행할 코드
}

기본 구조는 위와같이 간단히 조건문의 내용이 참일 경우 반복을 진행하게된다.

또한 조건문의 결과가 0이외의 정수또는 실수는 참, 0은 거짓으로 판단한다.

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

예시는 1부터 5까지를 출력하는 코드로 for문과 다른점은 while문 안에서 따로 증감식을 작성하여 반복문을 탈출할 수 있도록 만들어야한다.

 

 

5. 무한반복문

break와 continue는 for문과 마찬가지로 사용할 수 있으며 while을 이용하여 무한반복을 만들 수 있다.

while(1){

}

간단하게 조건문에 1을 넣어 항상 참이 되도록 만들어 무한한 반복을 시킬 수 있다. 

하지만 반복문 안에 반드시 break를 사용한 탈출 코드를 작성해야 프로그램이 정상적으로 작동할 수 있다.

 

 

6. do-while문

do{
    실행할 문장
}while(조건문);

do-while문은 while문과 유사하지만 처음 한번은 무조건 실행한다는 특징이 있다. 그래서 조건을 제일 마지막에 작성하기 된다.

여기서 주의할 것은 while(조건문) 끝에 세미콜론(;)을 붙여야 한다.