用c语言输入一个表示月份的整数,判断它是大月还是小月。如果是大月,输出solar month;如果是小月,输出lunar month; 如果输入数据不合法, 则输出error。 注:设定2月、4月、6月、9月、11月为小月,其他月份为大月。
时间: 2024-10-25 15:03:26 浏览: 15
在 C 语言中,你可以通过检查用户输入的月份是否为给定的大月列表(除2月外),以及是否小于或等于12来实现这个功能。以下是一个简单的函数示例:
```c
#include <stdio.h>
int is_leap_year(int year) {
return (year % 4 == 0 && year % 100 != 0) || (year % 400 == 0);
}
int main() {
int month;
printf("请输入一个月份(1-12): ");
scanf("%d", &month);
if (month < 1 || month > 12) {
printf("Error: 输入的数据不合法.\n");
} else {
if (month == 2) {
printf(is_leap_year(month / 12) ? "solar month" : "lunar month\n");
} else if (month in {4, 6, 9, 11}) {
printf("lunar month\n");
} else {
printf("solar month\n");
}
}
return 0;
}
```
在这个程序中,我们首先检查月份是否在1到12之间。如果不在,就输出错误信息。对于二月,由于闰年的特殊性,我们额外判断是否为闰年来确定是大月还是小月。其余的非闰年的四、六、九和十一月被视为小月,而其它不是2月的大月则是普通的大月。
请注意,C语言中并没有 `in` 关键字用于集合操作,这里只是一个简化的描述。实际代码中应使用数组或 switch 语句来判断。
阅读全文