题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2005

转载于:https://blog.csdn.net/tigerisland45/article/details/51758382

第几天?

                          Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)
                                                   Total Submission(s): 177873    Accepted Submission(s): 63023

Problem Description
给定一个日期,输出这个日期是该年的第几天。
 
Input
输入数据有多组,每组占一行,数据格式为YYYY/MM/DD组成,具体参见sample input ,另外,可以向你确保所有的输入数据是合法的。
 
Output
对于每组输入数据,输出一行,表示该日期是该年的第几天。
 
Sample Input
1985/1/20
2006/3/12
 
Sample Output
20
71
 
#include <stdio.h>

int leapyear_day(int year, int month)
{
    // 1月或2月不用加1天,其他月份润年加1天,非润年不用加1天
    )
        ;
    else
         == ) && (year %  != )) || (year %  == )) ?  : ;
}

int main(void)
{
    int year, month, day;
    int days;
    int monthsum[] = {  // 到某月份的天数,润年另外加天数
                                         // 1月
        ,                                 // 2月
        ,  +                              // 3月
        ,  +  +                           // 4月
        ,  +  +  +                        // 5月
        ,  +  +  +  +                     // 6月
        ,  +  +  +  +  +                  // 7月
        ,  +  +  +  +  +  +               // 8月
        ,  +  +  +  +  +  +  +            // 9月
        ,  +  +  +  +  +  +  +  +         // 10月
        ,  +  +  +  +  +  +  +  +  +      // 11月
        ,  +  +  +  +  +  +  +  +  +  +   // 12月
    };

    while (scanf("%d/%d/%d", &year, &month, &day) != EOF) {
        // 天数 = 润年需要加的天数(根据年和月计算) + 到某月天数 + 月内天数
        days = leapyear_day(year, month) + monthsum[month - ] + day;

        // 输出结果
        printf("%d\n", days);
    }

    ;
}
 
2018-04-23
04-25 08:16