1.5211: 18岁
你到18岁需要过几天,当然你的18岁生日还有可能不存在,比如你是今年2月29日出生的,那你每四年就只能过一个生日,18不是4的倍数,所以没生日可过。
我们用变量sum表示我们到18岁的天数,接下来就只需要解决闰年还有平年的问题了,你是3月出生的,那今年闰年和你无关啊,你是二月前才有关联,所以二月之后生日的你需要看的是下一年是不是闰年。也就是你的1岁生日不是因为你出生的那年是闰年就是366天,而是因为1.今年是闰年,而且你是3月前出生。2.明年是闰年,而且你是3月后(包含)出生
两个数字之间的-可以用一个char字符读入
#include <bits/stdc++.h> using namespace std; //判断闰年函数 bool isLeapYear(int y) { if (y % 4 == 0 && y % 100 != 0 || y % 400 == 0) return true; return false; } int main() { int T; cin >> T; while (T--) { int y, m, d; char c; //读入年月日,中间用char隔开 cin >> y >> c >> m >> c >> d; //总日子数sum int sum = 0; //2.29没生日输出 if (m == 2 && d == 29) { cout << "-1" << endl; continue; } //3月之后(包括)看下一年 if (m > 2) y++; //循环18年 for (int i = y; i < y + 18; i++) { if (isLeapYear(i)) sum += 366; else sum += 365; } cout << sum << endl; } return 0; }