B1031 查验身份证 (15分)

题目大意:
权重相加然后进行比较最后一位是否正确。

#include <stdio.h>
using namespace std;
int main(){
	int n;
	int count=0;
	scanf("%d",&n);
	int m[17] = {7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2};
	char l[11] = {'1','0','X','9','8','7','6','5','4','3','2'};
	while(n--!=0){
		int sum=0;
		getchar();
		char ch[19];
		scanf("%s",ch);
		int flag=0;
		for(int i=0;i<17;i++){
			if((ch[i]-48)<=9&&(ch[i]-48)>=0){
				sum+=m[i]*(ch[i]-48);
			}else {
				flag=1;	
				break;
			}			
		}	
		if(l[sum%11]!=ch[17]||flag==1){
			for(int i=0;i<18;i++){
				printf("%c",ch[i]);
			}printf("\n");
				count++;		
		}	
	}if(count==0){
			printf("All passed") ;
		}
	return 0;	
}
发布了91 篇原创文章 · 获赞 9 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/WeDon_t/article/details/105303596