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

计蒜客题解(JSK) 专栏收录该内容
64 篇文章 16 订阅

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

手机号码是一串数字,长度为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;
}

 

 

  • 0
    点赞
  • 0
    评论
  • 1
    收藏
  • 打赏
    打赏
  • 扫一扫,分享海报

参与评论
请先登录 后发表评论~
©️2021 CSDN 皮肤主题: 技术黑板 设计师:CSDN官方博客 返回首页

打赏作者

海岛Blog

不要打撒mi

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值