2012年华为校园招聘机试(2)

#include<iostream>
#include<memory>
using namespace std;
int verifyIDCard(char* input)
{
    if(strlen(input)!=18)
        return 1;
    for(char *p=input; p!=input+17;++p)
        if(!isdigit(*p))
            return 2;
    if(!isdigit(input[17])&&input[17]!='x')
        return 3;
    char year[5]="",mon[3]="",date[3]="";
    memcpy(year,input+6,4);
    memcpy(mon,input+10,2);
    memcpy(date,input+12,2);
    if(atoi(year)<1900||atoi(year)>2100)
        return 4;
    if(atoi(mon)<1||atoi(mon)>12)
        return 5;
    if(4==atoi(mon)||6==atoi(mon)||9==atoi(mon)){
        if(atoi(date)<1||atoi(date)>30)
            return 6;
    }
    else
    {
        if(atoi(mon)==2)
        {
            if(atoi(year)%400==0)
            {
                if(atoi(date)<1||atoi(date)>29)
                    return 6;
            }
            else
            if(atoi(date)<1||atoi(date)>28)
                return 6;
        }
        else
            if(atoi(date)<1||atoi(date)>31)
                return 6;
    }
    return 0;
}

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/19709.html