티스토리 뷰

DEV/C 언어

반복문

초록매실원액 2015. 12. 29. 09:21

if ~ else

 

while

 

do ~ while

 

for



if ~ else

제어문이란?

  • 순차적인 흐름을 조건에 따라 통제하는 구문

if

  • 가정과 결과에 따라  행위를 결정하는 제어문

  • if 안의 결과가 참일 명령을 수행

 

else

  • if문과 함께 쓰이며 if문의 결과가 참이 아닐때 else문을 수행

  • If문은 단독으로 있으나  else문은 단독으로 쓰지 못함

 

else if

  • 복수의 조건중 각각 다른 처리를 수행하고자 사용


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
// 두 수를 입력받아대소 비교
 
void compare(){
 
 
 
int num1;
 
int num2;
 
 
 
printf("############################\n");
 
printf("첫번째 수를 입력하세요 : ");
 
scanf("%d",&num1);
 
printf("두번째 수를 입력하세요 : ");
 
scanf("%d",&num2);
 
if(num1 >= num2){
 
    if(num1 > num2){
 
        printf("첫번째 수가 [%d] 만큼 큽니다\n" , num1-num2);
 
    }else{
    
        printf("두수는 동일한 수입니다.\n");
 
    }
 
}else{
 
    printf("두번째 수가 [%d] 만큼 큽니다\n" , num2-num1);
 
}
 
printf("############################\n");
 
}
cs




while

while

  • 사용자가 원하는 만큼 명령들을 여러 실행하는 제어구조.

  • 특정조건이 만족되는 동안 명령을 계속적으로 실행한다.

 

while문의 문법

  • 식이 참일 경우에만 루프처리를 반복


While(조건문){

실행문;

}

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
//10진수를 2진수로 변경해라
 
void _tranc_10to2(){
 
int dec;
 
int tmp;
 
printf("10진수를 입력해라:");
 
scanf("%d",&dec);
 
tmp=dec;
 
 
printf("2 진수는 : ");
 
while(tmp>0){
 
    /*
    10진수를 2진수화 할때 자리 갯수 만큼
    공백출력                
    2진수 자리만큼 공백출력
    */
 
    printf(" ");
 
    tmp/=2;
 
}
 
while(dec>0){                
 
 
    printf("\b%d",dec%2); //커서 한칸 땡기고 출력
 
    printf("\b");                  //커서 한칸 땡기고 대기
 
    dec/=2;
 
}
 
printf("\n");
 
}
cs



do ~ while

do ~ while

  • While문과 유사하지만 조건문이 실행문 뒤에 위치한다.

 

do ~ while 문의 문법

  • Do while 짝을 이루어 사용된다.

  • 조건문이 거짓일 때라도 한번 이상 실행한다.

do{

실행문;

}while( 조건문 );


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
void totalsum(){
 
    //1~n까지의합 구하기
 
    //n 입력 : 100
 
int num;
 
int sum=0;
 
printf("n입력 : ");
 
scanf("%d",&num);
 
printf("1~ %d 까지의 ",num);
 
do{        
 
    sum+=num--;
 
}while(num>0);
 
 
printf("합은%d\n",sum);
 
}
cs




for

for

  • 초기,조건,증감문을 한번에 선언가능

  • 가장 보편적인 반복문으로 가독성이 높다

 

for문의 문법

  • 초기,조건, 증감문은 일부 또는 전부를 생략 가능하다.

for(초기문;조건문;증감문){

실행문;

}


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
void find_passwd(){
 
 
 
/*
모두 다른 수이며 0을 포함하지 않는다
첫 번째 수가 마지막 수 보다 2 더 크다
두 번째 수가 세번째 수보다 작다
비밀번호와 비밀번호를 뒤집은 수를 더하면 16456이 나온다
*/
 
 
 
int num1=1;
 
int num2;
 
int num3;
 
int num4=1;
 
 
 
int pwda;
 
int pwdb;
 
 
 
for(num1=num4+2;num1<=9;num1++){
 
    for(num4=1;num4<=9;num4++){
 
        if(num4+2 == num1){
 
        //첫번째 수가 마지막 수 보다 2 더 큰 조건일때
 
            for(num3=2;num3<=9;num3++){
 
                for(num2=1;num2<num3;num2++){
 
                //두번째 수가 세번째 수보다 작은 조건일때
 
                    pwda=num1*1000 + num2*100 + num3*10 + num4;
 
                    pwdb=num4*1000 + num3*100 + num2*10 + num1;
 
 
 
                    if(pwda+pwdb ==16456){                                        
 
                        printf("num1 = [%d]\t num2 =[%d]\t num3 = [%d]\t num4=[%d]\n",num1,num2,num3,num4);
 
                    }
 
                }
 
            }
 
        }//end if
 
    }//end for
 
}//end for
 
}
cs



반복문의 흐름제어


break

반복문이 실행되고 있는 시점에서 가장 근접한 반복문(루프) 탈출

여러 개의 루프가 중첩된 경우 현재 위치한 루프 하나만 탈출

 

continue

반복도중 처리를 중단하고 반복문의 시작 위치로 이동

정밀한 제어 구조를 만들 사용

 

goto

지정한 곳으로 무조건 점프

사용하기 쉬운 제어문

프로그램의 구조를 해치기 쉬워 이식성과 재사용이 어렵다


무한루프

반복 횟수가 미리 정해져 있지 않고 무한히 반복되는 루프

 

Code

  • for(;;){실행문;}

  • while(0 아닌 정수형 상수){실행문;}
    • 보편적으로while(1) 사용

다중루프

  • 이상의 루프가 겹쳐져 있는 제어 구조
  • 이중 루프가 보편적으로 많이 사용










'DEV > C 언어' 카테고리의 다른 글

포인터  (0) 2016.01.04
switch  (0) 2016.01.04
재귀함수  (0) 2015.12.29
System()  (0) 2015.12.29
Scanf()  (0) 2015.12.28
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/07   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31
글 보관함