给一个18位身份证号码,验证有效性,并输出有问题的号码,如果没问题,就输出all passed
#include <iostream>
using namespace std;
int main()
{
int n = 0, sum = 0, mod = 0, count = 0;
int w[17] = {7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2};
char m[11] = {'1', '0', 'X', '9', '8', '7', '6', '5', '4', '3', '2'};
cin >> n;
string numbers[n];
for (int i = 0; i < n; i++)
{
cin >> numbers[i];
}
for (int j = 0; j < n; j++)
{
string str1 = numbers[j];
for (int k = 0; k < 17; k++)
{
if(str1[k]=='X')
{
cout << str1 << endl;
count++;
break;
}
else
sum = sum + (str1[k] - 48) * w[k];
}
mod = sum % 11;
sum = 0;
if (m[mod] != str1[17])
{
cout << str1 << endl;
count++;
}
}
if (count == 0)
cout << "All passed";
}
验证规则是什么呢?
您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!