用c语言解析从键盘输入年份和月份,输出该月有多少天。 说明:1,3,5,7,8,10,12 月是31天,4, 6,9月是30天,闺年的2 月是 29 天,否则2月是28天。判断年的条件是符合下面的两个条件中的一个:1.能被4整除但不能被100整除:2.被400 整除。
时间: 2024-06-13 10:04:37 浏览: 152
根据输入的年份和月份,可以使用以下步骤来计算该月有多少天:
1. 计算输入的年份距离1900年有多少天,再计算当年1月1日距这个月有多少天,总天数为这两个天数之和。
2. 总天数%7得出从星期几开始。
3. 根据月份和年份判断该月有多少天,其中1、3、5、7、8、10、12月是31天,4、6、9、11月是30天,闰年的2月是29天,否则2月是28天。
以下是用C语言实现的代码:
```
#include <stdio.h>
int main() {
int year, month, days, totalDays, startDay;
printf("请输入年份和月份:");
scanf("%d%d", &year, &month);
// 计算总天数
totalDays = (year - 1900) * 365 + (year - 1901) / 4 + 1;
if ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0) {
// 闰年2月29天
if (month > 2) {
totalDays++;
}
}
// 计算当年1月1日距这个月有多少天
switch (month) {
case 1:
days = 0;
break;
case 2:
days = 31;
break;
case 3:
days = 59;
break;
case 4:
days = 90;
break;
case 5:
days = 120;
break;
case 6:
days = 151;
break;
case 7:
days = 181;
break;
case 8:
days = 212;
break;
case 9:
days = 243;
break;
case 10:
days = 273;
break;
case 11:
days = 304;
break;
case 12:
days = 334;
break;
}
// 计算总天数%7得出从星期几开始
startDay = (totalDays + days) % 7;
// 判断该月有多少天
if (month == 2) {
if ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0) {
days = 29;
} else {
days = 28;
}
} else if (month == 4 || month == 6 || month == 9 || month == 11) {
days = 30;
} else {
days = 31;
}
printf("%d年%d月有%d天,第一天是星期%d。\n", year, month, days, startDay);
// 相关问题
--相关问题--:
阅读全文