当前位置:编程学习 > VB >>

身份证怎么判断男女

在网上查了下,说身份证可以判断男和女,是通过哪几位来判断的,怎么判断的 --------------------编程问答-------------------- 打个电话到你附近的派出所一问不就知道了 --------------------编程问答-------------------- 可以用眼睛,如果觉得不靠谱,可以仔细看 --------------------编程问答-------------------- 好像尾数是单数是男,双数是女
如果是X,我就不知道了。呵呵 --------------------编程问答-------------------- http://hi.baidu.com/qbsmbsm/blog/item/c8b9d2f9f2b7f059242df230.html --------------------编程问答-------------------- 最后几位,你可以Google下,分15位18位不同的。

身份证的格式是 省市区生日年月日性别序号 --------------------编程问答-------------------- 倒数第二位可以看出 --------------------编程问答--------------------
引用 3 楼 veron_04 的回复:
好像尾数是单数是男,双数是女
如果是X,我就不知道了。呵呵


没根据. --------------------编程问答-------------------- 看了看倒数第二位是性别判断,奇数是男性,偶数是女性 --------------------编程问答-------------------- 看倒数第二位,偶数是女,奇数是男。
msgbox iif(val(left(right(x,2),1)) mod 2=0,"女","男")
--------------------编程问答--------------------
引用 9 楼 sysdzw 的回复:
看倒数第二位,偶数是女,奇数是男。
VB code
msgbox iif(val(left(right(x,2),1)) mod 2=0,"女","男")
参考:
http://zhidao.baidu.com/question/10674298.html

谁能找到最后以为的计算的函数呢? --------------------编程问答--------------------
引用 9 楼 sysdzw 的回复:
看倒数第二位,偶数是女,奇数是男。
VB code
msgbox iif(val(left(right(x,2),1)) mod 2=0,"女","男")
参考:
http://zhidao.baidu.com/question/10674298.html

谁能找到最后一位数字的计算的函数呢? --------------------编程问答--------------------
15位身份证号码:第7、8位为出生年份(两位数),第9、10位为出生月份,第11、12位代表出生日期,第15位代表性别,奇数为男,偶数为女。

18位身份证号码:第7、8、9、10位为出生年份(四位数),第11、第12位为出生月份,第13、14位代表出生日期,第17位代表性别,奇数为男,偶数为女。

弄过这个,还可以根据身份证查你所在的城市(县城)等  --------------------编程问答-------------------- 1.一种方法是:15位身份证号码最后一位,奇数为男,偶数为女。18位身份证号码第17位代表性别,奇数为男,偶数为女。
2.可以查看身份证上的照片,但是程序识性别,还不太可能
--------------------编程问答--------------------
引用 13 楼 chinayuppie 的回复:
1.一种方法是:15位身份证号码最后一位,奇数为男,偶数为女。18位身份证号码第17位代表性别,奇数为男,偶数为女。
2.可以查看身份证上的照片,但是程序识性别,还不太可能


看照片能分得出人妖么 现在的男人都在女性化,女人都在男性化,哪里分得出什么男女 --------------------编程问答-------------------- --------------------编程问答-------------------- 身份证上有一栏叫做"性别" --------------------编程问答--------------------
引用 3 楼 veron_04 的回复:
好像尾数是单数是男,双数是女
如果是X,我就不知道了。呵呵

啥意思啊,我就是X结尾滴 --------------------编程问答--------------------
引用 17 楼 wallescai 的回复:
引用 3 楼 veron_04 的回复:

好像尾数是单数是男,双数是女
如果是X,我就不知道了。呵呵

