(1915) 第几天
Description
给定一个日期,输出这个日期是该年的第几天。
Input
输入数据有多组,每组占一行,数据格式为YYYY-MM-DD组成,具体参见Sample Input,另外,可以向你确保所有的输入数据是合法的。
Output
对于每组输入数据,输出一行,表示该日期是该年的第几天。
Sample Input
2000-01-01
Sample Output
1

[参考解答]
(1)

#include "stdio.h"
int main()
{
    int y,m,d; //分别代表年月日
    int days;  //计算得到的天数
    while (scanf("%d-%d-%d",&y,&m,&d)!=EOF)
    {
        days=d;
        //下面要加上前m-1月的天数
        int i;
        for(i=1; i<m; i++)
        {
            switch(i)
            {
            case 2:
                days+=((y%4==0&&y%100!=0)||y%400==0)?29:28;
                break;
            case 4:
            case 6:
            case 9:
            case 11:
                days+=30;
                break;
            default:
                days+=31;
                break;
            }
        }
        printf("%d\n",days);
    }
    return 0;
}

(2)

#include "stdio.h"
int main()
{
    int y,m,d; //分别代表年月日
    int days;  //计算得到的天数
    int i;
    while (scanf("%d-%d-%d",&y,&m,&d)!=EOF)
    {
        days=d;
        //下面要加上前m-1月的天数
        for(i=1; i<m; i++)
        {
            if(i==1||i==3||i==5||i==7||i==8||i==10||i==12)
                days+=31;
            else if (i==4||i==6||i==9||i==11)
                days+=30;
            else
                days+=((y%4==0&&y%100!=0)||y%400==0)?29:28;
        }
        printf("%d\n",days);
    }
    return 0;
}

(3)后面要学习数组。然后就可以这样来了(对数组充满期待吧)

#include "stdio.h"
int main()
{
    int y,m,d; //分别代表年月日
    int days;  //计算得到的天数
    int i;
    int a[13]= {0,31,28,31,30,31,30,31,31,30,31,30,31};
    while (scanf("%d-%d-%d",&y,&m,&d)!=EOF)
    {
        days=d;
        //下面要加上前m-1月的天数
        for(i=1; i<m; i++)
        {
            days+=a[i];
        }
        if(m>2&&((y%4==0&&y%100!=0)||y%400==0)) //若闰年,且晚于2月,加一天
            days++;
        printf("%d\n",days);
    }
    return 0;
}

(4)有同学写成下面的代码,结果对,但这样的程序的确不好

#include "stdio.h"
int main()
{
    int y,m,d; //分别代表年月日
    int days;  //计算得到的天数
    while (scanf("%d-%d-%d",&y,&m,&d)!=EOF)
    {
        if(((y%4==0)&&(y%100!=0))||(y%400==0))
        {
            switch(m)
            {
            case 1:
                days=d;
                break;
            case 2:
                days=d+31;
                break;
            case 3:
                days=d+31+29;
                break;
            case 4:
                days=d+31+29+31;
                break;
            case 5:
                days=d+31+29+31+30;
                break;
            case 6:
                days=d+31+29+31+30+31;
                break;
            case 7:
                days=d+31+29+31+30+31+30;
                break;
            case 8:
                days=d+31+29+31+30+31+30+31;
                break;
            case 9:
                days=d+31+29+31+30+31+30+31+31;
                break;
            case 10:
                days=d+31+29+31+30+31+30+31+31+30;
                break;
            case 11:
                days=d+31+29+31+30+31+30+31+31+30+31;
                break;
            case 12:
                days=d+31+29+31+30+31+30+31+31+30+31+30;
                break;
            }
        }
        else
        {
            switch(m)
            {
            case 1:
                days=d;
                break;
            case 2:
                days=d+31;
                break;
            case 3:
                days=d+31+28;
                break;
            case 4:
                days=d+31+28+31;
                break;
            case 5:
                days=d+31+28+31+30;
                break;
            case 6:
                days=d+31+28+31+30+31;
                break;
            case 7:
                days=d+31+28+31+30+31+30;
                break;
            case 8:
                days=d+31+28+31+30+31+30+31;
                break;
            case 9:
                days=d+31+28+31+30+31+30+31+31;
                break;
            case 10:
                days=d+31+28+31+30+31+30+31+31+30;
                break;
            case 11:
                days=d+31+28+31+30+31+30+31+31+30+31;
                break;
            case 12:
                days=d+31+28+31+30+31+30+31+31+30+31+30;
                break;
            }
        }
        printf("%d\n",days);
    }
    return 0;
}