判断日期是这一年的第几天 输入某年某月某日,判断这一天是这一年的第几天?提示:可以用switch语句来进行判断
时间: 2024-09-30 16:14:40 浏览: 38
java 输入某年某月某日,判断这一天是这一年的第几天
要使用 switch 语句来判断某年某月某日是一年的第几天,首先你需要了解每个月的天数,并考虑闰年的情况。这里是一个基础的算法实现,假设月份是1-12,且闰年规则为公历年份能被4整除的是闰年,但是世纪年(即百年年份)需能被400整除才是闰年:
```c
#include <stdio.h>
int is_leap_year(int year) {
return year % 4 == 0 && (year % 100 != 0 || year % 400 == 0);
}
int days_in_month(int month, int year) {
switch(month) {
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:
return 31;
case 4:
case 6:
case 9:
case 11:
return 30;
default:
if(is_leap_year(year)) {
return 29; // 闰年二月有29天
} else {
return 28; // 非闰年二月有28天
}
}
}
int day_of_year(int month, int date, int year) {
int total_days = 0;
for(int i = 1; i < month; i++) {
total_days += days_in_month(i, year);
}
total_days += date - 1; // 加上当前日期之前的天数
return total_days;
}
int main() {
int year, month, date;
printf("请输入年月日(格式: yyyy mm dd): ");
scanf("%d %d %d", &year, &month, &date);
if(month > 12 || date > days_in_month(month, year)) {
printf("输入错误!\n");
} else {
int day = day_of_year(month, date, year);
printf("该日期是 %d 年的第 %d 天.\n", year, day);
}
return 0;
}
```
阅读全文