第几天?
描述
给定一个日期,输出这个日期是该年的第几天。 要求: 1、编写计算第几天的函数。
输入
输入数据有多组,输入第一行是一个正整数n,表示有n组测试数据。每组测试数据输入占一行,数据格式为YYYY/MM/DD组成,YYYY是4位的年份,MM是2位或者1位的月份,DD是2位或者1位的日期 。可以向你确保所有的输入数据是合法的。
输出
对于每组输入数据,输出一行,表示该日期是该年的第几天。
输入样例 1
2 1985/1/20 2006/3/12
输出样例 1
20 71
#include <iostream>
using namespace std;
// 判断是否为闰年
bool isLeapYear(int year) {
return (year % 4 == 0 && year % 100 != 0) || (year % 400 == 0);
}
// 计算该日期是这一年的第几天
int dayOfYear(int year, int month, int day) {
// 每个月的天数
int daysInMonth[] = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
// 如果是闰年,2月有29天
if (isLeapYear(year)) {
daysInMonth[1] = 29;
}
int dayOfYear = 0;
// 计算从1月到上个月的天数总和
for (int i = 0; i < month - 1; ++i) {
dayOfYear += daysInMonth[i];
}
// 加上当前月的天数
dayOfYear += day;
return dayOfYear;
}
int main() {
int n; // 测试数据的组数
cin >> n;
while (n--) {
int year, month, day;
char slash; // 用于读取 '/' 字符
cin >> year >> slash >> month >> slash >> day;
cout << dayOfYear(year, month, day) << endl;
}
return 0;
}