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

news2024/11/15 18:19:18

题目

        写一个方法,将一个整数逆序打印输出到控制台。注意:当输入的数字含有结尾的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.coloradmin.cn/o/1284892.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

国际语音呼叫中心适用的行业有哪些?

国际语音呼叫中心的出现&#xff0c;使企业可以在全球范围内提供统一的客户支持&#xff0c;有效地解决客户服务、市场营销等国际性电话沟通问题&#xff0c;为企业提供了卓越的全球客户服务&#xff0c;确保客户在不同国家和地区之间获得一致的、高质量的支持。那么哪些行业适…

<Linux>(极简关键、省时省力)《Linux操作系统原理分析之文件管理(1)》(22)

《Linux操作系统原理分析之文件管理&#xff08;1&#xff09;》&#xff08;22&#xff09; 7 文件管理7.1 文件与文件系统7.1.1 文件7.1.3 文件系统及其功能 7.2 文件的组织结构7.2.1 文件的逻辑结构7.2.2 文件的物理结构一、顺序结构&#xff08;顺序文件或连续文件&#xf…

STM32串口通信初探:使用HAL库实现基本功能

在本文中&#xff0c;我们将探索如何使用STM32的HAL库来实现串口通信的基本功能。串口通信是一种常见的外设通信方式&#xff0c;用于在微控制器和其他外部设备之间进行数据传输。在STM32系列微控制器中&#xff0c;HAL库提供了简单且灵活的方法来实现串口通信。我们将重点讨论…

UE4 双屏分辨率设置

背景&#xff1a; 做了一个UI 应用&#xff0c;需要在双屏上进行显示。 分辨率如下&#xff1a;3840*1080&#xff1b; 各种折腾&#xff0c;其实很简单&#xff1a; 主要是在全屏模式的时候 一开始没有选对&#xff0c;双屏总是不稳定。 全屏模式改成&#xff1a;Windows 之…

nodejs微信小程序+python+PHP就业求职招聘信息平台的设计与实现-计算机毕业设计推荐

目 录 摘 要 I ABSTRACT II 目 录 II 第1章 绪论 1 1.1背景及意义 1 1.2 国内外研究概况 1 1.3 研究的内容 1 第2章 相关技术 3 2.1 nodejs简介 4 2.2 express框架介绍 6 2.4 MySQL数据库 4 第3章 系统分析 5 3.1 需求分析 5 3.2 系统可行性分析 5 3.2.1技术可行性&#xff1a;…

Java 基础学习(五)面向对象编程-对象和类

1 类和对象 1.1 面向对象概述 1.1.1面向对象简史 面向对象编程思想最初的起源可以追溯到1960年的Simula语言&#xff0c;这被认为是第一个支持面向对象编程概念的语言。Simula引入了类、对象、继承等概念&#xff0c;将数据和操作进行封装。Simula的创始人奥利-约翰达尔&…

论文解读--2D Car Detection in Radar Data with PointNets

基于PointNets的雷达数据二维汽车检测 摘要 对于许多自动驾驶功能&#xff0c;高精度的感知车辆环境是一个重要的前提。现代高分辨率雷达传感器为每个目标产生多个雷达目标&#xff0c;这使得这些传感器特别适合于二维目标探测任务。这项工作提出了一种方法&#xff0c;使用Po…

Redis高可用之Sentinel哨兵模式

一、背景与简介 Redis关于高可用与分布式有三个与之相关的运维部署模式。分别是主从复制master-slave模式、哨兵Sentinel模式以及集群Cluster模式。 这三者都有各自的优缺点以及所应对的场景、对应的业务使用量与公司体量。 1、主从master-slave模式 【介绍】 这种模式可以采用…

win10、11系统安装班智达藏文输入法并正常使用(完美解决)

1. 结果图 2. 先闲聊两句 班智达输入法对于藏语初学者可谓是太好用了&#xff08;哈哈&#xff09;特别是联想提示的功能。不禁为开发团队点个赞。 表扬完了该批评批评了。班智达输入法的安装难度真是一言难尽。也许是开发者没有继续维护的缘故吧。想当年&#xff0c;哪个藏语…

视频的关键知识

1 引言 视频技术发展到现在已经有100多年的历史&#xff0c;虽然比照相技术历史时间短&#xff0c;但在过去很长一段时间之内都是最重要的媒体。 由于互联网在新世纪的崛起&#xff0c;使得传统的媒体技术有了更好的发展平台&#xff0c;应运而生了新的多媒体技术。而多媒体技…

