电话号码升位(拷贝构造函数)

2023-11-02

题目描述
定义一个电话号码类CTelNumber,包含1个字符指针数据成员,以及构造、析构、打印及拷贝构造函数。

字符指针是用于动态创建一个字符数组,然后保存外来输入的电话号码

构造函数的功能是为对象设置键盘输入的7位电话号码,

拷贝构造函数的功能是用原来7位号码的对象升位为8位号码对象,也就是说拷贝构造的对象是源对象的升级.电话升位的规则是原2、3、4开头的电话号码前面加8,原5、6、7、8开头的前面加2。

注意:电话号码只能全部是数字字符,且与上述情况不符的输入均为非法)

输入
测试数据的组数 t

第一个7位号码

第二个7位号码

输出
第一个号码升位后的号码

第二个号码升位后的号码

如果号码升级不成功,则输出报错信息,具体看示例

样例输入
3
6545889
3335656
565655
样例输出
26545889
83335656
Illegal phone number

#include<iostream>
#include<cstring>
using namespace std;

class CTelNumber {
protected:
	char* cp;
public:
	CTelNumber(const char* number);
	~CTelNumber();
	void print();
	CTelNumber(const CTelNumber&);
};

CTelNumber::CTelNumber(const char* number) {
	cp = new char[strlen(number) + 1];
	strcpy(cp, number);
}

CTelNumber::~CTelNumber() {
	delete[] cp;
}

void CTelNumber::print() {
	cout << cp << endl;
}

CTelNumber::CTelNumber(const CTelNumber& ctn) {
    cp = new char[strlen(ctn.cp) + 2];
    if (ctn.cp[0] >= '2' || ctn.cp[0] <= '4')
        cp[0] = '8';
    else if (ctn.cp[0] >= '5' || ctn.cp[0] <= '8')
        cp[0] = '2';
    strcpy(cp + 1, ctn.cp);
}

int judge(char* num) {
    if (strlen(num) != 7)
        return 0;
    int i = 0;
    if (num[i] < '2' || num[i] > '8')
        return 0;
    ++i;
    while (num[i] != '\0') {
        if (num[i] < '0' || num[i] > '9')
            return 0;
        ++i;
    }
    return 1;
}

