当前位置: 首页 > article >正文

C++面试宝典第2题:逆序输出整数

题目

        写一个方法,将一个整数逆序打印输出到控制台。注意:当输入的数字含有结尾的0时,输出不应带有前导的0。比如:123的逆序输出为321,8600的逆序输出为68,-609的逆序输出为-906。

解析

        这道题本身并没有什么难度,主要考察应聘者全面思考问题的能力。假如我们是一个测试工程师,应当如何编写这道题的测试用例呢?下面给出了一些测试用例,可供应聘者参考。

        1、整数为0时,输出为:“0”。

        2、整数为6时,输出为:“6”。

        3、整数为365时,输出为:“563”。

        4、整数为1200时,输出为:“21”。

        5、整数为1002时,输出为:“2001”。

        6、整数为100200时,输出为:“2001”。

        7、整数为-6时,输出为:“-6”。

        8、整数为-365时,输出为:“-563”。

        9、整数为-1200时,输出为:“-21”。

        10、整数为-1002时,输出为:“-2001”。

        11、整数为-100200时,输出为:“-2001”。

        本题的解题思路为:首先,判断整数为正数还是负数,如果为负数,则直接输出负号,并取其绝对值。然后,依次取出个位、十位、百位上的数字,判断是否为0,如果为0,则跳过,直到找到不是0的数字,再输出该数字。后续再遇到数字为0时,需要输出0,不能跳过。

        下面,我们给出了这道题的示例代码。

#include <iostream>
using namespace std;

void OutputReverse(int nNumber)
{
    if (nNumber == 0)
    {
        cout << nNumber << endl;
        return;
    }

    if (nNumber < 0)
    {
        nNumber = -nNumber;
        cout << "-";
    }

    bool bPrefixZero = true;
    while (nNumber != 0)
    {
        int nTemp = nNumber % 10;
        if (nTemp != 0 || !bPrefixZero)
        {
            if (bPrefixZero)
            {
                bPrefixZero = false;
            }

            cout << nTemp;
        }

        nNumber = nNumber / 10;
    }

    cout << endl;
}

int main()
{
    OutputReverse(0);
    OutputReverse(6);
    OutputReverse(365);
    OutputReverse(1200);
    OutputReverse(1002);
    OutputReverse(100200);
    OutputReverse(-6);
    OutputReverse(-365);
    OutputReverse(-1200);
    OutputReverse(-1002);
    OutputReverse(-100200);
    getchar();
    return 0;
}

        在上面的示例代码中,我们首先对0这种特殊情况进行了处理,直接原样输出0。对于负数,我们会输出负号,然后取其相反数。然后,我们对nNumber进行取余操作,得到每一位上的数字nTemp,并对nNumber除以10,一直到nNumber为0时为止。在遍历每一位上的数字前,我们记录了一个变量bPrefixZero,默认为true。当nTemp为0且bPrefixZero为true时,不输出0,其他情况下,则都需要输出nTemp。当nTemp不为0时,会将bPrefixZero设置为false。

总结

        通过这道题,我们学会了如何更全面、更仔细地思考问题。严谨是一个软件开发工程师的必备素质,我们在平时的编程过程中,就应当养成严谨的好习惯。

        另外,我们还为你留了一些课后的拓展作业,快来试一试吧!

        1、有两个字符串s和t,请编写一个方法,查找字符串t在字符串s中出现的最左边的位置;如果在s中没有与t匹配的子串,则返回-1。


http://www.kler.cn/news/157629.html

相关文章:

  • SQL怎么优化执行效率更高?
  • 03_W5500TCP_Client
  • 视频的关键知识
  • STM32使用SIM900A、SIM800C、SIM800A完成短信发送、连接onenet上传数据、拨打电话_完整教程
  • go写文件后出现大量NUL字符问题记录
  • 常见代码优化案例记录
  • 2023.12.4 -JAVA学习第二天
  • 家用小型洗衣机哪款性价比高?内衣洗衣机品牌推荐
  • ESP32 freeRTOS笔记 参数传递、任务优先级
  • 【每日一题】从二叉搜索树到更大和树
  • 仅 CSS 阅读进度条
  • Spring Boot 之 ModelFactory
  • 【23-24 秋学期】NNDL 作业12 优化算法2D可视化
  • 【蓝桥杯软件赛 零基础备赛20周】第5周——高精度大数运算与队列
  • 基于Python的PyGame的俄罗斯方块游戏设计与实现
  • HostHunter虚拟主机发现
  • 12、pytest上下文友好的输出
  • 【重点】【滑动窗口】76.最小覆盖子串
  • YoloV5改进策略:Swift Parameter-free Attention,无参注意力机制,超分模型的完美迁移
  • VSCode Vue 开发环境配置
  • clip-path,css裁剪函数
  • C语言碎片知识
  • PTA 7-231 买文具
  • 陀螺仪LSM6DSV16X与AI集成(2)----姿态解算
  • 数据结构-栈和队列
  • 一键式紧急报警柱系统
  • 力扣labuladong一刷day27天数组去重
  • 4-Docker命令之docker run
  • 剑指 Offer(第2版)面试题 16:数值的整数次方
  • JAVA-作业7-画一个笑脸