«

输入你的生日,计算你已经活了多少天

点亮灯 发布于 阅读: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;
}