定义一个结构体变量(包括年、月、日)。计算该日在本年中是第几天,注意闰年问题。
输入格式
年月日
输出格式
当年第几天
样例输入
2000 12 31
样例输出
366
定义时间的结构体,详情见下一篇文章关于结构体的写法;
判断是否为闰年有一个布尔值,用于变量temp是29(闰年)还是28(不是闰年),之后累加计算是多少天
cpp
#include <iostream>
// 计算输入日期是一年中的第几天
int CalcuCount(int year, int month, int day) {
int Count = 0;
// 判断闰年
bool isleap;
if ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0) {
// 如果是闰年,则有366天
isleap = true;
} else {
// 如果不是闰年,则有365天
isleap = false;
}
if (month == 2) {
// 对于2月份,加上当前的天数即可
Count = 31 + day;
} else {
// 如果是其他月份
int temp = 0;
if (isleap){
// 如果是闰年,则2月有29天
temp = 29;
} else {
// 如果不是闰年,则2月有28天
temp = 28;
}
// 利用temp来计算累积天数
switch (month) {
// 对于1、3、5、7、8、10、12月,则累积天数为当前月的天数加上之前的月份天数
case 1: Count = day; break;
case 3: Count = 31 + temp + day; break;
case 4: Count = 62 + temp + day; break;
case 5: Count = 92 + temp + day; break;
case 6: Count = 123 + temp + day; break;
case 7: Count = 153 + temp + day; break;
case 8: Count = 184 + temp + day; break;
case 9: Count = 215 + temp + day; break;
case 10: Count = 245 + temp + day; break;
case 11: Count = 276 + temp + day; break;
case 12: Count = 306 + temp + day; break;
}
}
return Count;
}
struct Date {
int year;
int month;
int day;
};
int main() {
struct Date date;
std::cin >> date.year >> date.month >> date.day;
std::cout << CalcuCount(date.year, date.month, date.day) << std::endl;
return 0;
}