Instituto de Tecnología de Beijing en un problema de la máquina - la verificación de identidad

Instituto de Tecnología de Beijing en un problema de la máquina - la verificación de identidad

Descripción Título:
número de identificación del número de ID de 18 bits de comprobación, bit de paridad es el último bit A [17]: reglas de validación aaaaaabbbbbbbbccc d es como sigue:
antes de diecisiete pesos son: W [17 ] :. 7. 9 10. 5. 8. 4 2. 1. 6. 3. 7. 9 10. 5. 8. 4 2
X = (A [0] * W es [0] + A [. 1] * W es [. 1] + ... + A [16] * W es [16]) MOD11
X y a y correspondiente reglas bit de paridad como sigue:
X: 2. 3. 1 0. 4. 5. 6. 7. 9 10. 8
y: X 0. 9. 1. 5. 4. 3. 6. 7. 8 2
Si y es el número de identificación d correcta
formato de salida: aaaaaabbbbbbbbcccd correctamente
si Y no es igual al número de identificación es incorrecta d
formato de salida: aaaaaabbbbbbbbcccy: esperado
prueba:
52242619811105565x
533325199108247066
problemas a resolver:
el número de bits de ID (1) para verificar la entrada, si es 18 ;
(2) la determinación de la identidad de los bits de control.

#include<iostream>
using namespace std;
int main() {
	char A[18] = { '0' };
	cout << "输入身份证号:";
	cin >> A;
	//验证身份证位数,如果位数不为18则退出
	int num = strlen(A);
	if (num != 18) {
		cout << "身份证号输入错误!" << endl;
		exit(1);
	}
	int W[17] = { 7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2 };
	char jiaoyan[11] = { '1','0','x','9','8','7','6','5','4','3','2' };
	int x = 0;
	for (int i = 0;i < 17;i++) {
		//计算x,把A中的字符先转换为int型再进行计算
		x += (int)(A[i] - '0') * W[i];
	}
	x = x % 11;
	//计算出x对应的y
	char y = jiaoyan[x];
	if (A[17] == y) {
		cout << A << " 正确" << endl;
	}
	else {
		cout << "身份证错误,应为:";
		for (int i = 0;i < 17;i++)
			cout << A[i];
		cout << y << endl;
	}
	return 0;
}

Ejecutar los resultados de las pruebas:
Aquí Insertar imagen Descripción
Aquí Insertar imagen Descripción
Aquí Insertar imagen Descripción

Publicado 50 artículos originales · alabanza ganado 50 · vistas 2938

Supongo que te gusta

Origin blog.csdn.net/weixin_45295612/article/details/105383644
Recomendado
Clasificación