티스토리 뷰

반응형

개발자의 C언어 독학 기초 명령  # switch 설명

모든 강의 자료 : www.codingnow.co.kr/

이번 강의는 switch 문에 대해 설명한다.

switch는 if 와 유사한 동작을한다.

if문의 아래 예시와 같이 else if를 넣는 것과 같다.

switch문의 구조는 아래와 같은 형식으로 표현이 된다.

switch( 정수 ) 괄호안의 값과 같은 곳으로 이동하여 break 가 나올때 까지 실행하게 된다.

아래의 예제 소스는 이전 do while 소스에 switch 만 추가하여 점수에 따른 커멘트를 넣었다.

switch 부분을 if문으로 변환하면 다음과 같다.

if(score == 100)
{ 
  printf(" 대박!! 만점입니다. \n"); 
}else if(score == 90)
{ 
  printf(" 실력이 좋으시네요. \n"); 
}else if(score == 80)
{ 
  printf(" 조금만 더 해보세요!!. \n"); 
}else{ 
  printf(" 열심히 공부하야 겠네요~~\n"); 
}

switch와 if else문은  매우 유사한 동작을 한다.

실제 개발시에 장단 점을 따져서 처리할 필요가 있다.

switch로 구현하는 경우 아래와 같이 state형태로 소스를 구성할때  가독성(분석력)이 좋다.

실제 개발에서는 소스 분석 시간이 매우 중요하다.

수많은 업무와 문제들을 해결하기 위해 한눈에 들어 오는 코드가 기본이기 때문이다.

위 예제 코드에 대한 실행 화면이다.

#include <stdio.h>
#include <time.h> 
#include <windows.h>

void main(void)
{
	int num1, num2, result, sum;
	int score;
	system("chcp 65001"); //gcc 한글 깨짐
	system("cls"); //화면지움
	printf("\n-------문제를 풀어보세요-------------\n");
//랜덤 수를 만든다.
	srand(time(NULL));
	
	score = 0;
	//for(int cnt=0; cnt<10; cnt++)
	int cnt=0;
	//while(cnt<10)
	do
	{
		num1 = rand()%100; //첫번째 값 (100 이하의 랜덤 값)
		num2 = rand()%100; //두번째 값 (100 이하의 랜덤 값)
		sum = num1+ num2; //답을 구한다.

	//문제를 출제한다.
		printf("\n %02d번째 문제 %d + %d = ",(cnt+1), num1, num2);
		
	//답을 입력받는다.
		scanf("%d", &result);

	//결과를 표시한다.	    
		if(sum == result)
		{
			printf("       정답입니다.\n");
			score += 10;
		}else{
			printf("       오답입니다. 정답은 %d 입니다.\n", sum);
		}		
		cnt++;
		
	}while(cnt<10); //10번 반복
	
	printf("-------------------------------------\n");
	printf(" 100점 만점에 %d입니다.\n",score);
	
	switch(score)
	{
		case 100:{ //100점
			printf(" 대박!! 만점입니다. \n");
			break;
		}
		case 90:{//90점 이상
			printf(" 실력이 좋으시네요. \n");
			break;
		}
		case 80:{//80점 이상
			printf(" 조금만 더 해보세요!!. \n");
			break;
		}
		
		default:{//80점 미만
			printf(" 열심히 공부하야 겠네요~~\n");
			break;
		}
	}
	printf("-------------------------------------\n");
	
	system("pause");	
	return;
}

반응형