L1-016 查验身份证

一、题目

L1-016 查验身份证_第1张图片

二、解题思路

  1. 遍历身份证号码前 17 位,如果是数字,则乘以权重值,否则退出循环;
  2. 如果前 17 位都是数字,判断最终的 z 对应的校验码 m 与给出的身份证号码最后一位是否一致;
  3. 如果有问题的身份证号码数量为 0 ,则输出 All passed 。

三、代码

#include
using namespace std;
int main()
{
	int n,cot=0;
	int quan[18]={7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2};
	char m[12]={'1','0','X','9','8','7','6','5','4','3','2'};
	cin>>n;
	for(int i=0;i>id;
		for(int j=0;j<17;j++)
		{
			if(id[j]>='0' && id[j]<='9')
			{
				z+=(int(id[j])-'0')*quan[j];
			}
			else
			{
				flag=false;
				cout<

四、总结

  1. z =(前 17 位数字分别乘以对应的权重值)% 11 。
  2. 每次判断新的身份证号码之前需要将 flag 重新赋值为 true ,z 重新赋值为 0 。

你可能感兴趣的:(PTA,c++)