C++——ID身份证号真伪辨别

输入身份证号就能判断是否为真id

#include <iostream> 
#include <string.h> 
using namespace std;
const int factor[] = { 7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2 };//加权因子 
const int checktable[] = { 1, 0, 10, 9, 8, 7, 6, 5, 4, 3, 2 };//校验值对应表 
int checkIDinput( char[] ); 
void checkID( int[], char[] );
int main() { 
while(1){
    	char ID[ 19 ]; 
    int IDNumber[ 19 ]; 
    cout << "\n输入身份证号码:"; 
    cin  >> ID;    
    while( !checkIDinput( ID ) )  //防止输入过程中位数输入错误   
    { 
           cout << "\n错误ID,重新输入:"; 
           cout << "\n输入身份证号码:"<<'\n'; 
           cin  >> ID; } 
    
    for ( int i = 0; i < 18; i ++ )//相当于类型转换 
         IDNumber[ i ] = ID[ i ] - 48; 
         
    
    checkID( IDNumber, ID ); }}
    
int checkIDinput( char ID[] )//检验身份证是否为18位 
{ 
    if ( strlen( ID ) == 18 )//字符串最后一位/0 
       return 1; 
    else return 0; }

void checkID( int IDNumber[], char ID[] ) { 
     int i = 0;//i为计数 
     int checksum = 0; 
     for ( i=0; i < 17; i ++ ) 
         checksum += IDNumber[ i ] * factor[ i ]; 
    
     if ( IDNumber[ 17 ] == checktable[ checksum % 11 ] || ( ID[ 17 ] == 'x' && checktable[ checksum % 11 ] == 2 ))     
	   cout << "\n正确身份证号码"<<'\n'; 
     else cout << "\n错误身份证号码"<<'\n'; }
  • 输入身份证即可
    身份证号真伪
  • 5
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

GodOuO

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值