enum Month { JANUARY, FEBRUARY, MARCH, APRIL, MAY, JUNE, JULY, AUGUST, SEPTEMBER, OCTOBER, NOVEMBER, DECEMBER };enum Month currentMonth = JULY; currentMonth = MARCH;printf("%d",MARCH);
时间: 2024-04-18 17:28:49 浏览: 15
这段代码定义了一个枚举类型 `Month`,它包含了一年中的所有月份。每个月份代表一个整数值,从0开始。
在代码中,首先定义了枚举类型 `Month`,然后声明了一个变量 `currentMonth` 并将其初始化为 `JULY`。接着,又将 `currentMonth` 的值改变为 `MARCH`。最后,使用 `printf` 函数打印出 `MARCH` 的值。
根据代码的逻辑,最后一行的输出将是 `2`,因为在枚举类型中,`MARCH` 对应的整数值是2。
请注意,枚举类型中的每个值都有一个与之关联的整数值。在这个例子中,`JANUARY` 是0,`FEBRUARY` 是1,以此类推。
希望这个解释对你有所帮助!如果还有其他问题,请随时提问。
相关问题
定义枚举型Month,其中的枚举项以英文月份名January、February等表示;实现如下的getDays()函数;使得下述程序能正确打印指定年月的天数。 说明:函数返回指定年月的天数,getDays(2022,April)应返回30,请注意区分闰年。 函数接口定义: int getDays(int year, enum Month m); 裁判测试程序样例: #include <stdio.h> #include <stdbool.h> bool isLeapYear(const int year){ //四年一闰,百年不闰,四百年又闰 if (year%400==0) return true; else if (year%100==0) return false; else if (year%4==0) return true; else return false; } //此处定义enum Month枚举类型 //此处定义getDays()函数 int main() { printf("Year %d, Month %d: %d days\n",1600,(int)February,getDays(1600,February)); printf("Year %d, Month %d: %d days\n",2100,(int)February,getDays(2100,February)); printf("Year %d, Month %d: %d days\n",2104,(int)February,getDays(2104,February)); printf("Year %d, Month %d: %d days\n",1997,(int)February,getDays(1997,February)); printf("Year %d, Month %d: %d days\n",1996,(int)February,getDays(1996,February)); for (int i=1;i<=12;i++){ printf("Year %d, Month %d: %d days\n",5102,(enum Month)i,getDays(5102,(enum Month)i)); } return 0; } 输入样例: 输出样例: Year 1600, Month 2: 29 days Year 2100, Month 2: 28 days Year 2104, Month 2: 29 days Year 1997, Month 2: 28 days Year 1996, Month 2: 29 days Year 5102, Month 1: 31 days Year 5102, Month 2: 28 days Year 5102, Month 3: 31 days Year 5102, Month 4: 30 days Year 5102, Month 5: 31 days Year 5102, Month 6: 30 days Year 5102, Month 7: 31 days Year 5102, Month 8: 31 days Year 5102, Month 9: 30 days Year 5102, Month 10: 31 days Year 5102, Month 11: 30 days Year 5102, Month 12: 31 days
参考代码如下:
```
#include <stdio.h>
#include <stdbool.h>
enum Month {January = 1, February, March, April, May, June, July, August, September, October, November, December};
bool isLeapYear(const int year){
//四年一闰,百年不闰,四百年又闰
if (year%400==0)
return true;
else if (year%100==0)
return false;
else if (year%4==0)
return true;
else
return false;
}
int getDays(int year, enum Month m) {
int days = 0;
switch(m) {
case January:
case March:
case May:
case July:
case August:
case October:
case December:
days = 31;
break;
case April:
case June:
case September:
case November:
days = 30;
break;
case February:
if (isLeapYear(year)) {
days = 29;
} else {
days = 28;
}
break;
}
return days;
}
int main() {
printf("Year %d, Month %d: %d days\n",1600,(int)February,getDays(1600,February));
printf("Year %d, Month %d: %d days\n",2100,(int)February,getDays(2100,February));
printf("Year %d, Month %d: %d days\n",2104,(int)February,getDays(2104,February));
printf("Year %d, Month %d: %d days\n",1997,(int)February,getDays(1997,February));
printf("Year %d, Month %d: %d days\n",1996,(int)February,getDays(1996,February));
for (int i=1;i<=12;i++){
printf("Year %d, Month %d: %d days\n",5102,(enum Month)i,getDays(5102,(enum Month)i));
}
return 0;
}
```
输出结果:
```
Year 1600, Month 2: 29 days
Year 2100, Month 2: 28 days
Year 2104, Month 2: 29 days
Year 1997, Month 2: 28 days
Year 1996, Month 2: 29 days
Year 5102, Month 1: 31 days
Year 5102, Month 2: 28 days
Year 5102, Month 3: 31 days
Year 5102, Month 4: 30 days
Year 5102, Month 5: 31 days
Year 5102, Month 6: 30 days
Year 5102, Month 7: 31 days
Year 5102, Month 8: 31 days
Year 5102, Month 9: 30 days
Year 5102, Month 10: 31 days
Year 5102, Month 11: 30 days
Year 5102, Month 12: 31 days
```
枚举类型未设定范围,相比于enum
class更加灵活,可以自定义枚举类型的值。而enum类型的值是固定的,无法修改。
在class中,我们可以使用常量或者静态变量来定义枚举类型,同时可以定义方法和属性来扩展枚举类型的功能。
例如,我们可以使用以下代码来定义一个月份的枚举类型:
```
public class Month {
public static final int JANUARY = 1;
public static final int FEBRUARY = 2;
public static final int MARCH = 3;
//...
public static final int DECEMBER = 12;
}
```
在使用时,可以直接调用Month类中定义的常量来表示月份。
而如果使用enum类型来定义月份,则需要使用以下代码:
```
public enum Month {
JANUARY, FEBRUARY, MARCH, APRIL, MAY, JUNE,
JULY, AUGUST, SEPTEMBER, OCTOBER, NOVEMBER, DECEMBER
}
```
此时,Month枚举类型的值只能是JANUARY、FEBRUARY等12个月份中的一个,无法自定义。