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。
相关文章:

C++面试宝典第2题:逆序输出整数
题目 写一个方法,将一个整数逆序打印输出到控制台。注意:当输入的数字含有结尾的0时,输出不应带有前导的0。比如:123的逆序输出为321,8600的逆序输出为68,-609的逆序输出为-906。 解析 这道题本身并没有什么…...
Twincat功能块使用经验总结
控制全局变量: //轴控制指令 bi_Power: BOOL; //使能 bi_Reset: BOOL; //复位 bi_Stop: BOOL; //停止 bi_JogForward: BOOL; //正向点动 bi_JogBackwards: BOOL; //反向点动 bi_MoveAdditive: BOOL; //增量位…...

香港服务器时间不准,差8小时
解决方案1 1、timedatectl查看系统时间 2、查看系统时区 ls /usr/share/zoneinfo 3、删除当前系统所处时区 rm /etc/localtime 4、创建软链接,以替换当前的时区信息 ln -s /usr/share/zoneinfo/Universal /etc/localtime 解决方案2 手动设置硬件时钟 1、设置系…...

C++ 抽象类和接口 详解
目录 0 引言1 抽象类2 接口2.1 Java与C接口的区别 🙋♂️ 作者:海码007📜 专栏:C专栏💥 标题:C 抽象类和接口 详解❣️ 寄语:书到用时方恨少,事非经过不知难!…...

【Linux】awk 使用
awk 输出 // 打印所有列 $ awk {print $0} file // 打印第一列 $ awk {print $1} file // 打印第一和第三列 $ awk {print $1, $3} file // 打印第三列和第一列,注意先后顺序 $ cat file | awk {print $3, $1} …...

LeetCode力扣每日一题(Java):9、回文数
一、题目 二、解题思路 1、我的思路 当x<0时,x一定不是回文数,直接返回false 当x>0且x<10时,x一定是回文数,直接返回true x>10时,先将x转为字符串。将数字转成字符串方法挺多的,以下是&…...

WPF前端实现人脸扫描动画效果
前言 本章实现的效果主要通过OpacityMask与LinearGradientBrush(径向渐变) 的组合应用来实现。最终实现效果如下: LinearGradientBrush线性渐变画刷 LinearGradientBrush其实很简单,我们只需要关注5个属性,使用这5个属性你就可以完成这个画刷几乎所有的变化。 属性介…...

更改AndroidStudio模拟器位置
C盘何等的珍贵,可是好多工具,软件非得默认安装在C盘。。导致C盘越来越紧张。。 在日常使用过程中,安装任何软件都会将其安装到非系统盘下,Android模拟器也不能例外。保护好C盘也是日常一个良好的习惯。 Android AVD默认路径&…...
Dash 协议介绍
<?xml version"1.0" encoding"utf-8"?> <MPD xmlns"urn:mpeg:dash:schema:mpd:2011" minBufferTime"PT1.5S" type"static" mediaPresentationDuration"PT0H1M0.3S" maxSegmentDuration"PT0H0M2.0…...

RabbitMQ的消息发送和接收机制
所有 MQ 产品从模型抽象上来说都是一样的过程: 消费者(consumer)订阅某个队列。生产者(producer)创建消息,然后发布到队列(queue)中,最后将消息发送到监听的消费者。 上…...
记录111
在两台 RHEL 8 服务器上搭建 PostgreSQL 和 pgpool-II 环境涉及到安装 PostgreSQL、配置流复制(Streaming Replication)以及安装和配置 pgpool-II。以下是详细的步骤: ### 准备工作 1. **获取服务器**:确保你有两台运行 RHEL 8 的…...
振动和震动的区别?
问题描述:振动和震动的区别? 问题解决: 震动(Oscillation): 特点: 随机的、突发的、不经常的、无规律的运动。例子: 地壳震动、消息震动全国,强调的是运动的力度或幅度&…...

