ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 조건문 - 바로 실행해보면서 배우는 C언어
    CS/C언어 2019. 12. 29. 23:52

    if문

    C언어는 절차지향언어이기 때문에 순서대로 조건문을 체크한다.

    if - else if - else : if가 참이면 else if, else는 건너뛴다.

    (위의 조건을 만족하면 아래 조건을 확인하지 않고 건너 뜀.)

    if - if - if : 첫 번째 if가 참이어도 두 번째, 세 번째 if를 건너뛰지 않고 모두 확인한다. (위의 조건을 만족해도 아래 조건을 확인)

    프로그램 성능을 위해 조건 확인 시간 줄이기

    1) 참일 가능성이 높은 조건을 if 조건으로 둔다. if의 조건이 참이면 else if, else를 건너뛰기 때문에 조건 확인 시간을 줄일 수 있다.

    2) 조건이 중첩되는 경우, if문 여러 개를 사용하기보다는 else if를 사용해 중첩되는 조건은 건너뛸 수 있도록 한다.

     

    break문, continue문

     

    break문

    종결 조건을 만족하지 않아도 반복문을 종료하고 빠져나오게 하는 제어문.

    (반복문에서 break문을 사용하지 않으면 종결 조건을 만족할 때까지 계속해서 반복문을 돌게 된다.)

    조건문과 같이 쓰이는 경우가 많지만, 조건문을 빠져나오는 것이 아니라 반복문을 빠져나오는 제어문임을 주의하기.

    또한 break문을 만나면 바로 반복문을 빠져나가기 때문에 break문 다음 코드가 실행되지 않는다. 반복문을 빠져나간 후 반복문 다음 코드가 실행된다.

    중첩 for문에서 break문을 사용할 경우 자신의 상위에 있는 반복문만 빠져나간다.

     

    continue문

    continue문 아래의 코드를 실행하지 않고 다음 반복을 실행한다.

    (코드를 계속 진행한다 X

    반복을 계속 진행한다 O)

    int main(){
        	for(int i=0; i<10; i++){
        		if(i%2 == 0){
        			continue;
        		}
        		printf("%d ", i);
        	}
        	return 0;
        }
        
        /*0~10의 숫자 중 홀수만 출력하는 코드*/

     

    switch문

    switch문은 if문과 마찬가지로 조건을 체크하고 해당하는 케이스를 실행하는 조건문이다. 그러나 if문처럼 관계식을 조건으로 쓸 수 없고, 특정한 정수문자만 조건으로 사용할 수 있다. (실수x)

    if문처럼 조건을 하나하나 체크하면서 내려가는 것이 아니라, 입력받은 값에 해당하는 케이스로 바로 이동한다.

    따라서 4개 이상의 조건일 경우 일반적으로 if문보다 속도가 빠른데, 컴파일러의 발전으로 성능에 크게 영향을 미치는 정도는 아니므로 성능차이를 생각하기보다는 상황에 적합한 조건문을 선택하면 된다.

     

    default : default는 해당되는 케이스가 하나도 없을 경우 실행되는 조건이다. switch문에서 default는 if문의 else와 같은 역할을 한다.

     

    break : 반복문 뿐만 아니라 switch문에서도 break문을 사용한다. switch문에서 break를 사용하지 않으면 해당되는 케이스가 실행된 후, 다음에 오는 케이스들이 차례로 전부 실행된다. if문처럼 해당되는 특정 케이스만 실행되게 하고 싶은 경우 break문을 사용해야 한다.

    연속적인 값을 비교할 때는 의도적으로 break문을 넣지 않음으로써 조건을 확장시킬 수도 있다.

     

    switch문 작성 예시

    int main() {
    	int input;
    	scanf("%d", &input);
    	switch(input){
    		case 2:
    			printf("추가");
    			break;
    		case 3:
    			printf("수정");
    			break;
    		case 4:
    			printf("삭제");
    			break;
    		case 5:
    			printf("종료");
    			break;
    		default: 
    			printf("올바른 번호를 입력하세요.");
    	}
    	return 0;
    }

     

    조건문 응용

    조건문 응용 문제 1

    반복문 + 조건문 + 배열을 이용해서 홀짝 판별하기

    int main() {
      
      int arr[10] = { 5, 10, 15, 22, 23, 102, 99, 102, 130, 8 };
      int odd = 0;
      int even = 0;
      
      
    	for(int i=0; i<10; i++){
    		if(arr[i]%2 == 0) {
    			even++;
    		} else {
    			odd++;
    		}
    	}
      
      printf("홀수의 갯수는 %d개 입니다.\n", odd);
      printf("짝수의 갯수는 %d개 입니다.\n", even);
      
      return 0;
    }

     

    조건문 응용 문제 2

    배열 중 가장 작은 수 구하기

    int main() {
          
          int arr[10] = { 1032, 99, 1004, 234, 452, 8, 922, 445, 246, 2048 };
          int min = arr[0];
          int i; // 반복문에 쓰일 변수
          
          for(int i=0; i<10; i++) {
        		if(arr[i] < min) {
        			min = arr[i];
        		}
        	}
          
          printf("배열 안에서 가장 작은 수는 %d입니다.\n", min);
          
          return 0;
        }

     

    조건문 응용 문제 3

    소수 구하기

    -

    댓글

Designed by Tistory.