题解 | #计算日期到天数转换#
计算日期到天数转换
https://www.nowcoder.com/practice/769d45d455fe40b385ba32f97e7bcded
#include <iostream>
using namespace std;
//获取每个月的天数
static int Getmonth(int year, int month, int day)
{
static int GetMonth[13] = { -1, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };
//判断是不是闰年
if ((month == 2) && ((year % 400 == 0) || ((year % 100 != 0 && year % 4 == 0))))
{
return 29;
}
return GetMonth[month];
}
int main()
{
int year;int month;int day;int sum=0;
cin >> year >> month >> day;
while (month >= 2)
{//2000,2,1//2100,4,2
--month;
sum+=Getmonth(year,month,day);
}
sum+=day;
cout<<sum;
return 0;
}
//主要函数分析
//Getmonth函数:
//这个函数是一个静态函数,它接受三个参数year、month和day,用于获取指定月份的天数。
//函数内部首先定义了一个静态数组GetMonth,用于存储每个月的天数,其中第一个元素为 - 1(占位,实际月份从 1 开始)。
//然后判断如果传入的月份是 2 月,并且满足闰年条件(能被 400 整除或者能被 4 整除但不能被 100 整除),则返回 29 天,否则返回对应月份在数组中的天数。
//main函数:
//首先定义了三个变量year、month和day以及一个用于累加天数的变量sum。
//从用户输入获取年、月、日的信息。
//然后通过一个循环,从当前输入的月份开始递减,每次调用Getmonth函数获取当前月份的天数,并累加到sum变量中。循环条//件是月份大于等于 2,这样可以确保遍历到 1 月份为止,从而累加了从 2 月(如果最初月份大于 2 则从更晚的月份开始)//到当前月份前一个月的所有天数。
//最后将输入的日期中的天数day加到sum中。
//输出sum的值,即从年初到给定日期的总天数
