hdu 2005 第几天?(c语言)

hdu 2005 第几天?

link

题目描述

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

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

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

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

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

Sample Output
20
71

Author
lcy

问题解答

#include <stdio.h>

int main()
{
    int year,month,day;
    while(scanf("%d/%d/%d",&year,&month,&day)!=EOF)
    {
        if(((year%4==0)&&(year%100!=0))||(year%400==0))
        {
            int amount=0;
            for(int i=1;i<month;i++)
            {
                if(i==1||i==3||i==5||i==7||i==8||i==10||i==12)
                    amount+=31;
                if(i==4||i==6||i==9||i==11)
                    amount+=30;
                if(i==2)
                    amount+=29;
            }
            printf("%d\n",amount+day);
        }
        else
        {
            int amount=0;
            for(int i=1;i<month;i++)
            {
                if(i==1||i==3||i==5||i==7||i==8||i==10||i==12)
                    amount+=31;
                if(i==4||i==6||i==9||i==11)
                    amount+=30;
                if(i==2)
                    amount+=28;
            }
            printf("%d\n",amount+day);
        }
    }
}

笔记

  1. 闰年的定义:第一种闰年是可以被4整除但不能被100整除;第二种闰年是可以被400整除。
  2. 这个代码唯一可取的应该是逻辑思维,这样写要是被老师看到会被讽刺死的,优秀的代码应该是可视化程度很高的,通过调用函数进行简化,并且分块呈现。不过好在程序短,可以一口气吞下,而且也AC了,就懒得改了(gif.哭笑)

猜你喜欢

转载自blog.csdn.net/Sherry_Yue/article/details/83176689
今日推荐