第几天(日期计算)2014-2-21

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 main()
{
 int y,m,d,i;
 int t[]={31,28,31,30,31,30,31,31,30,31,30,31};
 while(scanf("%d/%d/%d",&y,&m,&d)!=EOF)
 {
 int days=0;
   
 
  if(y%4==0&&y%100!=0||y%400==0)
  {
  if(m>2)
  {
   for(i=0;i<m-1;i++)
  days+=t[i];
  days+=d;
  days++;
  }
 else
  {
  for(i=0;i<m-1;i++)
  days+=t[i]; 
  days+=d;
  }
 }
  else
  {
  for(i=0;i<m-1;i++)
  days+=t[i]; 
  days+=d;
        }
        printf("%d\n",days);
 }
 return 0;
}

优化后的代码:

#include<stdio.h>
int main()
{
 int y,m,d,i;
 int t[]={31,28,31,30,31,30,31,31,30,31,30,31};
 while(scanf("%d/%d/%d",&y,&m,&d)!=EOF)
 {
 int days=d;
  if(y%4==0&&y%100!=0||y%400==0)
 if(m>2)
 t[1]++;
 for(i=0;i<m-1;i++)
 days+=t[i];
 printf("%d\n",days);
 }
 return 0;
}

posted @ 2014-02-21 23:52  为梦出发  阅读(291)  评论(0编辑  收藏  举报