描述
输入年、月、日,计算该天是本年的第几天。
输入描述:
包括三个整数年(1<=Y<=3000)、月(1<=M<=12)、日(1<=D<=31)。
输出描述:
输入可能有多组测试数据,对于每一组测试数据, 输出一个整数,代表Input中的年、月、日对应本年的第几天。
示例1
输入:
1990 9 20
2000 5 1
复制
输出:
263
122
#include<stdio.h>
using namespace std;
void nextDay(int &year, int &month, int &day) {
int dayOfMonth[] = {0,31,28,31,30,31,30,31,31,30,31,30,31};
// 判断是否是闰年
int isLeap; // 1表示闰年
isLeap = (year % 400 == 0) || (year % 4==0 && year%100!=0);
if (isLeap) { //闰年,二月29天
dayOfMonth[2] = 29;
}
day++;
// 下一天已经是下一月
if (day > dayOfMonth[month]) {
month++;
day = 1;
}
// 月份超过12
if (month > 12) {
month = 1;
year++;
}
// printf("Next day is: year=%d month=%d day=%d",year, month, day);
}
int main() {
int year, month, day;
while(scanf("%d %d %d",&year, &month, &day) != -1) {
int next=1;
int curMonth=1; // 表示当前的日期
int curDay=1;
while(1) {
// 如果相等则运行 到了指定的日期
if (month== curMonth && day == curDay) {
break;
}
nextDay(year, curMonth, curDay);
next++;
}
printf("%d\n",next);
}
return 0;
}