int main()
{
    int T;
    cin >> T;
    while (T--)
    {
        char telnumber[10];
        cin >> telnumber;
        if (judge(telnumber)) {
            CTelNumber ct1(telnumber);
            CTelNumber ct2(ct1);
            ct2.print();
        }
        else {
            cout << "Illegal phone number" << endl;
        }
    }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

电话号码升位(拷贝构造函数) 的相关文章

  • C++学习(四十二)缓冲:满缓冲 行缓冲 无缓冲

    类型 说明 输出情况 满缓冲 I O操作只有在缓冲区被填满后才会进行 1 缓冲区满 2 刷新数据 flush 3 关闭文件 行缓冲 遇到换行符或者缓冲区满后才会执行I O操作 1 缓冲区满 2 刷新数据 flush 3 关闭文件 4 遇到换
  • 修改Nuget缓存包下载路径

    一 打开NuGet config文件 该文件通常在C Users Username AppData Roaming NuGet下 二 添加设置 添加设置 value值设置为自己想要的路径
  • C++之:struct和class的区别

    一 数据封装和成员访问权限 1 结构体 struct 在struct中 默认的成员访问权限是public 这意味着 在结构体外部 我们可以直接访问其成员变量和成员函数 下面是一个简单的例子 struct Point int x y Poin
  • 智能指针与句柄详解(一)

    前言 智能指针与引用计数详解 一 中提到实现智能指针有两种方法 一种是引用计数 另一种就是句柄类实现 什么是句柄类 句柄类是用来存储和管理基类指针 指针所指对象的类型可以变化 它既可以指向基类类型对象又可以指向派生类型对象 用户通过句柄类访
  • C语言深入学习--checklist7:链接、运行时数据结构、申明

    1 你知道段的概念吗 段是二进制文件中的简单区域 里面保存了某种特定的类型 如符号表条目 相关的所有信息 1 可执行程序分为几个段 每个段保存什么内容 可执行程序分为三个段 BSS段 数据段 文本段 BSS段 Block Started b
  • C++之const类成员变量,const成员函数,const指针

    https www cnblogs com cthon p 9178701 html 结合下面这个链接观看更佳 讲常量指针和指向常量的指针的 https www cnblogs com lihuidashen p 4378884 html
  • C++ string类的实现

    个人简介 作者简介 大家好 我是菀枯 支持我 点赞 收藏 留言 格言 不要在低谷沉沦自己 不要在高峰上放弃努力 前言 在C语言中 没有专门用来表示字符串的类型 C语言的字符串是一系列以 0 为结尾的字符的集合 虽然C语言为这样的字符串提供了
  • C++学习(三十四)stdlib与cstdlib

    C语言中是有 include
  • ASCII Unicode, UTF8 的关系,string和wstring转换

    目录 1 三大编码由来和转换 2 三大编码在计算机中应用 3 char string 和wchar t wstring 转换 写这篇文章遇到的的问题是c 操作正则的时候 遇到中文出现匹配失败 以及visual studio中中文乱码问题 当
  • C++ 继承(1): 继承方式(public, protected, private)

    C 继承 1 继承方式 public protected private 继承中的特殊关系 隐藏 is a 在水一方xym的博客 CSDN博客 C 远征之继承篇 视频教程 笔记 方便自己查阅和复习 温故而知新 目录 1 c 继承简介 代码示
  • 分数运算(类+构造)

    题目描述 用C 定义和实现一个分数类 并根据要求完成分数对象的运用 分数类包含分子和分母两个属性 操作包括 各属性的get方法 构造函数 初始化分子分母 相加运算 该运算接收两个分数对象的分子和分母 然后进行分数相加 结果保存在自己的分子和
  • list容器模拟实现

    个人简介 作者简介 大家好 我是菀枯 支持我 点赞 收藏 留言 格言 不要在低谷沉沦自己 不要在高峰上放弃努力 前言 好久不见啊 今天我们的任务是自己从头到尾实现一个STL中的list容器 list的实现 list的介绍 之前我们实现了ST
  • C++ deque底层原理

    deque底层原理 一 目的 二 底层实现 三 原理图 四 类结构 五 push back 六 pop back 一 目的 实现双端数组 二 底层实现 双向开口的连续线性空间 三 原理图 四 类结构 class deque protecte
  • C++学习(四六九)LRU Least Recently Used算法

    LRU是Least Recently Used的缩写 即最近最少使用 最近一段时间最少使用 是一种常用的页面置换算法 选择最近最久未使用的页面予以淘汰 该算法赋予每个页面一个访问字段 用来记录一个页面自上次被访问以来所经历的时间 t 当须淘
  • C++写csv文件

    代码如下 include
  • C++给变量起别名

    以下代码展示给变量a取一个别名b 两者指向同一个内存空间位置 改变b a也会相应改变 include
  • C++ primer智能指针(HasPtr)实现

    智能指针显然是C 吸引人的地方之一 必须掌握 看了 C primer 里面着重讲了智能指针的实现方式 书中说到 HasPtr 注 就是自定义的智能指针 在其它方面的行为与普通指针一致 具体而言 复制对象时 副本和原对象将指向同一基础对象 如
  • C#学习 - 事件 续

    事件声明 完整声明 using System namespace ConsoleApp1 internal class Program static void Main string args Customer customer new C
  • acwing算法提高之动态规划--数字三角形模型

    目录 1 基础知识 2 模板 3 工程化 1 基础知识 暂无 2 模板 暂无 3 工程化 题目1 摘花生 解题思路 DP 状态定义 f i j 从 1 1 走到 i j 所摘花生总和 状态转移 有 从上方走到 i j 有 f i 1 j w
  • 如何用结构体替代数组实现学生信息的录入与比较

    这里是一个有关学生学号 成绩信息的录入 输出成绩最高的学生信息 供参考学习 include

随机推荐

  • Scott自学python——元组学习笔记

    元组与列表类似 不同之处在于元组的元素不能修改 元组使用小括号 元组也是通过下标进行访问 元组创建很简单 只需要在括号中添加元素 并使用逗号隔开即可 元组的内置方法count 统计元素在元组中出现的次数 元组的内置方法index 查找指定元
  • Mysql存储过程的变量定义

    1 局部变量 用户自定义 在begin end块中有效 语法 declare 变量名 数据类型 default 默认值 举例 declare name varchar 10 delimiter create procedure func b
  • Python——XML解析

    SAX是事件驱动的解析方式 会产生3个事件 a href python a 1 start element事件 在读取 a href 时 2 char data事件 在读取python时 3 end element事件 在读取 a 时 需要
  • AI 协助办公 |记一次用 GPT-4 写一个消息同步 App

    GPT 4 最近风头正劲 作为 NebulaGraph 的研发人员的我自然是跟进新技术步伐 恰好 现在有一个将 Slack channel 消息同步到其他 IM 的需求 看看 GPT 4 能不能帮我完成这次的信息同步工具的代码编写工作 本文
  • 二叉树的翻转

    目录 一 题目 二 解题思路 1 二叉树翻转 2 具体步骤 迭代法 三 代码实现 一 题目 1 leetcode链接 力扣 2 题目内容 给你一棵二叉树的根节点 root 翻转这棵二叉树 并返回其根节点 示例 1 输入 root 4 2 7
  • LeetCode No3. 无重复字符的最长子串 题解

    文章目录 一 题目 二 算法思想 三 示例 四 代码 五 复杂度分析 六 算法评价 一 题目 给定一个字符串 s 请你找出其中不含有重复字符的 最长子串 的长度 示例 1 输入 s abcabcbb 输出 3 解释 因为无重复字符的最长子串
  • 从高中到大学 寻找真实的自己

    写在前面 这是这个寒假刚开始在CSDN上写博客的时候发的第一个blink 当时想说的话有点多 但blink的文字限制是1024字 所以那时控制了字数 现在放开重新写 写在正文 因为疫情原因在家上了差不多3个月的网课 大一回来过个寒假 再次回
  • 2020年研究生数学建模竞赛优秀论文汇总

    A题 ASIC 芯片上的载波恢复 DSP算法设计与实现论文1 论文2 论文3 论文4 论文5 B题 降低汽油精制过程中的辛烷值损失模型论文1 论文2 论文3 论文4 论文5 论文6 论文7 论文8 论文9 论文10 C题 面向康复工程的脑电
  • HTTP协议2)----对于传输层的详细讲解

    大家好 我是 兔7 一位努力学习C 的博主 如果文章知识点有错误的地方 请指正 和大家一起学习 一起进步 如有不懂 可以随时向我提问 我会全力讲解 如果感觉博主的文章还不错的话 希望大家关注 点赞 收藏三连支持一下博主哦 你们的支持是我创作
  • pythonfilter_Python如何用filter函数筛选数据

    一 filter函数简介 filter函数主要用来筛选数据 过滤掉不符合条件的元素 并返回一个迭代器对象 如果要转换为列表list或者元祖tuple 可以使用内置函数list 或者内置函数tuple 来转换 filter函数接收两个参数 第
  • Altium Designer可以实现选中整条同网络线路的快捷键

    选中一段线路 按Tab键 可以选中同网络的整条线路
  • Masked Autoencoders Are Scalable Vision Learners

    Masked Autoencoders Are Scalable Vision Learners Author Unit Facebook AI Research FAIR Authors Kaiming He
  • Finclip小程序目录结构与微信小程序目录结构

    Finclip小程序目录结构 小程序包含一个描述整体程序的 app 和多个描述各自页面的 page 一个小程序主体部分由三个文件组成 必须放在项目的根目录 如下 文件 必需 作用 app js 是 小程序逻辑 app json 是 小程序公
  • 两个无序的数组 如何进行合并 为一个有序的数组

    这里我们首先来看 自己也才毕业半年 这些题比较适合新手练练思想 技术之路且行且珍惜 算法绝对是核心竞争力 两个无序的数组 那么首先第一步合并 第二步 使用正则表达式去掉 第三步 split进行划分 第四步 最核心的排序 此处用了Arrays
  • MYSQL索引那些事

    一 关系型和非关系型的区别 以及使用场景 关系型数据库 采用关系模型来组织数据的数据库 关系模型就是二维表格模型 一张二维表的表名就是关系 二维表中的一行就是一条记录 二维表中的一列就是一个字段 优点 容易理解 使用方便 通用的 sql 语
  • Ceph OSD Down

    CEPH集群跑了一段时间后有几个OSD变成down的状态了 但是我用这个命令去activate也不行 ceph deploy osd activate osd1 dev sdb2 dev sdb1 只能把osd从集群中移除 然后再重建了 这
  • 【我的Android进阶之旅】如何快速寻找Android第三方开源库在Jcenter上的最新版本...

    问题描述 解决方法 先了解compile comsquareupokhttpokhttp240的意义 了解Jcenter和Maven jcenter Maven Central 理解jcenter和Maven Central 快速搜索方法1
  • 改造我们的学习

    我们知道 程序员必须得不断的学习 才能跟上日新月异的技术 但是很多朋友陷入了误区 比如学习C 总觉得我要把 C Primier 看完 再开始编程 学习图像处理也是 非要把数字图像处理与Opencv的书籍看完 才开始上机调试 最后云里雾里 感
  • 零基础Qt笔记<传智教育>Qt版本:2022 5.15

    目录 1 创建第一个Qt程序 2 命名规范以及快捷键 3 QPushBottom的创建 4 对象树 5 Qt中的坐标系 6 信号和槽 6 1 实现点击按钮关闭窗口 6 2 自定义的信号和槽 6 3 自定义的信号和槽发生重载的解决 6 4 信
  • 电话号码升位(拷贝构造函数)

    题目描述 定义一个电话号码类CTelNumber 包含1个字符指针数据成员 以及构造 析构 打印及拷贝构造函数 字符指针是用于动态创建一个字符数组 然后保存外来输入的电话号码 构造函数的功能是为对象设置键盘输入的7位电话号码 拷贝构造函数的