0
点赞
收藏
分享

微信扫一扫

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

十里一走马 2022-02-15 阅读 34
算法

在这里插入图片描述
在这里插入图片描述

#include<cstdio>
int main(){
	int n,flag_A=0;//判断是否全部正确 
	char str[18];
	int k[17]={7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2};//加权求和 
	char mp[11]={'1','0','X','9','8','7','6','5','4','3','2'};
	scanf("%d",&n);
	while(n--){
		scanf("%s",str);
		int sum=0,flag=0;//用于判断是否提前退出 
		for(int i=0;i<17;i++){
			if(str[i]>='0'&&str[i]<='9'){
				sum+=(str[i]-'0')*k[i];
			}else{
				flag=1;
				flag_A=1; 
				printf("%s\n",str);
				break;
			}
		}
		
		if(mp[sum%11]!=str[17]&&flag==0){
			flag=1;
			flag_A=1;
			printf("%s\n",str);
		}
	}
	if(!flag_A) printf("All passed\n");
}
举报

相关推荐

0 条评论