给定一个日期,输出这个日期是该年的第几天。
Input Specification:
输入数据有多组,每组占一行,数据格式为YYYY/MM/DD组成,具体参见sample input ,另外,可以向你确保所有的输入数据是合法的。
Output Specification:
对于每组输入数据,输出一行,表示该日期是该年的第几天。
Sample Input:
1985/1/20
2006/3/12
Sample Output:
20
71
思路:
判断任意年份是否为闰年,需要满足以下条件中的任意一个:
① 该年份能被 4 整除同时不能被 100 整除;
② 该年份能被400整除。
闰年和不是闰年的加不同的月历。
相似题目:
PAT B1028 人口普查
代码:
/**
* 02.27 22:42
*
**/
#include <algorithm>
#include <iostream>
using namespace std;
int mon1[13] = {0, 31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
int mon2[13] = {0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
int main() {
int y, m, d, sum;
bool flag = false;
while (scanf("%d/%d/%d", &y, &m, &d) != EOF) {
sum = 0;
// 判断闰年
if ((y % 4 == 0 && y % 100 != 0) || (y % 400 == 0))
flag = true;
for (int i = 1; i < m; i++) {
if (flag == true)
sum += mon1[i]; // 如果是闰年就加闰年的月历
else if (flag == false)
sum += mon2[i]; // 不是闰年,加平年的月历
}
sum += d;
flag = false;
printf("%d\n", sum);
}
return 0;
}