题目描述:给出年分m和一年中的第n天,算出第n天是几月几号。
分析:这道题可以通过转换为m年的1月0日+给定的天数n,来实现。年默认置成m年,月默认是1月,如果满了就往前进,直至符合给定的日期(和我们实现的日期类中的GetMonthDay很相似)。
具体实现代码如下:
using namespace std;
int GetMonthDay(int year ,int month)
{
int array[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};
if(month==2&&(year%4==0&&year%100!=0
||year%400==0))
{
return 29;
}
return array[month];
}
int main()
{
int year;
int day;
int month=1;
while(cin>>year>>day)
{
while(day>GetMonthDay(year,month))
{
if(month==12)
{
year++;
month=1;
}
day-=GetMonthDay(year,month);
month++;
}
printf("%04d-%02d-%02d\n",year,month,day);//c语言的格式控制符真的是超级好用呀
}
return 0;
}
下: