手机号_牛客网 https://www.nowcoder.com/practice/8738b757e0f7469c92cc2585b13a3669?tpId=90&tqId=30863&tPage=5&rp=2&ru=%2Fta%2F2018test&qru=%2Fta%2F2018test%2Fquestion-ranking&tdsourcetag=s_pcqq_aiomsg
时间限制:1秒 空间限制:32768K 热度指数:720
题目描述
输入描述:
输出描述:
示例1
输入
5
13312345678
18687654324
18277748494
15898494958
45364
输出
China Telecom
China Unicom
China Mobile
Communications
-1
-1
思路分析:先判断字符串长度是不是11,不是就肯定不是手机号;然后再判断网络识别号是属于哪个运营商
#include <stdio.h>
#include <string.h>
int solve(char *s);
int main( )
{
int n;
scanf("%d",&n);
while(n--)
{
char str[32]="";
getchar();//接收回车
scanf("%s",str);//接收手机号码
int k=solve(str);
if(k==1)//中国电信
printf("China Telecom\n");
else if(k==2)//中国联通
printf("China Unicom\n");
else if(k==3)//中国移动
printf("China Mobile Communications\n");
else printf("-1\n");//非手机号
}
return 0;
}
int solve(char *s)
{
if(strlen(s)!=11)//字符串长度不是11,即非手机号
return 0;
char num[][4]={"133","153","180","181","189","130","131","155","185","186","135","136","150","182","188"};
for(int i=0;i<15;i++)
{
if(!strncmp(num[i],s,3))//前三个字符串一致
return i/5+1;//每5个号码为一段,分为三段
}
return 0;
}