2005 第几天?

来源:互联网 发布:ubuntu命令行出现乱码 编辑:程序博客网 时间:2024/06/10 01:38

第几天?

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


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

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

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

Sample Input
1985/1/202006/3/12
 

Sample Output
2071

这个题比较简单,方法也挺多,还是贴上自己感觉很好的方法吧,

运用数组法挺好,也很省代码,直接循环累加即可.....

#include<stdio.h>int main(){    int i,a,b,c,s;    int x[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};    while(~scanf("%d/%d/%d",&a,&b,&c))    {        s=c;        for(i=0;i<b;++i)        {            s+=x[i];        }        if(b>2&&(a%4==0&&a%100!=0)||a%400==0)        {            ++s;        }        printf("%d\n",s);    }    return 0;}


其实还有个方法,倒是很不错,还是偶然间见到的......

这个不用数组也能实现功能,也比较方便。

#include<stdio.h>int main(){int i,a,b,c,s;while(~scanf("%d/%d/%d",&a,&b,&c)){s=c;for(i=1;i<b;++i){if(i==1||i==3||i==5||i==7||i==8||i==10){s+=31;}else if(i==4||i==6||i==9||i==11){s+=30;}else{if(a%4==0&&a%100!=0||a%400==0){s+=29;}else{s+=28;}}}printf("%d\n",s);}return 0;}



0 0
原创粉丝点击