본문 바로가기

Programming Language/C

[C언어] 혼공C 예제 연습_Switch문을 활용한 rank별 상금 결정하는 프로그램

320x100

C언어 학습을 위한 자습용 코드와 설명을 작성하고 있습니다.

 

교재 : 혼자 공부하는 C 언어 (hanbit.co.kr)

 

Switch~ Case 문에 관하여

 

switch문은 if문과 다르게 case를 따로 두어, 다양한 경우를 표현할 수 있습니다.

랭킹(rank)을 입력받아 변수에 저장, rank별 상금(m)을 구하는 코드를 진행해 보았습니다.

 

case를 통해 여러 개의 경우의 수를 골라서, 하나의 상수만을 반환할 수 있습니다.

 

Visual studio를 통해 프로젝트를 생성하여, 소스 파일에 아래의 코드와 같이 C 파일을 제작하여 표현했습니다.

 

#include <stdio.h>

int main(void)
{
	int rank, m = 0;
	printf("랭크를 입력하라(1~5) : ");
	scanf("%d", &rank);

	switch (rank) // rank의 값이 얼마인지 확인함
	{
	case 1:		// rank가 1이면
		m = 300;	 // m = 300을 수행하고
		break;	// 블록을 벗어나 22행으로 이동함 
	case 2:		// rank가 2면 
		m = 200;	// m = 200을 수행하고
		break;	// 블록을 벗어나 22행으로 이동함
	case 3:		// rank가 3이면
		m = 80;		// m = 80을 수행하고
		break;	// 블록을 벗어나 22행으로 이동함
	case 4 :	// rank = 4면
		m = 40;	// m = 40을 수행하고
		break;	// 블록을 벗어나 22행으로 이동함
	default:	// rank와 일치하는 case의 값이 없으면
		m = 10;	// m = 10을 수행하고
		break;	// 블록을 벗어나 22행으로 이동함
	}

	printf("m : %d\n", m);
	return 0;
}

 

디버그 콘솔로 진행합니다. 디버그 무시하고 실행(ctrl + F5)시, 입력할 수 있는 커맨드창이 도출되고, 1 이상의 정수를 입력하면 보입니다.

 

 

상수 1을 입력하고 있습니다.

 

 

2 입력 시 m이 200을 반환합니다.

 

 

간단한 코드이기 때문에, 다른 정수를 입력해도 큰 문제는 없습니다.

 

간단한 에러 발생

 

위 코드에서 break문 제외시 case 1 ,2,3,4를 모두 무시하기 때문에 default의 상태로 바로 넘어갑니다.

 

break를 없앤 코드입니다.

 

 

#include <stdio.h>

int main(void)
{
	int rank, m = 0;
	printf("랭크를 입력하라(1~5) : ");
	scanf("%d", &rank);

	switch (rank) // rank의 값이 얼마인지 확인함
	{
	case 1:		// rank가 1이면
		m = 300;	 // m = 300을 수행하고
				// break 제외 시 실험
	case 2:		
		m = 200;	
	
	case 3:		
		m = 80;		
	
	case 4 :	
		m = 40;	

	default:	
		m = 10;	

	}

	printf("m : %d\n", m);
	return 0;
}

 

 

m 값이 전혀 다른 결과를 도출하는 것을 알 수 있습니다.

이 때문에, 적절한 위치에 break를 삽입하는 작업이 필요한 것을 알 수 있습니다.

728x90