1129: 第几天
题目描述
你知道,2012-1-1是该年的第1天,而9999-9-9呢?给你一个具体的日期,计算该日期是该年的第几天。
输入
输入一个日期,格式为:Year-month-day。year是小于9999的正整数。
输出
一个整数,表示该日期是该年的第几天。
样例输入 Copy
2012-3-1
样例输出 Copy
61
代码
#include<stdio.h>
int main()
{
int i,year,month,day,dayday;
scanf("%d%*c%d%*c%d",&year,&month,&day);
dayday=day; //当前月份的天数
//利用循环求得当前月份之前的月份天数之和
for(i=1;i<month;i++)
{
if(i==1||i==3||i==5||i==7||i==8||i==10||i==12)
dayday+=31;
else if(year%400==0||(year%4==0&&year%100!=0)&&i==2) //是闰年并且月份为2月时
dayday+=29;
else if(i==4||i==6||i==9||i==11)
dayday+=30;
else
dayday+=28;
}
printf("%d\n",dayday);
return 0;
}
代码
#include<stdio.h>
int main()
{
int i,year,month,day,dayi=0;
int a[13]={0,31,28,31,30,31,30,31,31,30,31,30,31}; //定义一个数组存储每个月份的天数
//输入数据
scanf("%d-%d-%d",&year,&month,&day);
//判断是否为闰年,从而确定2月该有多少天
if(year%400==0||(year%4==0&&year%100!=0))
a[2]=29;
//循环求当前月份之前的月份天数总和
for(i=1;i<month;i++)
{
dayi+=a[i];
}
dayi+=day; //将当前月份的天数加上去
printf("%d\n",dayi);
return 0;
}
说明
闰年为400的倍数或者是4的倍数但不是100的倍数。