身份证号码验证程序

来源:互联网 发布:电脑上翻墙用什么软件 编辑:程序博客网 时间:2024/06/16 15:47

描述:验证输入的身份证号码是否正确;


实现代码:

#include <iostream>#include <string>using namespace std;int main(){    string num;    while(1)    {loop:        cout<<"请输入你要验证的身份证号码:"<<endl;        cin>>num;        if(num.length()!=18)        {            cout<<"您输入的身份证长度不正确"<<endl;            goto loop;        }        int mark=1;        for(int i=0; i<num.length()-2; i++)        {            if(num[i]!='0'&&num[i]!='1'&&num[i]!='2'&&num[i]!='3'&&num[i]!='4'&&num[i]!='5'&&num[i]!='6'&&num[i]!='7'&&num[i]!='8'&&num[i]!='9')            {                cout<<"您输入的身份证不正确"<<endl;                mark=0;                break;            }            if(num[17]!='0'&&num[17]!='1'&&num[17]!='2'&&num[17]!='3'&&num[17]!='4'&&num[17]!='5'&&num[17]!='6'&&num[17]!='7'&&num[17]!='8'&&num[17]!='9'&&num[17]!='x'&&num[17]!='X')            {                cout<<"您输入的身份证不正确"<<endl;                mark=0;                break;            }        }        if(mark==0)        {            goto loop;        }        int tmpyear=(num[6]-48)*1000+(num[7]-48)*100+(num[8]-48)*10+(num[9]-48);        int tmpmonth=(num[10]-48)*10+(num[11]-48);        int tmpday=(num[12]-48)*10+(num[13]-48);        if(tmpyear==0||tmpmonth==0||tmpday==0)        {            cout<<"您输入的身份证不正确"<<endl;            goto loop;        }        if(tmpyear>2013||tmpyear<1850)        {            cout<<"您输入的身份证年份不正确(年份:1850<=year<=2013)"<<endl;            goto loop;        }        if(tmpmonth>12||tmpmonth<0)        {            cout<<"您输入的身份证月份不正确"<<endl;            goto loop;        }        if(tmpday>31||tmpday<0)        {            cout<<"您输入的身份证日期不正确"<<endl;            goto loop;        }        if(tmpmonth==4||tmpmonth==6||tmpmonth==9||tmpmonth==11)        {            if(tmpday>30)            {                cout<<"您输入的身份证日期不正确"<<endl;                goto loop;            }        }        else if(tmpmonth==1||tmpmonth==3||tmpmonth==5||tmpmonth==7||tmpmonth==8||tmpmonth==10||tmpmonth==12)          {            if(tmpday>31)            {                cout<<"您输入的身份证日期不正确"<<endl;                goto loop;            }        }        else if(tmpmonth==2)        {            if(tmpyear%400==0||(tmpyear%4==0&&tmpyear%100!=0))            {                if(tmpday>29)                {                    cout<<"您输入的身份证日期不正确"<<endl;                    goto loop;                }            }            else            {                if(tmpday>28)                {                    cout<<"您输入的身份证日期不正确"<<endl;                    goto loop;                }            }        }        cout<<"身份证输入合法"<<endl;    }    return 0;}


原创粉丝点击