给出年分m和一年中的第n天,算出第n天是几月几号
测试用例:
输入包括两个整数y(1<=y<=3000),n(1<=n<=366)。
可能有多组测试数据,对于每组数据, 按 yyyy-mm-dd的格式将输入中对应的日期打印出来。
输入
2000 3 2000 31 2000 40 2000 60 2000 61 2001 60
输出
2000-01-03 2000-01-31 2000-02-09 2000-02-29 2000-03-01 2001-03-01
代码如下:
#include<iostream> using namespace std; int main() { int dayArr[13]={0,31,28,31,30,31,30,31,31,30,31,30,31}; //把一年每个月的天数放在数组里 int year,day; int month=1; cin>>year>>day;//输入年和天 while(day>dayArr[month])//判断,输的天数是否大于该月的总天使,如果大于,减去这月的天数,月份加一 { day-=dayArr[month]; if(month==2&&((year%4==0&&year%100!=0)||(year%400==0)))//如果月份到了二月,需判断是否是闰年,如果是,就需要多减一天,因为默认二月是28 天 { day--; } month++; }//下边是调整要求的输出格式 if(month<10) { if(day<10) { cout <<year<<"-0"<<month<<"-0"<<day<<endl; } else{ cout <<year<<"-0"<<month<<"-"<<day<<endl; } } else { if(day<10) { cout <<year<<"-"<<month<<"-0"<<day<<endl; } else { cout <<year<<"-"<<month<<"-"<<day<<endl; } } return 0; }
除了这种方法,也可以写一个日期类来实现,比较复杂。