반복문

무엇인가를 여러번 반복해야 할 때, 사용하는 함수 ?


반복문의 종류는 3가지가 있다.


while, do~while, for 문


while

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include<stdio.h>
 
int main()
{
    int num=0;
    
   while(num<3)
   {
       printf("Hello world!\n");
       num++;
       
   }
    
    return 0;
}
 

cs

예제로 설명을 하겠다. while문 옆에 조건이 있다. 이 조건이 참일경우에만 반복이 된다.

num은 0이고 3보다 작으니 당연히 그 안의 코드문이 실행이 된다. Hello world!가 출력되고 num이 1증가된다.

그리고 다시 처음으로 가서 num1은 1 3보다 작으니 코드문이 또 실행이 된다.

이렇게 반복을 하고, 어느순간 num이 3일 때, 3과 같으므로 조건이 거짓이된다. 이 때, 반복문을 빠져 나가게 된다.


10번행의  num++을 해주지 않으면, 반복이 멈추지 않는 무한루프가 된다. 반복의 조건을 무너뜨리기 위한 최소한의 연산은 꼭 필요하다.


ex)구구단

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include<stdio.h>
 
int main()
{
    int dan=0,i=1;
    
    printf("몇단?"); scanf("%d",&dan);
    
    while(i<10)
    {
        printf("%d * %d = %d\n",dan,i,dan*i);
        i++;
    }
    
    return 0;
}
 

cs

출력결과


몇단?4

4 * 1 = 4

4 * 2 = 8

4 * 3 = 12

4 * 4 = 16

4 * 5 = 20

4 * 6 = 24

4 * 7 = 28

4 * 8 = 32

4 * 9 = 36


ex) 중첩 while을 통한 구구단

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include<stdio.h>
 
int main()
{
    int i=2;
    int j=1;
    
    while(i<10)
    {
        while(j<10)
        {
            printf("%d * %d = %d\n",i,j,i*j);
            j++;
        }
        j=1;
        i++;
    }
    return 0;
}
 

cs

출력결과

2 * 1 = 2

2 * 2 = 4

2 * 3 = 6

...

...

9 * 8 = 72

9 * 9 = 81


do~while문


while과 다른점은 반복조건을 뒤에서 검사한다.

처음부터 반복조건을 만족하지 못하면 반복영역을 한번도 시도하지 않는 while문과는 달리, 반복 영역을 최소한 한번은 실행하는 구조이다.


ex)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include<stdio.h>
 
int main()
{
    int num=0;
    
    do
    {
        printf("Hello world!\n");
        num++;
    }while(num<3);
    
    return 0;
}
 

cs

출력결과


Hello world!

Hello world!

Hello world!


위의 중괄호가 반복영역이고, 중괄호 뒤에 등장한 것이 반복조건이다. 일단 최소 한번은 실행하고, 다음 조건을 검사한다. num =1 이 3보다 작기 때문에 ,

반복을 더 실행하고 또 조건을 검사한다. num = 2 3보다 작기 때문에 한번 더 출력을 한다. 그 후, num = 3이 돼서 조건이 거짓이 되기 때문에, 반복을 빠져 나가게 된다.


do~while문이 while문을 대체할 수 있다. while문과 do~while 문을 언제 써야하나 모르겠으면, 최소 한번 실행해야 한다면 do~while문을 쓰는게 맞다.!

입맛에 맞게 골라서 쓰면 된다.


for문

while문이 조건에 의해서 반복을 실행한다면, for 문은 횟수에 의해서 반복을 실행한다. 


ex)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include<stdio.h>
 
int main()
{
    int i;
    
    for(i=0;i<3;i++)
    {
        printf("Hello world!\n");
    }
    
    return 0;
}
 

cs

출력결과


Hello world!

Hello world!

Hello world!


for문의 옆에 소괄호에 초기식; 조건식; 증감식;이 필요하다.

초기식 : 반복을 위한 변수의 선언 및 초기화에 사용, 반복을 시작하기에 앞서 딱 한번 실행된다.

조건식 : 반복의 조건을 검사하는 목적으로 선언됨, 매 반복의 시작에 앞서 실행되며, 그 결과를 기반으로 반복 유무를 결정

증감식 : 반복의 조건을 '거짓'으로 만드는 증가 및 감소연산, 매 반복 실행 후, 마지막에 연산이 이뤄진다.


ex)0이상 사용자가 입력한 정수 이하의 값의 합

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include<stdio.h>
 
int main()
{
    int i;
    int num=0;
    int sum=0;
    
    scanf("%d",&num);
    
    for(i=0;i<=num;i++)
    {
        sum+=i;
    }
    printf("%d",sum);
    
    return 0;
}
 

cs

출력결과

10 // 입력한 정수

55 // 0부터 입력한 정수까지의 합


for( ; ; ) // 이처럼 초기식,조건식,증감식을 비우게되면 이는 무조껀 참으로 인식이 되어 무한루프가 된다.


ex)중첩 for 문을 이용한 구구단

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include<stdio.h>
 
int main()
{
    int i,j;
    
    for(i=2;i<10;i++)
    {
        for(j=1;j<10;j++)
        {
            printf("%d * %d = %d\n",i,j,i*j);
        }
    }
    return 0;
}
 

cs

출력결과

2 * 1 = 2

2 * 2 = 4

2 * 3 = 6

...

...

9 * 8 = 72

9 * 9 = 81



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

C // 함수  (0) 2017.12.13
C// 조건에 따른 흐름의 분기  (0) 2017.12.11
C // printf함수와 scanf 함수  (0) 2017.12.02
C // 상수와 기본 자료형  (0) 2017.12.01
C // 변수와 연산자  (0) 2017.11.28

+ Recent posts