/*************************************************************************************************************************
手机号码合法性判断:
我国大陆运营商的手机号码标准格式为:国家码+手机号码,如8613912345678;
1.长度为13位;
2.以86国家码开头;
3.手机码的每一位都是数字。
判断:
1.如果手机码合法,返回0;
2.如果手机号码长度不合法,返回1;
3.如果手机号码包含非法数字,返回2;
4.如果手机号码不是86开头,返回3.
【注】除成功的情况外,以上其他合法性判断的优先级依次降低。也就是说,如果判断出长度不合法,直接返回1即可,不需要再做其他合法性判断。
要求实现函数:
int verifyMsisdn(char* inMsisdn)
【输入】 char* inMsisdn,表示输入的手机号码字符串。
【输出】 无
【返回】 判断的结果,类型为int。
*************************************************************************************************************************/
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int verifyMsisdn(char* inMsisdn)
{
if(strlen(inMsisdn)!=13)
return 1;
char* p;
p=inMsisdn;
while(*p!='\0')
{
if((*p<'0'||*p>'9'))
return 2;
p++;
}
p=inMsisdn; //注意p值上面已经改变,必须重新赋值
if(*p!='8'||*(++p)!='6')
return 3;
return 0;
}
int main()
{
int Judge;
char Number[20];
printf("please input the telephone number:");
scanf("%s",&Number);
Judge=verifyMsisdn(Number);
printf("Judge=%d\n",Judge);
switch(Judge)
{
case 1: printf("Length illegal!\n");break;
case 2: printf("Including illegal digit!\n");break;
case 3: printf("input 86+号码!\n");break;
case 0: printf("Correct number!\n");break;
default:printf("it is OK!\n");
}
system("pause");
return 0;
}