HDU2005第几天
给定一个日期,输出这个日期是该年的第几天。

    Input
    输入数据有多组,每组占一行,数据格式为YYYY/MM/DD组成,具体参见sample input ,另外,可以向你确保所有的输入数据是合法的。

    Output
    对于每组输入数据,输出一行,表示该日期是该年的第几天。

    Sample Input
    1985/1/20
    2006/3/12

    Sample Output
    20
    715

注意输入格式和闰年
2月29日前与是否闰年无关

#include<cstdio>
#include<iostream>
#include<cstring>
using namespace std;
int main()
{
   
    int n,i,y,r,num;
    char s[15];
    while(gets(s))
    {
   
        n=(s[0]-'0')*1000+(s[1]-'0')*100+(s[2]-'0')*10+(s[3]-'0');
        if(s[6]=='/')
        {
   
            y=s[5]-'0';
            if(s[8]!='\0')
                r=(s[7]-'0')*10+(s[8]-'0');
            else if(s[8]=='\0')
                r=s[7]-'0';
        }
        else if(s[6]!='/')
        {
   
            y=(s[5]-'0')*10+(s[6]-'0');
            if(s[9]!='\0')
                r=(s[8]-'0')*10+(s[9]-'0');
            else if(s[9]=='\0')
                r=s[8]-'0';
        }
        switch(y)
        {
   
            case 1:num=r;break;
            case 2:num=r+31;break;
            case 3:num=r+59;break;
            case 4:num=r+90;break;
            case 5:num=r+120;break;
            case 6:num=r+151;break;
            case 7:num=r+181;break;
            case 8:num=r+212;break;
            case 9:num=r+243;break;
            case 10:num=r+273;break;
            case 11:num=r+304;break;
            case 12:num=r+334;break;
        }
        if(y>2&&((n%4==0&&n%100!=0)||n%400==0))
            num++;
        cout<<num<<'\n';
    }
    return 0;
}