问题描述
输入一个日期,输出该日期是当年的第几天。
输入描述
输入文件中有多个测试数据,每个测试数据占一行,为3个整数y、m、d。输入文件最后一行为3个0,代表输入结束。
输出描述
对每个测试数据,输出占一行,为一个数值,代表该日期是当年的第几天。
样例输入
2016 3 1
0 0 0
样例输出
61
#include <iostream>
using namespace std;
int main()
{
int year, month, day;
while (1)
{
cin >> year >> month >> day;
if (year == 0 && month == 0 && day == 0)
{
break;
}
int sum=0;
for (int i = 1; i < month; i++)
{
if (i == 1 || i == 3 || i == 5 || i == 7 || i == 8 || i == 10 || i == 12)
{
sum = sum + 31;
}
else
{
sum = sum + 30;
}
}
if (month > 2)
{
if ((year % 4 == 0 && year % 100 != 0)||year%400==0)
{
sum = sum - 1 ;
}
else
{
sum = sum - 2 ;
}
}
cout << sum+day << endl;
}
return 0;
}
我的想法是先把二月都当初30天,最后再判断是平年还是闰年,平年二月是28天,所以总天数减去两天,而闰年的二月是29天,所以只要减去一天。