思路:
利用字符串变量存取身份证信息,然后对前17位数字进行加权求和并求余,进行映射。判断是否符合题目给出来的信息。
#include<iostream>
#include<algorithm>
#include<string.h>
#include<string>
using namespace std;
int main()
{
int n[17] = { 7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2 };
string str[101];
int N;
long long num[101] = { 0 };
cin >> N;
for (int i = 1; i <= N; i++)
{
cin >> str[i];
for (int j = 0; j < str[i].length()-1; j++)
{
if (str[i][j] == 'X')
{
num[i] = num[i] + 10 * n[j];
}
else
{
num[i] = num[i] + (str[i][j] - '0') * n[j];
}
}
num[i] = num[i] % 11;
}
system("cls");
char z[11] = { '1','0','X','9','8','7','6','5','4','3','2' };
int number = 0;
for (int i = 1; i <= N; i++)
{
if (z[num[i]] != str[i][17])
{
cout << str[i] << endl;
number++;
}
}
if (number == 0)
{
cout << "All passed" << endl;
}
system("pause");
return 0;
}
求赞~~