输入一个日期的年、月、日,计算并输出这天是该年的第几天。如来,2011年1月31日是该年的第31天
#include <iostream>
using namespace std;
bool isLeapYear(int year) { // 判断是否为闰年
if (year % 400 == 0 || (year % 4 == 0 && year % 100 != 0)) {
return true;
}
return false;
}
int getDayNum(int year, int month, int day) { // 计算该日期是该年的第几天
int day_num = 0;
int days_of_month[12] = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
if (isLeapYear(year)) { // 处理闰年的二月
days_of_month[1] = 29;
}
for (int i = 0; i < month - 1; i++) {
day_num += days_of_month[i];
}
day_num += day;
return day_num;
}
int main() {
int year, month, day;
cout << "请输入日期的年、月、日:" << endl;
cin >> year >> month >> day;
int day_num = getDayNum(year, month, day);
cout << year << "年" << month << "月" << day << "日是该年的第" << day_num << "天。" << endl;
return 0;
}
#include <iostream>
using namespace std;
// 判断是否为闰年
bool isLeapYear(int year) {
return (year % 4 == 0 && year % 100 != 0) || (year % 400 == 0);
}
// 计算该月份之前的天数
int getDaysBeforeMonth(int month, bool isLeap) {
int days = 0;
switch (month - 1) {
case 11: days += 30;
case 10: days += 31;
case 9: days += 30;
case 8: days += 31;
case 7: days += 31;
case 6: days += 30;
case 5: days += 31;
case 4: days += 30;
case 3: days += 31;
case 2: days += isLeap ? 29 : 28;
case 1: days += 31;
}
return days;
}
int main() {
int year, month, day;
cout << "请输入日期的年、月、日(用空格隔开):";
cin >> year >> month >> day;
bool isLeap = isLeapYear(year); // 判断是否为闰年
int daysBeforeMonth = getDaysBeforeMonth(month, isLeap); // 计算该月份之前的天数
int totalDays = daysBeforeMonth + day; // 计算总天数
cout << year << "年" << month << "月" << day << "日是该年的第" << totalDays << "天" << endl;
return 0;
}