题目描述
给定一个日期, 输出这个日期是该年的第几天。
输入
数据格式为 YYYY/MM/DD组成, 具体参见输入示例。另外,所有输入数据是合法的。
输出
对于每组输入数据,输出一行,表示该日期是该年的第几天。
样例输入
1985/01/20 2006/03/12
样例输出
20 71
思路
闰年:year%4==0 && year%100!=0) || year%400==0,每月时间{31,29,31,30,31,30,31,31,30,31,30,31}。
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
int main(void)
{
char arr[11];
int str1[12]={31,29,31,30,31,30,31,31,30,31,30,31};
int str2[12]={31,28,31,30,31,30,31,31,30,31,30,31};
while(scanf("%s",arr)!=EOF){
int res=0;
int year=(arr[0]-'0')*1000+(arr[1]-'0')*100+(arr[2]-'0')*10+(arr[3]-'0');
int month=(arr[5]-'0')*10+(arr[6]-'0');
int day=(arr[8]-'0')*10+(arr[9]-'0');
if((year%4==0 && year%100!=0) || year%400==0){//闰年
for(int i=0;i<month-1;i++)
res+=str1[i];
res+=day;
}
else {//平年
for(int i=0;i<month-1;i++)
res+=str2[i];
res+=day;
}
printf("%d\n",res);
}
return 0;
}