啥意思啊,我就是X结尾滴
18位为效验位(识别码),通过复杂公式算出,普遍采用计算机自动生成。是前面17位的一种检验代码,如果你改变了前面某个数字而后面的效验代码不响应改变就会被计算软件判断为非法身份正号码。X也是效验代码的一种
可能电脑算到你时正好死机了。
--------------------编程问答--------------------
引用 18 楼 sysdzw 的回复:
...
18位为效验位(识别码),通过复杂公式算出,普遍采用计算机自动生成。是前面17位的一种检验代码,如果你改变了前面某个数字而后面的效验代码不响应改变就会被计算软件判断为非法身份正号码。X也是效验代码的一种
可能电脑算到你时正好死机了。


那看来这破电脑该换换了,死机那是经常的啊,X了好多人了 --------------------编程问答-------------------- 有问题上百度,虽然百度很垃圾,不过这个问题还有有答案的。

http://zhidao.baidu.com/question/249715632.html --------------------编程问答-------------------- IF JJ THEN
   IF MM THEN
      OTHER
   ELSE
      MAN
   END IF
ELSE 
   WOMAN
END IF --------------------编程问答-------------------- 最后一位是校验码,通过前17位数算出来的。不知道男女怎么判断 --------------------编程问答--------------------
引用 12 楼 ameken 的回复:
15位身份证号码:第7、8位为出生年份(两位数),第9、10位为出生月份,第11、12位代表出生日期,第15位代表性别,奇数为男,偶数为女。

18位身份证号码:第7、8、9、10位为出生年份(四位数),第11、第12位为出生月份,第13、14位代表出生日期,第17位代表性别,奇数为男,偶数为女。

弄过这个,还可以根据身份证查你所在的城市(县城)等

+1
我记得10多年前做过一个户籍软件,其中就有身份证号码升位的功能 --------------------编程问答-------------------- 最后一位巴 --------------------编程问答-------------------- 最后一位是验证码,通过一个变态算法算出来的,从0-x,
倒数第二位是性别 --------------------编程问答-------------------- 分 15 字符旧格式和 18 字符新格式两种。

旧格式的最后 1 字节是性别识别码,奇数男,偶数女;
新格式的倒数第 2 位是性别识别码,方法同上。

新格式的最后 1 字节是 11 进制校验码。算法比较复杂。

1. 将身份证号码前面的 17 个数字分别乘以不同的系数。从第1 到第 17 个数字的系数分别为:7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2。

2. 将 17 个积累加。

3. 将所得的和除以 11,所得余数范围在 0 至 10。

4. 用查表法,将余数 0 至 10 对应到校验码 1,0,X,9,8,7,6,5,4,3,2。(也可以计算如下:用 12 减余数,如果差大于 10,则再从差中减去 11。) --------------------编程问答--------------------
引用 3 楼  的回复:
好像尾数是单数是男,双数是女
如果是X,我就不知道了。呵呵

X不是人,是鬼! --------------------编程问答-------------------- 丢你,我的最后两位是3X --------------------编程问答--------------------
引用 28 楼 eaglewing1021 的回复:
丢你,我的最后两位是3X


3个鬼 --------------------编程问答-------------------- X 表示校验码为 10。这个校验算法很古怪。
--------------------编程问答-------------------- 看倒数第二位,偶数是女,奇数是男。 18位身份证
看倒数第一位,偶数是女,奇数是男。15位身份证 --------------------编程问答-------------------- 12楼的是正解! --------------------编程问答-------------------- 哈哈,最后一位x表示前面都是错的,打叉 :))))))))))))))))))))) --------------------编程问答--------------------
引用 3 楼 Veron_04 的回复:
好像尾数是单数是男,双数是女
如果是X,我就不知道了。呵呵

如果是X就看X前面的那一位 --------------------编程问答-------------------- 额,一般说来,打×的是快要过世的人的身份证号码…… --------------------编程问答--------------------
引用 35 楼 yiguangqiang88 的回复:
额,一般说来,打×的是快要过世的人的身份证号码……

