«
输入你的生日,计算你已经活了多少天
点亮灯 发布于
阅读:24
C++
活了多少天.rar
#include <iostream>
#include <ctime>
#include <string>
using namespace std;
// 检查是否为闰年
bool isLeapYear(int year) {
if ((year % 4 == 0 && year % 100 != 0) || (year % 400 == 0)) {
return true;
}
return false;
}
// 获取某个月的天数
int getDaysInMonth(int year, int month) {
if (month == 2) {
return isLeapYear(year) ? 29 : 28;
} else if (month == 4 || month == 6 || month == 9 || month == 11) {
return 30;
} else {
return 31;
}
}
// 计算从公元1年1月1日到给定日期的总天数
long calculateDaysSinceEpoch(int year, int month, int day) {
long totalDays = 0;
// 计算年的天数
for (int y = 1; y < year; ++y) {
totalDays += isLeapYear(y) ? 366 : 365;
}
// 计算月的天数
for (int m = 1; m < month; ++m) {
totalDays += getDaysInMonth(year, m);
}
// 加上当月的天数
totalDays += day;
return totalDays;
}
int main() {
int birthYear, birthMonth, birthDay;
// 获取用户输入的出生日期
cout << "请输入您的出生年月日(格式:YYYY MM DD):";
cin >> birthYear >> birthMonth >> birthDay;
// 获取当前日期
time_t now = time(0);
tm *currentTime = localtime(&now);
int currentYear = currentTime->tm_year + 1900;
int currentMonth = currentTime->tm_mon + 1;
int currentDay = currentTime->tm_mday;
// 计算出生日期和当前日期的总天数
long birthDays = calculateDaysSinceEpoch(birthYear, birthMonth, birthDay);
long currentDays = calculateDaysSinceEpoch(currentYear, currentMonth, currentDay);
// 计算天数差
long daysAlive = currentDays - birthDays;
// 输出结果
cout << "从" << birthYear << "年" << birthMonth << "月" << birthDay << "日";
cout << "到今天" << currentYear << "年" << currentMonth << "月" << currentDay << "日";
cout << ",您已经活了" << daysAlive << "天。" << endl;
return 0;
}