JSK-132 判断字符串是否是手机号码【入门】

判断字符串是否是手机号码

手机号码是一串数字,长度为11为,并且第一位必须是1,现在给出一个字符串,我们需要判断这个字符串是否符合手机格式

输入:输入是一个字符串

输出:若该字符串符合手机格式,输出1,否则输出0

样例输入

12345612345

样例输出

1

 

问题链接JSK-132 判断字符串是否是手机号码

问题描述:(略)

问题分析

  编写一个函数来计算,需要注意变量类型,防止计算溢出。C语言是不做溢出检查的!

程序说明

  用C语言编写程序时,数组s[]的长度是个问题,原问题描述中没有指出输入最多多少字符,令人困惑。这就需要稍微长一点。如果用C++编写程序,使用string类声明字符串变量就简单了。

  发现有非数字字符时的处理需要仔细考虑,见程序20-21行。

  程序中的第12行似乎可以用scanf("%s", s)来实现,但是如果出现输入是"12345612345 abc"就有可能出现尴尬的结果。

  程序中用到了头文件string.h和ctype.h,一些功能就可以直接使用库函数了。使用库函数是可靠的,自己写一个函数会不会有BUG?

参考链接:(略)

题记:尽量使用库函数。

 

AC的C语言程序如下:

/* JSK-132 判断字符串是否是手机号码 */

#include <stdio.h>
#include <string.h>
#include <ctype.h>

#define N 128
char s[N];

int main(void)
{
    gets(s);

    if(strlen(s) != 11 || s[0] != '1')
        printf("0\n");
    else {
        int cnt = 1, i;
        for(i = 1; s[i]; i++) {
            if(!isdigit(s[i])) {
                cnt = 0;
                break;
            } else
                cnt++;
        }
        printf("%d\n", cnt == 11 ? 1 : 0);
    }

    return 0;
}

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值