반복문
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)을 사용
다중루프
- 두 개 이상의 루프가 겹쳐져 있는 제어 구조
- 이중 루프가 보편적으로 많이 사용