- 问答
- 2024-08-10 20:30:22 @
任务:不改代码,让程序输出“一些字”
```cpp
#include <iostream>
#include <string>
#include <ctime>
#include <windows.h>
using namespace std;
bool checkID(const string& id) {
// 验证身份证号是否合法
// 这里只做简单的校验,实际应用中可能需要更复杂的算法
if (id.length() != 18) return false;
int sum = 0;
for (int i = 0; i < 17; ++i) {
sum += (i % 2 == 0) ? id[i] - '0' : (id[i] - '0') * 3;
}
int checkDigit = 10 - (sum % 10);
return checkDigit == (id[17] == 'X' || (checkDigit + '0') == id[17]);
}
bool checkPhone(const string& phone) {
// 验证电话号码是否合法
// 这里只做简单的校验,实际应用中可能需要更复杂的算法
if (phone.length() != 11) return false;
for (char digit : phone) {
if (!isdigit(digit)) return false;
}
return true;
}
int main() {
string name;
string id;
string phone;
int year, month, day;
cout << "请输入姓名:" ;
cin >> name;
cout << "输入身份证号:" ;
cin >> id;
if (checkID(id)) {
cout << "身份证验证成功!" << endl;
} else {
cout << "输入有误,请重新输入身份证号!" << endl;
return 0;
}
cout << "输入生日(格式:YYYYMMDD):";
cin >> year >> month >> day;
int age = 2024 - year - ((month < 1 || (month == 1 && day < 1)) ? 1 : 0);
if (age >= 18) {
cout << "输入的年龄合法!" << endl;
} else {
cout << "输入有误,请重新输入年龄!" << endl;
return 0;
}
cout << "输入电话号码:" << endl;
cin>>phone;
if (checkPhone(phone)) {
cout << "电话号码验证成功!" << endl;
} else {
cout << "输入有误,请重新输入电话号码!" << endl;
return 0;
}
cout << "欢迎使用我们的服务!" << endl;
cout << "一些字" << endl;
return 0;
}
```
注释:
身份证号的校验码计算方法如下:
从身份证号的第1位开始,到第17位,依次对这17位数字进行计算。对于这17位中的奇数位置(即第1位、第3位、第5位...第15位),直接将数字相加。对于偶数位置(即第2位、第4位、第6位...第16位),将数字乘以3后再相加。
计算得到的总和(sum)与10取余(sum % 10),得到一个余数。
根据余数计算出校验码。如果余数为0,则校验码为0;如果余数为1,则校验码为1;如果余数为2,则校验码为2;如果余数为3,则校验码为3;以此类推,直到余数为9,则校验码为10。对于校验码为10的情况,实际的身份证号中会用大写字母 'X' 来表示。
最后,将计算出的校验码与身份证号的第18位进行比较。如果相等,则表示身份证号的校验码是正确的,返回 true;如果不相等,则表示身份证号的校验码是错误的,返回 false。
创作一个可以通过的身份证
1 条评论
-
sunhy LV 0 @ 2024-08-10 20:32:15
代码没加载出来
#include <iostream> #include <string> #include <ctime> #include <windows.h> using namespace std; bool checkID(const string& id) { // 验证身份证号是否合法 // 这里只做简单的校验,实际应用中可能需要更复杂的算法 if (id.length() != 18) return false; int sum = 0; for (int i = 0; i < 17; ++i) { sum += (i % 2 == 0) ? id[i] - '0' : (id[i] - '0') * 3; } int checkDigit = 10 - (sum % 10); return checkDigit == (id[17] == 'X' || (checkDigit + '0') == id[17]); } bool checkPhone(const string& phone) { // 验证电话号码是否合法 // 这里只做简单的校验,实际应用中可能需要更复杂的算法 if (phone.length() != 11) return false; for (char digit : phone) { if (!isdigit(digit)) return false; } return true; } int main() { string name; string id; string phone; int year, month, day; cout << "请输入姓名:" ; cin >> name; cout << "输入身份证号:" ; cin >> id; if (checkID(id)) { cout << "身份证验证成功!" << endl; } else { cout << "输入有误,请重新输入身份证号!" << endl; return 0; } cout << "输入生日(格式:YYYYMMDD):"; cin >> year >> month >> day; int age = 2024 - year - ((month < 1 || (month == 1 && day < 1)) ? 1 : 0); if (age >= 18) { cout << "输入的年龄合法!" << endl; } else { cout << "输入有误,请重新输入年龄!" << endl; return 0; } cout << "输入电话号码:" << endl; cin>>phone; if (checkPhone(phone)) { cout << "电话号码验证成功!" << endl; } else { cout << "输入有误,请重新输入电话号码!" << endl; return 0; } cout << "欢迎使用我们的服务!" << endl; cout << "一些字" << endl; return 0; }
- 1