首页 > 代码库 > [华为机试]判断身份证信息是否合法
[华为机试]判断身份证信息是否合法
代码为;
#include <iostream> #include <sstream> #include <fstream> #include <string> #include <vector> int main() { std::vector<std::string> identity; std::string temp; std::ifstream file("in.txt"); while(getline(file, temp) && temp != "0") { identity.push_back(temp); } for (size_t i = 0; i < identity.size(); i++) { if (identity[i].size() != 18) { std::cout << 1<<std::endl; continue; } for (int j = 0; j < 17; j++) { if (identity[i][j] < '0' && identity[i][j] > '9') { std::cout << 2 <<std::endl; continue; } } if (identity[i][17] != 'x' && (identity[i][17] < '0' || identity[i][17] > '9')) { std::cout << 3 <<std::endl; continue; } //年 std::string tempYear; for (int j = 0; j < 4; j++) { tempYear += identity[i][6 + j]; } int year = atoi(tempYear.c_str()); if (year < 1900 || year > 2100) { std::cout << 4<<std::endl; continue; } //月 std::string tempMonth; for (int j = 0; j < 2; j++) { tempMonth += identity[i][10 + j]; } int month = atoi(tempMonth.c_str()); if (month < 1 || month > 12) { std::cout << 5 <<std::endl; continue; } //day std::string tempDay; for (int j = 0; j < 2; j++) { tempDay += identity[i][12 + j]; } int day = atoi(tempDay.c_str()); if (day < 1 || day > 31) { std::cout << 6 << std::endl; continue; } if (month == 4 || month == 6 || month == 9 || month == 11 ) { if (day == 31) { std::cout << 6 <<std::endl; continue; } } if (month == 2) { if ( !((year % 4 == 0 && year % 100 != 0) || (year % 100 == 0 && year % 400 == 0))) { if (day == 29) { std::cout << 6 <<std::endl; continue; } } } std::cout<<0 <<std::endl; } system("pause"); return 0; }
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。