C&C++_Basic/C_Condition
C언어 열거형 enum 사용 Month 일수 출력
mrawesome
2020. 3. 18. 21:46
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;
}