高考倒计时
小华想计算一下自己距离高考还有多少天,请你设计一个程序计算出具体天数。
比如:
2022年1月22日 到 2023年1月22日有365天。
2022年1月22日 到 2022年1月23日有1天。(当天日期不计算在内)
2012年1月22日距离2023年2月22日还有4049天。(要考虑闰年的情况)
共两行输入。
第一行:输入三个数据year_1 、 month_1、 day_1,用空格隔开,表示当前日期。
第二行:输入三个数据year_2、month_2、day_2,用空格隔开,表示考试日期。
(当前日期一定早于考试日期)
输出一个行,n表示天数
输入样例 1
2022 1 22 2022 1 23
输出样例 1
输入样例 2
2022 1 22 2023 1 22
输出样例 2
365
输入样例 3
2012 1 22 2023 2 22
输出样例 3
4049
#include <iostream> using namespace std; bool isLeapYear(int year) { return (year % 4 == 0 && year % 100 != 0) || (year % 400 == 0); } int getDaysInMonth(int year, int month) { switch (month) { case 2: return isLeapYear(year) ? 29 : 28; case 4: case 6: case 9: case 11: return 30; default: return 31; } } int daysToEndOfYear(int year, int month, int day) { int days = 0; for (int m = month; m <= 12; ++m) { days += getDaysInMonth(year, m); } days -= day; return days; } int daysFromStartOfYear(int year, int month, int day) { int days = day; for (int m = 1; m < month; ++m) { days += getDaysInMonth(year, m); } return days; } int countDays(int year_1, int month_1, int day_1, int year_2, int month_2, int day_2) { if (year_1 == year_2) { return daysFromStartOfYear(year_2, month_2, day_2) - daysFromStartOfYear(year_1, month_1, day_1); } else { int days = daysToEndOfYear(year_1, month_1, day_1) + daysFromStartOfYear(year_2, month_2, day_2); for (int y = year_1 + 1; y < year_2; ++y) { days += isLeapYear(y) ? 366 : 365; } return days; } } int main() { int year_1, month_1, day_1; int year_2, month_2, day_2; cin >> year_1 >> month_1 >> day_1; cin >> year_2 >> month_2 >> day_2; cout << countDays(year_1, month_1, day_1, year_2, month_2, day_2) << endl; return 0; }
原文链接:https://blog.csdn.net/M1stic/article/details/135314700?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522171910921916800215046170%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fblog.%2522%257D&request_id=171910921916800215046170&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~blog~first_rank_ecpm_v1~times_rank-14-135314700-null-null.nonecase&utm_term=2024%E5%B9%B4%E9%AB%98%E8%80%83%E5%87%BA%E5%88%86