一、要求
输入数据有多组,每组占一行,数据格式为YYYY/MM/DD组成,具体参见sample input ,另外,可以向你确保所有的输入数据是合法的。
对于每组输入数据,输出一行,表示该日期是该年的第几天。
二、代码实现
方法一
#include<stdio.h>
int main()
{
int y, m, d, n;
while (~scanf("%d/%d/%d", &y, &m, &d))
{
if (m == 1)
n = d;
else if (m == 2)
n = 31 + d;
else if (m == 3)
n = 31 + 28 + d;
else if (m == 4)
n = 31 + 28 + 31 + d;
else if (m == 5)
n = 31 + 28 + 31 + 30 + d;
else if (m == 6)
n = 31 + 28 + 31 + 30 + 31 + d;
else if (m == 7)
n = 31 + 28 + 31 + 30 + 31 + 30 + d;
else if (m == 8)
n = 31 + 28 + 31 + 30 + 31 + 30 + 31 + d;
else if (m == 9)
n = 31 + 28 + 31 + 30 + 31 + 30 + 31 + 31 + d;
else if (m == 10)
n = 31 + 28 + 31 + 30 + 31 + 30 + 31 + 31 + 30 + d;
else if (m == 11)
n = 31 + 28 + 31 + 30 + 31 + 30 + 31 + 31 + 30 + 31 + d;
else if (m == 12)
n = 31 + 28 + 31 + 30 + 31 + 30 + 31 + 31 + 30 + 31 + 30 + d;
if ((y%4==0&&y%100!=0||y%400==0)&&m>=3)
n = n + 1;
printf("%d\n", n);
}
return 0;
}
方法二
#include<stdio.h>
int main()
{
int days[]={0,31,28,31,30,31,30,31,31,30,31,30}; //这里可以没有0,后面的for循环改成(i<m-1即可)
int y,m,d,i,sum;
while(~scanf("%d/%d/%d",&y,&m,&d))
{
sum=0;
for(i=0;i<m;i++)
sum+=days[i];
sum+=d;
if((y%4==0&&y%100!=0||y%400==0)&&m>=2)
sum+=1;
printf("%d\n",sum);
}
return 0;
}