首页 > 试题广场 >

手机号

[编程题]手机号
  • 热度指数:2316 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32M,其他语言64M
  • 算法知识视频讲解
    很多网站都要求用户输入手机号码,现在请写一个程序,判断用户输入的手机号码是否合法。本题中定义的合法手机号和现实中的手机号有出入,解题时以题面定义为准。
    一个合法的手机号码满足以下条件:
    (1)手机号码由 11 位数字构成。
    (2)手机号码的前三位为网络识别号,对应不同的手机运行商,在本题中只有以下几种(其余情况在本题中一律认为手机号不合法)
        中国电信:133,153,180,181,189
        中国联通:130,131,155,185,186
        中国移动:135,136,150,182,188
    (3)剩下 8 位数字任意
    现在输入手机号码,请判断是否合法

输入描述:
第一行一个数 T ,接下里 T 行每行一个手机号,输入的手机号只由数字构成。


输出描述:
输出 T 行,对每个手机号,如果满足题面定义,
电信号码输出 China Telecom
联通号码输出 China Unicom
移动号码输出 China Mobile Communications
如果不符合题面定义则输出 -1
示例1

输入

5
13312345678
18687654324
18277748494
15898494958
45364

输出

China Telecom
China Unicom
China Mobile Communications
-1
-1
T = eval(input())
phoneNumber = []
for i in range(T):
    phoneNumber.append(input())
ct = ['133','153','180','181','189']
cu = ['130','131','155','185','186']
cmc = ['135','136','150','182','188']
for i in phoneNumber:
    if len(i) != 11:
        print('-1')
        continue
    elif i[0:3] in ct:
        print('China Telecom')
    elif i[0:3] in cu:
        print('China Unicom')
    elif i[0:3] in cmc:
        print('China Mobile Communications')
    else:
        print('-1')

发表于 2021-02-16 22:56:06 回复(0)

Python3解法

def judge(number):
    if len(number) != 11:
        return -1
    if number[:3] in ["133", "153", "180", "181", "189"]:
        return "China Telecom"
    if number[:3] in ["130", "131", "155", "185", "186"]:
        return "China Unicom"
    if number[:3] in ["135", "136", "150", "182", "188"]:
        return "China Mobile Communications"
    return -1

for i in range(int(input())):
    print(judge(input()))
发表于 2019-02-23 10:01:24 回复(1)