首页 > 其他分享 >建民打卡日记5.14

建民打卡日记5.14

时间:2023-05-14 20:26:10浏览次数:50  
标签:11 10 17 int 校验码 num 5.14 打卡 建民

一、问题描述

一个合法的身份证号码由17位地区、日期编号和顺序编号加1位校验码组成。校验码的计算规则如下:

首先对前17位数字加权求和,权重分配为:{7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2};然后将计算的和对11取模得到值Z;最后按照以下关系对应Z值与校验码M的值:

Z:0 1 2 3 4 5 6 7 8 9 10
M:1 0 X 9 8 7 6 5 4 3 2
 

现在给定一些身份证号码,请你验证校验码的有效性,并输出有问题的号码。

二、流程设计

  1. 录入身份证号;
  2. 对每个身份证号前17位求权重后的和;
  3. 对和模11;
  4. 根据模11后的数找到正确的校验位;
  5. 对身份证号第18位进行校验;
  6. 若有误则输出;
  7. 若n个身份证号中无错误,则输出all passed。

三、代码实现

#include <bits/stdc++.h>
using namespace std;

int a[17] = {7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2};
char m[11] = {'1', '0', 'X', '9', '8', '7', '6', '5', '4', '3', '2'};
int z[11] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
int main() {
	int n;
	cin >> n;

	int l = 0, temp = n;
	int k;
	while (n--) {
		string num;
		int sum = 0;
		cin >> num;
		for (int i = 0; i < 17; i++) {
			sum += a[i] * (num[i] - 48);
		}

		for (int i = 0; i < 11; i++) {
			if (num[17] == m[i])
				k = z[i];
		}
		if (sum % 11 == k)
			l++;
		else
			cout << num << endl;
	}
	if (l == temp)
		cout << "All passed";
}

 

标签:11,10,17,int,校验码,num,5.14,打卡,建民
From: https://www.cnblogs.com/cor0000/p/17392023.html

相关文章

  • 5.14
    classBase{public:intfn1()const{return1;}intfn2()const{return2;}};classDerived:privateBase{public:intfn1(){returnBase::fn1();};intfn2(){returnBase::fn2();};};intmain(){Deriveda;a.fn1();return0;......
  • qt5.14.modbus rtu源码,运行无问题! ---Modbus具有两种串行
    qt5.14.modbusrtu源码,运行无问题!---Modbus具有两种串行传输模式:分别为ASCII和RTU。此源代码是RTU。Modbus是一种单主站的主从通信模式,Modbus网络上只能有一个主站存在,主站在Modbus网络上没有地址,每个从站必须有唯一的地址,从站的地址范围为0-247,其中0为广播地址,从站的实际地址范......
  • 2023.5.14编程一小时打卡
    一、问题描述:计算点到直线的距离。首先设计一个点类Point,它有2个私有数据成员x和y,表示点的坐标。另一个类为直线类Line,它有3个私有数据成员a,b和c,表示直线方程ax+by+c=0。这两个类中都说明了一个友元函数dist,用于计算一个点到直线的距离。点(x.y)到直线ax+by+c=0的距离d的......
  • c++打卡练习(27)
    求x的y次方的最后三位数流程图:伪代码:源代码:#include<iostream>usingnamespacestd;intmain(){intnum,y,x,i;printf("输入x以及x的次数y\n"); scanf("%d%d",&x,&y); for(i=1,num=1;i<=y;i++){ num=num*x%1000; }printf("%d",num); r......
  • 5-12打卡,练习
    实现一个z字形的字符串排列classSolution{public:voidconvert(strings){intn=s.size()-1,N=s.size()-1;intm=n%4;while(n>=0){if(n!=N){cout<<"";......
  • 5.14打卡
    问题描述:比较两个分数的大小二、设计思路:要求通分后的最简公分母,即求两分母的最小公倍数。求最小公倍数的前提是求出两数的最大公约数,最大公约数的求解采用辗转相除的方法,步骤如下:(1)用较大的数m除以较小的数n,得到的余数存储到变量b中;b=m%n;(2)上一步中较小的除数n和得出的余数b......
  • 打卡5.8——委派认为问题
    1.问题描述某项任务需要在A、B、C、D、E、F这6个人中挑选人来完成,但挑选人受限于以下的条件:(1)A和B两个人至少去一人;(2)A和D不能同时去;(3)A、E和F三人中要挑选两个人去;(4)B和C同时去或者都不去;(5)C和D两人中只能去一个;(6)如果D不去,那么E也不去。试编程求出应该让哪几个人......
  • 打卡5.6——求车速
    问题描述:一辆以固定速度行驶的汽车,司机在上午10点看到里程表上的读数是一个对称数(即这个数从左向右读和从右向左读是完全一样的),为95859。两小时后里程表上出现了一个新的对称数,该数仍为五位数。问该车的速度是多少?新的对称数是多少?问题分析:对称数是95859,两小时后出现新的,这个数......
  • 打卡5.7——三色球问题
    1.问题描述一个口袋中放有12个球,已知其中3个是红的,3个是白的,6个是黑的,现从中任取8个,问共有多少种可能的颜色搭配?2.问题分析假设八个球,红球a个,白球b个,黑球c个,那么c=8-a-b个。而且a<=3,b<=3,也就是说8-a-b<=63.算法设计穷举法用两个for循环,第一个for控制红球的数量,第二个控制白......
  • 打卡5.5
    1.问题描述警察审问4名窃贼嫌疑犯。现在已知,这4人当中仅有一名是窃贼,还知道这4个人中的每个人要么是诚实的,要么总是说谎。这四个人回答如下甲:乙没有偷,是丁偷的乙:我没有偷,是丙偷的丙:甲没有偷,是乙偷的丁:我没有偷请根据这四个人的回答判断谁是窃贼2.问题分析四个人里面有一......