3DMM模型
目录 BFMBFM_200901_MorphableModel.matexp_pca.bintopology_info.npyexp_info.npy BFM BFM_2009 01_MorphableModel.mat from scipy.io import loadmat original_BFM loadmat("01_MorphableModel.mat") # dict_keys: [__header__, __version__, __globals__, # …...
Python 3 使用 write()、writelines() 函数写入文件
1 使用 write() 函数,将字符串(或字节串,仅适用写入二进制文件中)写入文件中。 with open(example.txt,w,encodingutf-8) as f:f.write(春夜喜雨\n)f.write(杜甫 [唐代]\n)f.write(好雨知时节,当春乃发生。\n)f.write(…...
鸿蒙(HarmonyOS)应用开发——管理组件状态
状态管理 在应用中,界面通常都是动态的。 #mermaid-svg-DrPNsglFkyLqn7Lw {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-DrPNsglFkyLqn7Lw .error-icon{fill:#552222;}#mermaid-svg-DrPNsglFkyLqn7Lw …...

倚天屠龙:Github Copilot vs Cursor
武林至尊,宝刀屠龙。号令天下,莫敢不从。倚天不出,谁与争锋! 作为开发人员吃饭的家伙,一款好的开发工具对开发人员的帮助是无法估量的。还记得在学校读书的时候,当时流行CS架构的RAD,Delphi和V…...

【web安全】RCE漏洞原理
前言 菜某的笔记总结,如有错误请指正。 RCE漏洞介绍 简而言之,就是代码中使用了可以把字符串当做代码执行的函数,但是又没有对用户的输入内容做到充分的过滤,导致可以被远程执行一些命令。 RCE漏洞的分类 RCE漏洞分为代码执行…...

EI论文复现:基于组合双向拍卖的共享储能机制研究程序代码!
本程序参考EI期刊论文《基于组合双向拍卖的共享储能机制研究》,文中的组合双向拍卖交易机制较为新颖,本质上属于博弈范畴,共享储能是目前的研究热点,牵涉到共享储能参与者的投标策略和收益函数,文中所提模型可为电力市…...
ThinkPHP 5 中,你可以使用定时任务调度器(TaskScheduler)来执行其他定时任务
在 ThinkPHP 5 中,你可以使用定时任务调度器(TaskScheduler)来执行其他定时任务。以下是一个示例代码,演示如何在一个定时任务中执行另一个定时任务: 首先,你需要创建一个继承自 think\console\Command 的…...

mysql:免费的GUI客户端工具推荐并介绍常用的操作
给大家推荐几个常用的 mysql 数据库客户端 sequel-pro sequel-ace 官网下载地址 免费 sequel-ace 可以理解为 Sequel Pro 的升级版,由于Sequel Pro官方不维护了,特别是对 MySQL 8.0 支持不好,所以现在由社区维护了新分支 sequel-ace&#x…...
MySQL 隔离级别:脏读、幻读及不可重复读的原理与示例
一、MySQL 隔离级别 MySQL 提供了四种隔离级别,用于控制事务之间的并发访问以及数据的可见性,不同隔离级别对脏读、幻读、不可重复读这几种并发数据问题有着不同的处理方式,具体如下: 隔离级别脏读不可重复读幻读性能特点及锁机制读未提交(READ UNCOMMITTED)允许出现允许…...
DockerHub与私有镜像仓库在容器化中的应用与管理
哈喽,大家好,我是左手python! Docker Hub的应用与管理 Docker Hub的基本概念与使用方法 Docker Hub是Docker官方提供的一个公共镜像仓库,用户可以在其中找到各种操作系统、软件和应用的镜像。开发者可以通过Docker Hub轻松获取所…...
pam_env.so模块配置解析
在PAM(Pluggable Authentication Modules)配置中, /etc/pam.d/su 文件相关配置含义如下: 配置解析 auth required pam_env.so1. 字段分解 字段值说明模块类型auth认证类模块,负责验证用户身份&am…...
Leetcode 3577. Count the Number of Computer Unlocking Permutations
Leetcode 3577. Count the Number of Computer Unlocking Permutations 1. 解题思路2. 代码实现 题目链接:3577. Count the Number of Computer Unlocking Permutations 1. 解题思路 这一题其实就是一个脑筋急转弯,要想要能够将所有的电脑解锁&#x…...

页面渲染流程与性能优化
页面渲染流程与性能优化详解(完整版) 一、现代浏览器渲染流程(详细说明) 1. 构建DOM树 浏览器接收到HTML文档后,会逐步解析并构建DOM(Document Object Model)树。具体过程如下: (…...

成都鼎讯硬核科技!雷达目标与干扰模拟器,以卓越性能制胜电磁频谱战
在现代战争中,电磁频谱已成为继陆、海、空、天之后的 “第五维战场”,雷达作为电磁频谱领域的关键装备,其干扰与抗干扰能力的较量,直接影响着战争的胜负走向。由成都鼎讯科技匠心打造的雷达目标与干扰模拟器,凭借数字射…...

【JavaWeb】Docker项目部署
引言 之前学习了Linux操作系统的常见命令,在Linux上安装软件,以及如何在Linux上部署一个单体项目,大多数同学都会有相同的感受,那就是麻烦。 核心体现在三点: 命令太多了,记不住 软件安装包名字复杂&…...

AI书签管理工具开发全记录(十九):嵌入资源处理
1.前言 📝 在上一篇文章中,我们完成了书签的导入导出功能。本篇文章我们研究如何处理嵌入资源,方便后续将资源打包到一个可执行文件中。 2.embed介绍 🎯 Go 1.16 引入了革命性的 embed 包,彻底改变了静态资源管理的…...
Mobile ALOHA全身模仿学习
一、题目 Mobile ALOHA:通过低成本全身远程操作学习双手移动操作 传统模仿学习(Imitation Learning)缺点:聚焦与桌面操作,缺乏通用任务所需的移动性和灵活性 本论文优点:(1)在ALOHA…...

SiFli 52把Imagie图片,Font字体资源放在指定位置,编译成指定img.bin和font.bin的问题
分区配置 (ptab.json) img 属性介绍: img 属性指定分区存放的 image 名称,指定的 image 名称必须是当前工程生成的 binary 。 如果 binary 有多个文件,则以 proj_name:binary_name 格式指定文件名, proj_name 为工程 名&…...