解题思路:
题比较简答,但比较复杂
注意事项:
1.是否为闰年
2.平月大月
3.对00年的特殊处理
4.相同时间的去除
5.排序
参考代码:
#include <iostream> #include <string> #include <sstream> #include <algorithm> #include <set> using namespace std; //首先判断是否闰年 set<string>s; bool isrun(int n) { if (n % 100 == 0) { if (n % 400 == 0) return true; return false; } else { if (n % 4 == 0 && n % 100 != 0) return true; return false; } } int string2int(string str) { int n; stringstream ss; ss << str; ss >> n; return n; } string int2string(int n) { string s; stringstream ss; ss << n; ss >> s; return s; } bool isProData(int mon, int day) { if (mon == 1 || mon == 3 || mon == 5 || mon == 7 || mon == 8 || mon == 10 || mon == 12) { if (day <= 31) return true; return false; } else { if (day <= 30) return true; return false; } } bool isdata(string year, string mon, string day) { int yearInt = string2int(year); int monInt = string2int(mon); int dayInt = string2int(day); //先去除月份 if (monInt > 12 || monInt <= 0) return false; if (dayInt <= 0 || dayInt >= 32) return false; if (yearInt >= 60) yearInt += 1900; else yearInt += 2000; if (isrun(yearInt)) { if (monInt == 2) { if(dayInt > 0 && dayInt <= 29) return true; else { return false; } } else { return isProData(monInt, dayInt); } } //不是闰年 else { if (monInt == 2) { if (dayInt > 0 && dayInt < 29) return true; else { return false; } } else { return isProData(monInt, dayInt); } } } void print(string a, string b, string c) { int time1 = string2int(a); if (time1 >= 60) time1 += 1900; else time1 += 2000; a = int2string(time1); s.insert(a + "-" + b + "-" + c); } int main() { string data; cin >> data; string t1, t2, t3; //取出三个时间 t1 = data.substr(0, 2); t2 = data.substr(3, 2); t3 = data.substr(6); //年月日 if (isdata(t1,t2,t3)) { print(t1, t2, t3); } //月日年 if (isdata(t3, t1, t2)) { print(t3, t1, t2); } //日月年 if (isdata(t3, t2, t1)) { print(t3, t2, t1); } set<string>::iterator it = s.begin(); for (it; it != s.end(); it++) cout << *it << endl; return 0; }
0.0分
0 人评分
矩阵乘法 (C++代码)浏览:1662 |
WU-拆分位数 (C++代码)浏览:819 |
C语言程序设计教程(第三版)课后习题5.7 (C语言代码)浏览:645 |
水仙花 (C语言代码)浏览:1163 |
核桃的数量 (C语言代码)浏览:726 |
图形输出 (C语言代码)浏览:1019 |
理财计划 (C语言代码)浏览:494 |
C语言程序设计教程(第三版)课后习题1.5 (C语言代码)浏览:497 |
C语言程序设计教程(第三版)课后习题11.3 (C语言代码)浏览:2206 |
C语言程序设计教程(第三版)课后习题6.8 (C语言代码)浏览:683 |