PAT乙级1031 查验身份证 (15 分)

Posted 辉小歌

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了PAT乙级1031 查验身份证 (15 分)相关的知识,希望对你有一定的参考价值。

在这里插入图片描述
题目地址

#include<cstdio>
#include<iostream>
#include<cstring>
#include<string>

using namespace std;

string str[1005];
bool a[1005];
int b[17]={7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2};
char c[17]={'1','0','X','9','8','7','6','5','4','3','2'};
int ans=0;

int main(void)
{
	int t; cin>>t;
	for(int i=0;i<t;i++)
	{
		cin>>str[i];
		int sum=0;
		for(int j=0;j<17;j++)
		{
			if(str[i][j]>'9'||str[i][j]<'0') 
			{
				a[i]=true;
				break;
			}
			else
			{
				sum+=(str[i][j]-'0')*b[j];
			}
		}
		if(!a[i]&&c[sum%11]!=str[i][17]) a[i]=true;
		if(a[i]) ans++;
	}
	if(!ans) cout<<"All passed";
	else
	{
		for(int i=0;i<t;i++)
		{
			if(a[i]) cout<<str[i]<<endl;
		}
	}
	return 0;
}

以上是关于PAT乙级1031 查验身份证 (15 分)的主要内容,如果未能解决你的问题,请参考以下文章

PAT——乙级1006:换个格式输出整数&乙级1021:个位数统计&乙级1031:查验身份证

PAT-乙级-1031 查验身份证

[PAT乙级]1031 查验身份证

PAT 1031. 查验身份证(15)

再刷PAT系列~1031. 查验身份证(15)

PAT Basic 1031