判断手机号码是否合法(完整实现程序)

来源:互联网 发布:魔方虚拟光驱软件 编辑:程序博客网 时间:2024/05/29 16:53

问题描述:

我国大陆运营商的手机号码标准格式为:国家码+手机号码,例如:8613912345678。特点如下:

1、 长度13位;

2、 以86的国家码打头;

3、 手机号码的每一位都是数字。

请实现手机号码合法性判断的函数要求:

1) 如果手机号码合法,返回0;

2) 如果手机号码长度不合法,返回1

3) 如果手机号码中包含非数字的字符,返回2;

4) 如果手机号码不是以86打头的,返回3;

【注】除成功的情况外,以上其他合法性判断的优先级依次降低。也就是说,如果判断出长度不合法,直接返回1即可,不需要再做其他合法性判断。

要求实现函数:

int s int verifyMsisdn(char* inMsisdn)

【输入】 char* inMsisdn,表示输入的手机号码字符串。

【输出】 无

【返回】 判断的结果,类型为int。

示例

输入: inMsisdn = “869123456789“

输出: 无

返回: 1

输入: inMsisdn = “88139123456789“

输出: 无

返回: 3

输入: inMsisdn = “86139123456789“

输出: 无

返回: 0

#include<stdio.h>#include<stdlib.h>#include<assert.h>#include<string.h>#define LENGTH 13int verityMsisdn(char* inMsisdn){    assert(inMsisdn!=NULL);    if(LENGTH==strlen(inMsisdn))    {        if(*inMsisdn=='8'&&*(inMsisdn+1            )=='6')        {            while(*inMsisdn!='\0')            {                if((*inMsisdn>='0')&&(*inMsisdn<='9'))                    inMsisdn++;                else                    return 2;            }        }        else            return 3;    }    else        return 1;    return 0;}void main(){    char *number;    int m = 3;    int result;    switch(m)    {        case 0:            number = "8613524336789";break;        case 1:            number = "86135243367";break;        case 2:            number = "86d4566567890";break;        case 3:            number = "6812345678900";break;        default:                break;    }    result = verityMsisdn(number);    printf("result is %d\n",result);}
0 0