题解 | #打印日期#
打印日期
https://www.nowcoder.com/practice/b1f7a77416194fd3abd63737cdfcf82b
#include <iostream>
using namespace std;
class Date
{
public:
Date(int year,int dayofYear)
:_year(year) //初始化列表
,_dayofYear(dayofYear)
{}
void PrintDate()
{
int arr[] = {0,31,(isleapYear() ? 29:28),31,30,31,30,31,31,30,31,30,31}; //闰年day+1
int month = 1; //月份从1开始
while(_dayofYear > arr[month]) //只要输入的天数 大于该月的天数就 累减
{
_dayofYear -= arr[month];
month++;
}
//输出格式判断
if(month<10)
{
if(_dayofYear<10)
{
cout<<_year<<"-0"<<month<<"-0"<<_dayofYear<<endl;
}
else {
cout<<_year<<"-0"<<month<<"-"<<_dayofYear<<endl;
}
}
else if(_dayofYear<10)
cout<<_year<<"-"<<month<<"-0"<<_dayofYear<<endl;
else
{
cout<<_year<<"-"<<month<<"-"<<_dayofYear<<endl;
}
}
private:
int _year;
int _dayofYear;
bool isleapYear() //
{
return ((_year %4 == 0 && _year %100 != 0) || _year %400 == 0);
}
};
int main() {
int year,day;
cin>>year>>day;
Date d(year,day);
d.PrintDate();
}
// 64 位输出请用 printf("%lld")
顺丰集团工作强度 387人发布