C++ 字符串编程训练5

手机号码合法性:

1)长度13位

2)以86的国家码打头

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

标题:判断手机号码是否合法,输出对应值

说明:函数要求包括:

1)合法则返回0;

2)长度不合法则返回1;

3)包含非数字字符则返回2;

4)不以86开头则返回3.

int legal_phone(const string &str)
{
    if(str.size()!=13)//长度的判断
    {
      return 1;
    }
    if(str[0]!=‘8‘&&str[1]!=‘6‘)//是否86开头的判断
    {
      return 3;
    }
    for(int i=0;i<str.size();i++)//是否有非数字的判断
    {
      if(!isdigit(str[i]))
      {
        return 2;
      }
    }
    return 0;
}

int main()
{
    string str;
    getline(cin,str);
    int res=legal_phone(str);
    cout<<res;
}

时间: 2024-10-02 01:04:57

C++ 字符串编程训练5的相关文章

C++ 字符串编程训练1

最近又到了找工作的时间,所以想每天抽点时间出来对编程进行相关训练.C++字符串是一个很重要的知识点,采用STL.算法等C++优于C的方面,能够使问题解决起来更加轻松.以下程序都是自己写的,可能有些地方时间效率.空间效率不高,所以希望大家能够多多讨论交流,互相提升. 题目:删除子串 说明:给定两个形参str和substr,其中str为源字符串,substr为需要删除的子串,如果str中包含substr,则将其删除并输出新的字符串,否则输出源字符串. void delete_substr(strin

C++ 字符串编程训练2

今天讲的一道习题是很经典的约瑟夫环问题,其实lz对于链表的某些操作还不是太懂,所以在程序中有些地方还不太看得懂,这里借鉴的网上的做法,还请大牛能够解答我的疑惑,谢谢! 标题:约瑟夫环 说明:约瑟夫环是这么一个问题:已知n个人(编号1,2,...n)围坐在圆桌周围.从编号为k的人开始报数,数到m的人出列,他的下一个人又从1开始报数,数到m的人出列,直到所有人都出列. struct node{ int num; node *next; }; node *creat(int n)//构建一个链表,即h

C++ 字符串编程训练3

标题:比较一个数组是否为回文数组 说明:回文数组即从头到尾和从尾到头都是一样的,例如数组{1,2,3,4,5,4,3,2,1}或者数组{1,2,3,4,4,3,2,1}都是回文数组. bool is_huiwen(int A[],int n){    for(int i=0;i<n/2;i++)//n/2是关键,因为不需要再从尾到头比较    {      if(A[i]!=A[n-i-1])//不满足回文要求      {        return false;      }    }   

C++ 字符串编程训练4

这次的题目是一道比较题,将两个数组从后开始对比,如果对比的两个数不一样,则进行计数加1.当其中一个数组已经遍历完了之后,输出计数值,如果该值为0,表示两个数组相同. 标题:输出两个数组不相等的元素个数 说明:定义一个函数int array_compare(int len1,int array1[],int len2,int array2[]),其中len1为array1数组的长度,len2为array2数组的长度.函数返回一个int值的不等个数. int unequal_num(int A[],

(编程训练)再回首,数据结构——二叉树的前序、中序、后序遍历(非递归)

最近在复习数据结构,顺便看看大一的时候写的代码,看完之后比当初有了更加深刻的体会. 希望这些能提供给初学者一些参考. 在VC++6.0下可运行,当初还写了不少注释. 可以和(编程训练)再回首,数据结构--二叉树的前序.中序.后序遍历(递归)对比着看 [问题描述] 根据顺序存储结构建立二叉树的二叉链表,并对二叉树进行先序.中序.后序遍历. [基本要求] ·功能:根据顺序存储结构建立二叉树的二叉链表,并进行先序.中序.后序遍历. ·输入:输入二叉树的顺序存储. ·输出:二叉树的先序.中序.后序遍历序

VC 中 字符串编程

/* #ifdef WIDECHAR//#ifdef  /#ifndef 具有在本文件内向上溯源性  在上面的可以识别  在下面的不能识别 #endif wchar_t *pszText=L"HelloT_char"; wprintf(L"%s\n",pszText); #else char *pszText="HelloT_char"; printf("单%s\n",pszText); #endif */ 对于wchar_t

Qt 编程训练之七

Qt进程间通信 TCP / IP 跨平台的 QtNetwork模块提供的类网络编程便携式和容易. 它提供了高层类(例如,QNetworkAccessManager, QFtp)使用特定的应用层协议通信,低层类(例如, qtcpsocket, QTcpServer, QSslSocket为实现协议). 共享内存 跨平台共享内存类, QSharedMemory提供了访问操作系统的共享内存实现. 它允许安全由多个线程访问共享内存段和过程. 此外,QSystemSemaphore可用于控制对资源的访问共

(编程训练)再回首,数据结构——(升级版)使用栈判断括号匹配

点击打开 基础版 最近在复习数据结构,顺便看看大一的时候写的代码,看完之后比当初有了更加深刻的体会. 希望这些能提供给初学者一些参考. 在VC++6.0下可运行,当初还写了不少注释. /* ********************************************************** * 3-2 * 设在一个算术表达式中允许使用3种括号:圆括号"(".")",方 * 括号"["."]",花括号"

【编程训练-考研上机模拟】综合模拟2-2019浙大上机模拟(晴神)

A - next[i] Problem Description 在字符串匹配的KMP算法中有一个重要的概念是next数组,求解它的过程让不少同学伤透了心.next数组的直接语义其实是:使"长度为L的前缀"与"长度为L的后缀"相同的最大L,且满足条件的前后缀不能是原字符串本身. 例如对字符串"ababa"来说,长度为1的前缀与后缀都是"a",它们相同:长度为2的前缀与后缀分别是"ab"和"ba&qu