본문 바로가기

C&C++_Basic/C_Condition

C언어 열거형 enum 사용 Month 일수 출력

Month 출력 : enum data type 을 이용하여 JAN, FEB, .. 등의 값을 갖도록 하여 switch 문을 구성하고,

사용자 입력이 1, 즉 JAN 인 경우, “January 는 31일 입니다” 를 출력

 

#include<stdio.h>

int main()
{
	enum  month {JAN=1 , FEB, MAR, APR, MAY, JUN, JUL, AUG, SEP, OCT, NOV, DEC	};// 처음에 1로 여기서 선언을 해줘야 한다. 
	// enum = month, 이렇게 '=' 를 붙이면 안된다. 
	// enum = 연속된 숫자에 이름을 부여할 수 있는 기능이다.
	// 아무것도 부여하지 않을 경우 0부터 1씩 차례로 값이 부여된다. 
	// 열거체명을 이해서 열거체 타입의 변수를 선언도 가능하다. 
	// ex --> enum { NUM_0 NUM_1 NUM_2 NUM_3} --> 0,1,2,3 이렇게 된다.
	// enum { NUM_0 = 10, NUM_1 NUM_2 } --> 10부터 하여, 11, 12 이렇게 부여된다.
	// enum { NUM_0 = 10 NUM_1 NUM_2 = 16 NUM_3 } -->  10, 11, 16, 17 이렇게 부여된다. 
	int input;
	
	printf(" 월을 입력하세요 1[JAN] 2[FEB] 3[MAR] 4[APR] 5[MAY] 6[JUN] 7[JUL] 8[AUG] 9[SEP] 10[OCT] 11[NOV] 12[DEC]");
	//printf("월 중에 하나를 입력하시오 JAN(1), FEB(2), MAR(3), APR(4), MAY(5), JUN(6)\nJUL(7), AUG(8), SEP(9), OCT(10), NOV(11), DEC(12) ");
	// 위에 꺼는 안되고, 아래꺼는 된다. 왜 그런 것일까
	// 아래꺼가 열거상수에 숫자를 부여하는 형식이어서 그런 것일지 
	//printf(" 월을 입력하세요 1[JAN] 2[FEB] 3[MAR] 4[APR] 5[MAY] 6[JUN] 7[JUL] 8[AUG] 9[SEP] 10[OCT] 11[NOV] 12[DEC]");
	scanf("%d",&input);
	
	switch(input)// switch 문도 마찬가지, if 와 같이 ; 를 붙이면 안된다. 
	{
		case JAN: case MAR: case MAY: case JUL: case AUG: case OCT: case DEC:
			printf("%d월은 31일 입니다",input);
			break;
		case APR: case JUN: case SEP: case NOV:
			printf("%d월은 30일 입니다",input);
			break;
		case FEB:
			printf("%d월은 28일 입니다",input);
			break;
	}
	
	return 0;
}