日期问题

Problem Description

输入一个用年月日表示的日期,求该日期是该年的第几天。输入某年的第几天,输出这一天是该年的几月几号,茂茂解不出,需要你的帮助。

Input

开始有个整数k,表示询问的种类,如果k=1,后面有三个合法的整数a,b,c,表示输入的年月日,此时输出该日期是该年的第几天;如果k=2,后面有两个合法的整数a,b,求a年的第b天的日期。保证所有的输入合法。

Output

对于询问1,输出一个整数表示是该年的第几天。对于询问2,输出年月月,格式为****/**/** 如2013/09/07

Sample Input

2 2013 70
1 2013 3 1
1 2000 3 1

Sample Output

2013/03/11
60
61



#include <iostream>

using namespace std;
int isRN(int y)
{
    if((y%4==0&&y%100!=0)||y%400==0)
    {
        return 1;
    }
    return 0;
}
int a[2][13]={{0,31,28,31,30,31,30,31,31,30,31,30,31},{0,31,29,31,30,31,30,31,31,30,31,30,31}};
int main()
{
    int n;
    int y,m,d;
    int s;
    int flag;
    while(cin>>n)
    {

        s=0;
        if(n==1)
        {
                cin>>y>>m>>d;
                flag=isRN(y);
                for(int i=1;i<m;++i)
                {
                    s+=a[flag][i];
                }
                s+=d;
                cout<<s<<endl;
        }
        else if(n==2)
        {
            cin>>y>>s;
            flag=isRN(y);
            m=0;
            do{
                s-=a[flag][++m];
            }while(s>0);
            d = s+a[flag][m];
            if(m>=10)
            {
                cout<<y<<"/"<<m<<"/"<<d<<endl;
            }
            else
            {
                cout<<y<<"/0"<<m<<"/"<<d<<endl;

            }

        }


    }
    return 0;
}



原文地址:https://www.cnblogs.com/yldf/p/11900201.html