1031. 查验身份证

5人阅读 评论(0) 收藏 举报
分类:



思路:1 检验数字是否合法 是否17个 bool型变量

#include<cstdio>
#include<cstring>


	int w[20]={7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2};
	//定义权重 
	char change[15]={'1','0','X','9','8','7','6','5','4','3','2'};
	//数组容量定大点防止越界 



int main(){
	int n;
	bool flag = true;
	//记得赋初始值 
	scanf("%d",&n);
	//读入输入的身份证个数 因为要多次重复读入所以用for循环 
	char str[20];

	//存储按权重相加的结果 
	for(int i=0;i<n;i++){
		//这个声明应该放在for循环里面 这样才能保证每次ans和j的初始化! 
			int ans=0,j;
		scanf("%s",str);
		//读入后处理,先把字符型数字转换为整形数字然后按题目要求按权重累加取余得到对应的验证码
		for(j=0;j<17;j++){
			//检验前17位是否都是数字 
			//因为在for循环里是一位一位的判断,所以当有一位不是数字时跳出
			//统计最后j的数目,如果j不到16,说明其中有非数字的字符导致不满足if的条件跳出循环 
			if(!(str[j]>='0'&&str[j]<='9')) break;
				ans = ans +(str[j]-'0')*w[j]; 
			
		
		} 
		//	printf("%d\n",ans%11); 
		//先检验再计算
		if(j<17){
			flag =false;
			printf("%s\n",str);
		}else{
//			ans = ans%11;
		//	printf("%C\n",change[ans%11]);
			if(change[ans%11]!=str[17]){
				flag=false;
				printf("%s\n",str);
			}
		}
		
	} 

if(flag) printf("All passed");
		
return 0;
} 


查看评论

1031. 查验身份证(15)

1031. 查验身份证(15) 时间限制 200 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 CHEN,...
  • ice_camel
  • ice_camel
  • 2014-12-30 00:57:30
  • 943

1031_查验身份证(15)

#include int main() { int n,i,j,k; int sum,weight[17]={7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2}; char...
  • fang_abc
  • fang_abc
  • 2015-02-18 16:01:54
  • 2084

1031. 查验身份证(15)--Python

测试点通不过: #查验身份证 def have_judge(my_list, judge_list, factor_list): sum = 0 x = 0 last_num = ...
  • baidu_38271024
  • baidu_38271024
  • 2017-10-25 12:07:18
  • 151

1031. 查验身份证(15) python篇

1031. 查验身份证(15) 时间限制 200 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Stand...
  • zjw_python
  • zjw_python
  • 2017-03-25 12:51:55
  • 291

【pat】1031. 查验身份证(15)

1031. 查验身份证(15) 时间限制 200 ms 内存限制 65536 kB 代码长度限制 8000 B 判...
  • artemisrj
  • artemisrj
  • 2015-06-23 22:17:21
  • 394

Java - PAT - 1031. 查验身份证(15)

一个合法的身份证号码由17位地区、日期编号和顺序编号加1位校验码组成。校验码的计算规则如下: 首先对前17位数字加权求和,权重分配为:{7,9,10,5,8,4,2,1,6,3,7,9,10,5...
  • qq_34594236
  • qq_34594236
  • 2016-06-16 22:09:27
  • 806

浙江大学PAT_乙级_1031. 查验身份证(15)

C++实现
  • pythontojava
  • pythontojava
  • 2015-05-10 08:59:32
  • 1009

PAT 乙级 1031. 查验身份证(15) Java版

一个合法的身份证号码由17位地区、日期编号和顺序编号加1位校验码组成。校验码的计算规则如下: 首先对前17位数字加权求和,权重分配为:{7,9,10,5,8,4,2,1,6,3,7,9,10,5...
  • liuchuo
  • liuchuo
  • 2017-02-23 17:07:46
  • 166

pat_b_1031 查验身份证

http://www.patest.cn/contests/pat-b-practise/1031           分析: 简单题           代码:        ...
  • naturelan44
  • naturelan44
  • 2014-12-27 13:14:24
  • 762

PAT_乙级 1031 查验身份证

1.题目描述: 一个合法的身份证号码由17位地区、日期编号和顺序编号加1位校验码组成。校验码的计算规则如下: 首先对前17位数字加权求和,权重分配为:{7,9,10,5,8,4,2,1,6,3,7...
  • prim_learn
  • prim_learn
  • 2016-12-06 11:06:33
  • 146
    个人资料
    持之以恒
    等级:
    访问量: 552
    积分: 584
    排名: 9万+
    文章存档