国家码+手机号码

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

1.长度13;

2.以86的国家码打头;

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

4.诸如以下的手机号码写法均为合格:+86-13957177889、8613957177889、+8613957177889、+86-139-5717-7889、86-13957177889。

请实现手机号码合法性判断的函数(注:考生无需关注手机号码的真实性,也就是说诸如86123123456789这样的手机号码,我们也认为是合法的),要求:

1.如果手机号码合格,返回0;

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

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

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

5.其他情况,返回4.

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

<span style="font-family:KaiTi_GB2312;">代码:</span>
#include<stdio.h>
#include<string.h>
bool BE(char str[]) //开头为 '+' 返回1
{
	if(str[0]=='+')
	return 1;
	return 0;
}
bool _86(char str[],int len) //是否以86 开头
{
	if(BE(str))
	{
		if(str[1]=='8'&&str[2]=='6')
		return 1;
		else
		return 0;
	}
	else
	{
		if(str[0]=='8'&&str[1]=='6')
		return 1;
		else
		return 0;
	}
}
int Len(char str[],int len)
{
	int i,k=0;
	for(i=0;i<len;++i)
	{
		if(str[i]>='0'&&str[i]<='9')
		k++;
	}
	return k;
}
bool _FSZ(char str[],int len)  //判断是否含非数字,是返回1;
{
	int i;
	if(BE(str))
	for(i=1;i<len;++i)
	{
		if(str[i]!='-'&&!(str[i]>='0'&&str[i]<='9'))
		return 1;
	}
	else
	{
		for(i=0;i<len;++i)
	    {
		  if(str[i]!='-'&&!(str[i]>='0'&&str[i]<='9'))
		  return 1;
	    }
	}
	return 0;
}
int MAIN()
{
	char str[20];
	gets(str);
	int len=strlen(str);
	switch(len)
	{
		case 13:if(_86(str,len)) return 0;//else break;
		case 14:if(_86(str,len))if(BE(str)||str[2]=='-') return 0;
		case 15:if(_86(str,len))if(BE(str)&&str[3]=='-') return 0;
		case 17:if(_86(str,len))if(BE(str)&&str[3]=='-'&&str[7]=='-'&&str[12]=='-') return 0;
	}
		if(Len(str,len)!=13) // 长度不合格
		return 1;
		else
		{
			if(_FSZ(str,len))
			return 2;
			else
			{
				if(_86(str,len))
				return 4;
				else
				return 3;
			}
		}
}
int main()
{
	while(1)
	printf("%d\n",MAIN());
	return 0;
}

时间: 2024-10-08 09:30:09

国家码+手机号码的相关文章

MCC(移动国家码)和 MNC(移动网络码)

国际移动用户识别码(IMSI) international mobile subscriber identity 国际上为唯一识别一个移动用户所分配的号码. 从技术上讲,IMSI可以彻底解决国际漫游问题.但是由于北美目前仍有大量的AMPS系统使用MIN号码,且北美的MDN和MIN采用相同的编号,系统已经无法更改,所以目前国际漫游暂时还是以MIN为主.其中以O和1打头的MIN资源称为IRM(International Roaming MIN),由IFAST (International Forum

判断手机号码合法性

问题描述: 我国大陆运营商的手机号码标准格式为:国家码+手机号码,例如:8613912345678.特点如下: 1.长度13位: 2.以86的国家码打头: 3.手机号码的每一位都是数字. 请实现手机号码合法性判断的函数要求: 1)如果手机号码合法,返回0: 2)如果手机号码长度不合法,返回1 3)如果手机号码中包含非数字的字符,返回2: 4)如果手机号码不是以86打头的,返回3: [注]除成功的情况外,以上其他合法性判断的优先级依次降低.也就是说,如果判断出长度不合法,直接返回1即可,不需要再做

手机号码合法性判断

手机号码合法性判断(20分) 问题描述: 我国大陆运营商的手机号码标准格式为:国家码+手机号码,例如:8613912345678.特点如下: 1.  长度13位: 2.  以86的国家码打头: 3.  手机号码的每一位都是数字. 请实现手机号码合法性判断的函数(注:考生无需关注手机号码的真实性,也就是说诸如86123123456789这样的手机号码,我们也认为是合法的),要求: 1)  如果手机号码合法,返回0: 2)  如果手机号码长度不合法,返回1 3)  如果手机号码中包含非数字的字符,返

华为机试—手机号码验证

我国大陆运营商的手机号码标准格式为:国家码+手机号码,例如:8613912345678.特点如下: 1. 长度13位: 2. 以86的国家码打头: 3. 手机号码的每一位都是数字. 请实现手机号码合法性判断的函数要求: 1) 如果手机号码合法,返回0: 2) 如果手机号码长度不合法,返回1 3) 如果手机号码中包含非数字的字符,返回2: 4) 如果手机号码不是以86打头的,返回3: [注]除成功的情况外,以上其他合法性判断的优先级依次降低.也就是说,如果判断出长度不合法,直接返回1即可,不需要再

华为上机题汇总(二)

华为上机题汇总(二) 注:编译环境为Visual Studio 2012,答案仅供参考. 目录 华为上机题汇总二 目录 第六题 第七题 第八题 第九题 第十题 第六题 6.比较一个数组的元素 是否为回文数组(如abcdcba,hjjh) #include <iostream> #include <vector> #include <string> using namespace std; bool isPalindrome(const string &str){

iOS开发——App集成短信验证码

无论是在网页上还是在客户端,每当我们进行注册的时候,往往会进行短信或者邮箱验证,这是一种不错的安全机制.对于用户体验来说,如果是在PC的网页上,用邮箱或者短信验证都比较方便:如果是在手机上,那么使用短信验证就比较方便.这篇博客我们将会在iOS应用中实现短信验证码的功能.实例demo我已经集成到  https://github.com/chenyufeng1991/iOS-Oncenote . 这里我将会使用mob 的短信验证码 SDK来开发.官网地址为: http://www.mob.com/#

华为历年试题(手机号合法性判断4)

手机号码合法性判断 问题描述:我国大陆运营商的手机号码标准格式为: 国家码+手机号码,例如:8613912345678. 特点如下:1.  长度13位: 2.  以86的国家码打头: 3.  手机号码的每一位都是数字.请实现手机号码合法性判断的函数 (注:考生无需关注手机号码的真实性, 也就是说诸如86123123456789这样的手机号码,我们也认为是合法的), 要求:1)  如果手机号码合法,返回0: 2)  如果手机号码长度不合法,返回1 3)如果手机号码中包含非数字的字符,返回2: 4)

Hua Wei 机试题目

一.身份证号码验证 题目描述: 我国公民的身份证号码特点如下:1. 长度为18位:2. 第1-17位只能为数字:3. 第18位可以是数字或者小写英文字母x.4. 身份证号码的第7~14位表示持有人生日的年.月.日信息.例如:511 002 1988 08 08 0111或51100219880808011x.请实现身份证号码合法性判断的函数.除满足以上要求外,需要对持有人生日的年.月.日信息进行校验.年份大于等于1900年,小于等于2100年.需要考虑闰年.大小月的情况.所谓闰年,能被4整除且不

Android获取手机号码及运营商

public class PhoneSIMCInfo { /**手机管理工具类*/ private TelephonyManager telephonyManager; /**国际移动用户识别码*/ private String mImsi; public PhoneSIMCInfo(Context context) { telephonyManager = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE