题目来源:http://acm.hdu.edu.cn/showproblem.php?pid=2005
第几天?
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 85568 Accepted Submission(s): 32282
Problem Description
给定一个日期,输出这个日期是该年的第几天。
Input
输入数据有多组,每组占一行,数据格式为YYYY/MM/DD组成,具体参见sample input ,另外,可以向你确保所有的输入数据是合法的。
Output
对于每组输入数据,输出一行,表示该日期是该年的第几天。
Sample Input
1985/1/20 2006/3/12
Sample Output
20 71
Author
lcy
Source
Recommend
#include <iostream>
#include <cstdio>
#include <cstring>
using namespace std;
int arr[13] = {0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
bool IsLeapYear(int iYear)//判断是否为闰年
{
if((iYear % 4 == 0 && iYear % 100 != 0) || (iYear % 400 == 0))
return true;
return false;
}
int ComputeDay_Num(int iMonth, int iData)//计算第几天
{
int iNum = 0;
for(int i = 1; i < iMonth; ++i)
iNum += arr[i];
iNum += iData;
return iNum;
}
int main()
{
int iY, iM, iD;
while(~scanf("%d/%d/%d", &iY, &iM, &iD))
{
int iNum = 0;
iNum = ComputeDay_Num(iM, iD);
if(IsLeapYear(iY) && iM > 2)//如果是润年并且大于2月,还要记得加1;
printf("%d\n", iNum+1);
else
printf("%d\n", iNum);
}
return 0;
}