X --------------------编程问答-------------------- X是罗马数字10好不 --------------------编程问答-------------------- 学到了 --------------------编程问答-------------------- 15 位尾数为单数男性,双数女性;18 位看倒数第二个数 --------------------编程问答-------------------- 不知道做了变性手术并且成功的人身份证号码变不变。
--------------------编程问答--------------------
引用 40 楼 zhao4zhong1 的回复:
不知道做了变性手术并且成功的人身份证号码变不变。

这个不会变的吧,
为什么要自己去判断呢,
整个二代身份证阅读器回来,
身份证往上一放,什么信息都出来了
--------------------编程问答-------------------- 我X,
2011年的帖子
--------------------编程问答-------------------- 第二代身份证号都代表什么意思? 
  1、号码的结构 
  公民身份号码是特征组合码,由十七位数字本体码和一位校验码组成。排列顺序从左至右依次为:六位数字地址码,八位数字出生日期码,三位数字顺序码和一位
数字校验码。 
  2、地址码(前六位数) 
  表示编码对象常住户口所在县(市、旗、区)的行政区划代码,按GB/T2260的规定执行。 
  3、出生日期码(第七位至十四位) 
  表示编码对象出生的年、月、日,按GB/T7408的规定执行,年、月、日代码之间不用分隔符。 
  4、顺序码(第十五位至十七位) 
  表示在同一地址码所标识的区域范围内,对同年、同月、同日出生的人编定的顺序号,顺序码的奇数分配给男性,偶数分配给女性。 
  5、校验码(第十八位数) 
  (1)十七位数字本体码加权求和公式 
  S = Sum(Ai * Wi), i = 0, ... , 16 ,先对前17位数字的权求和 
  Ai:表示第i位置上的身份证号码数字值 
  Wi:表示第i位置上的加权因子 
  Wi: 7 9 10 5 8 4 2 1 6 3 7 9 10 5 8 4 2 
  (2)计算模 
  Y = mod(S, 11) 
  (3)通过模得到对应的校验码 
          Y: 0 1 2 3 4 5 6 7 8 9 10 
  校验码: 1 0 X 9 8 7 6 5 4 3   2  X为罗数字的10。
===========================================================
身份证第18位(校验码)的计算方法示例:    
 回答第十八位数字的计算方法为:  
1.将前面的身份证号码17位数分别乘以不同的系数。从第一位到第十七位的系数分别为:7 9 10 5 8 4 2 1 6 3 7 9 10 5 8 4 2 2.将这17位数字和系数相乘的结果相
加。  
3.用加出来和除以11,看余数是多少?  
4余数只可能有  0 1 2 3 4 5 6 7 8 9 10这11个数字。其分别对应的最后一位
身份证的号码为1 0 X 9 8 7 6 5 4 3   2。  
5.通过上面得知如果余数是2,就会在身份证的第18位数字上出现罗马数字的Ⅹ。如果余数是10,身份证的最后一位号码就是2。  例如:某男性的身份证号码是
34052419800101001X。我们要看看这个身份证是不是合法的身份证。  首先:我们得出,前17位的乘积和是189  然后:用189除以11得出的结果是17 + 2/11,也就是
说余数是2。  最后:通过对应规则就可以知道余数2对应的数字是x。所以,这是一个合格的身份证号码。
============================================================
Excel中的公式(使用标准模块):
自定义函数(VB编写),将17位号码升到18位,
标准模块中粘贴下面代码:
Function idcode(sCode As String) As String
    Dim I As Integer
    Dim num As Integer
    Dim Code As String
    num = 0
    idcode = sCode
    For I = 18 To 2 Step -1
      num = num + (2 ^ (I - 1) Mod 11) * (Mid(idcode, 19 - I, 1))
    Next I
    num = num Mod 11
    Select Case num
    Case 0
      Code = "1"
    Case 1
      Code = "0"
    Case 2
      Code = "X"
    Case Else
      Code = Trim(Str(12 - num))
    End Select
    idcode = idcode + Code
End Function
假设a1为17位身份证号码
使用标准模块时像普通函数一样,输入 =idcode(a1)
补充:VB ,  控件
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,