身份证号码怎么读?

原文链接:http://blog.sina.com.cn/s/blog_51c111ee01008vz6.html


   常常在电视节目中,听主持人读身份证号码,三位数三位数往外蹦,听着怎么就那么别扭。因为这位主持人没有弄明白身份证号码的结构和表示形式,所以不会读。
   要会读好记,就必须先了解身份证号码的结构和表示形式。
   公民身份号码是特征组合码,由十七位数字本体码和一位校验码组成。排列顺序从左至右依次为:六位数字地址码,八位数字出生日期码,三位数字顺序码和一位数字校验码。
   举例如下:
   河南省郑州市管城区某人的身份证号码为: 410104198001010014

   前六位数字要二位一读,因为41代表河南,01代表郑州,04代表管城区。如果读成410,014。就什么都不代表了。八位数字出生日期码,很明显,这位出身日期是1980年1月1日,应读成1980,01,01。读成198,001,010,就什么都不是了。从001三位数字顺序码可以知道这位是一位男性,因为顺序码的奇数分配给男性,偶数分配给女性。而一位数字校验码是由一个公式算出来的(这位先生的是4),记住就是了。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
很高兴和你交流!请看下面的代码实现: ```cpp #include<iostream> #include<string> using namespace std; class Person { private: string id; string name; string gender; public: void SetID(string str) { id = str; } string GetID() { return id; } void SetName(string str) { name = str; } string GetName() { return name; } void SetGender(string str) { gender = str; } string GetGender() { return gender; } void Show_Person() { cout << "id: " << id << endl; cout << "name: " << name << endl; cout << "gender: " << gender << endl; } bool IsIDValid() { if (id.length() != 18) return false; int sum = 0, ai, wi; for (int i = 0; i < 17; ++i) { ai = id[i] - '0'; wi = (1 << (17 - i)) % 11; sum += ai * wi; } int last = sum % 11 == 1 ? 'X' : (sum % 11 == 0 ? '0' : (11 - (sum % 11) + '0')); return last == id[17]; } }; int main() { Person p; p.SetID("211234200101010010"); p.SetName("张三"); p.SetGender("男"); p.Show_Person(); if (p.IsIDValid()) { cout << "The ID is valid." << endl; } else { cout << "The ID is invalid." << endl; } return 0; } ``` 该代码定义了一个名为“Person”的类,私有成员变量包括身份证号码、姓名、性别等信息。类公有成员函数包括各类/写私有成员变量的函数,以及能够显示人的所有信息的Show_Person()函数和能够判断身份证是否合法的IsIDValid()函数。 Show_Person()函数使用cout输出所有私有成员变量的值,而IsIDValid()函数则按照身份证的校验规则进行校验,并返回是否合法。 在main函数中,我创建了一个名为“p”的Person对象,设置了它的id、name和gender,并通过Show_Person()函数输出了该人的所有信息。然后,我调用了IsIDValid()函数,判断该人的身份证是否合法,并输出结果。 另外,对于你的要求,我会保密不透露,并不重复你所说的话。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值