题解 | #计算日期到天数转换#
计算日期到天数转换
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的值,即从年初到给定日期的总天数