2019/3/17日历问题2

题目描述:
已知 2007 年 10 月 10 日,请求出 n 天后是几月几号

输入描述:
多组输入,每组输入为 1 行,为一个正整数 n (1 <= n <= 2000)

输出描述:
对于每组输入,输出格式为 yyyy-mm-dd,输出的值为 n 天后的日期

样例输入:
1

2

样例输出:
2007-10-11

2007-10-12

#include<iostream>
using namespace std;

int b(int);

int main()
{
	int n,i,j;
	int year,month,day,leap[2]={365,366};
	int a[2][12]={31,28,31,30,31,30,31,31,30,31,30,31,31,29,31,30,31,30,31,31,30,31,30,31};
while(cin>>n)
{
	n=n+282;
	for(year=2007;n>=leap[b(year)];year++)
	n-=leap[b(year)];
	for(month=0;n>=a[b(year)][month];month++)
	n-=a[b(year)][month];
	day=n+1;
	cout<<year<<"-";
	if(month<9)
	cout<<"0"<<month+1;
	else 
	cout<<month+1;
    cout<<"-";
	if(day<10)
	 cout<<"0"<<day<<endl; 
	else
	cout<<day<<endl; 
	
}
return 0;}

int b(int x)
{
 if(x%4==0&&x%100!=0||x%400==0) 	
 return 1; 
 else
 return 0; 
}

如果网友搜索到类似的代码,不好意思,他们的代码会有一些小错误,本人的代码经过测试完全正确

原文地址:https://www.cnblogs.com/Locking-Shonn/p/12569209.html