MVSNeRF:多视图立体视觉的快速推广辐射场重建

MVSNeRF&#xff1a;多视图立体视觉的快速推广辐射场重建 摘要1 引言 摘要 在2021年&#xff0c;作者提出了MVSNeRF&#xff0c;一种新的神经渲染方法&#xff0c;在视图合成中可以有效地重建神经辐射场。与之前对神经辐射场的研究不同&#xff0c;我们考虑了对密集捕获的图像…

【模电】放大电路的组成原则

放大电路的组成原则 组成原则常用的两种共射放大电路 组成原则 通过对基本共射放大电路的简单分析可以总结出&#xff0c;在组成放大电路时必须遵循以下几个原则&#xff1a;    1. 必须根据所用放大管的类型提供直流电源&#xff0c;以便设置合适的静态工作点&#xff0c;并…

2024 年甘肃省职业院校技能大赛中职组 电子与信息类“网络安全”赛项竞赛样题-B

2024 年甘肃省职业院校技能大赛中职组 电子与信息类“网络安全”赛项竞赛样题-B 目录 2024 年甘肃省职业院校技能大赛中职组 电子与信息类“网络安全”赛项竞赛样题-B 需要环境或者解析可以私信 &#xff08;二&#xff09;A 模块基础设施设置/安全加固&#xff08;200 分&…

EI级 | Matlab实现TCN-GRU-Multihead-Attention多头注意力机制多变量时间序列预测

EI级 | Matlab实现TCN-GRU-Multihead-Attention多头注意力机制多变量时间序列预测 目录 EI级 | Matlab实现TCN-GRU-Multihead-Attention多头注意力机制多变量时间序列预测预测效果基本介绍程序设计参考资料 预测效果 基本介绍 1.【EI级】Matlab实现TCN-GRU-Multihead-Attention…

探索 SSO 的世界:简化登录流程的最佳实践(上)

&#x1f90d; 前端开发工程师&#xff08;主业&#xff09;、技术博主&#xff08;副业&#xff09;、已过CET6 &#x1f368; 阿珊和她的猫_CSDN个人主页 &#x1f560; 牛客高级专题作者、在牛客打造高质量专栏《前端面试必备》 &#x1f35a; 蓝桥云课签约作者、已在蓝桥云…

深度学习项目基于Tensorflow卷积神经网络人脸年龄预测系统

欢迎大家点赞、收藏、关注、评论啦 &#xff0c;由于篇幅有限&#xff0c;只展示了部分核心代码。 文章目录 一项目简介 二、功能三、系统四. 总结 一项目简介 系统介绍 基于Tensorflow的卷积神经网络人脸年龄预测系统是一种先进的深度学习应用&#xff0c;能够通过对大量人脸…

『亚马逊云科技产品测评』活动征文|基于亚马逊EC2云服务器安装Prometheus数据可视化监控

授权声明&#xff1a;本篇文章授权活动官方亚马逊云科技文章转发、改写权&#xff0c;包括不限于在 Developer Centre, 知乎&#xff0c;自媒体平台&#xff0c;第三方开发者媒体等亚马逊云科技官方渠道 亚马逊EC2云服务器&#xff08;Elastic Compute Cloud&#xff09;是亚马…

思维模型 路径依赖定律

本系列文章 主要是 分享 思维模型&#xff0c;涉及各个领域&#xff0c;重在提升认知。难以摆脱的惯性。 1 路径依赖定律的应用 1.1 打破路径依赖定律的苹果 在 20 世纪 80 年代&#xff0c;苹果公司推出了 Macintosh 电脑&#xff0c;这是一款具有图形用户界面和鼠标的创新产…

在intelliJ spring boot gradle插件3.2.0中未找到匹配的变量

我正在尝试使用spring启动Gradle插件的版本3.2.0。这是我的build.gradle文件&#xff1a; plugins {id javaid org.springframework.boot version 3.2.0id io.spring.dependency-management version 1.1.4 }group com.yaxin version 0.0.1-SNAPSHOTjava {sourceCompatibilit…

【unity3D】创建游戏物体的三种方式

&#x1f497; 未来的游戏开发程序媛&#xff0c;现在的努力学习菜鸡 &#x1f4a6;本专栏是我关于游戏开发的学习笔记 &#x1f236;本篇是在unity中创建游戏物体的三种方式 unity中创建游戏物体 使用构造函数创建一个空的游戏对象根据现有的预制体资源或者场景中已有的物体进…