C++编程逻辑讲解step by step:把一个整数按位拆分成1位整数。

news2024/11/18 13:47:38

分析

步骤之间有何关联?

思考的逻辑:

第一步得到4,b=a%10;即可

第二步得到3,但需要先得到123,所以要除10,即c=(a/10) %10;

第三步得到2,但需要先得到12 ,所以要除100,即d=( a/100 ) %10;

第四步得到1,但需要先得到1 ,所以要除1000 ,即f=(a/1000 ) %10;

似乎能得出结论:

每一次取个位数前,都需要先得到除了个位数以外其他那些数,而从步骤2开始,那些数实际上除过一次10了,下次再除一次10就行了。

能否改进一下,把上次除10的结果利用上?

沿着这个思路再改进一下:

步骤1改成:

b=a%10;

步骤2改成:

t=a /10 ;

c= t %10;   

步骤3改成:

t=t /10 ;

d= t %10;   

步骤4改成:

t=t /10 ;

f= t %10;   

// 这种改进,看着代码更长了,所谓的“利用上次结果”其实只是除10,从计算机运行效率看,除10和除100效率上没差别,似乎并没有改进,反而还要多执行很多语句。

// 这个ppt是一个思考过程的整理,希望大家都反思一下自己的思路,而且所谓“上次计算结果”、“除10”,这些并不是因为觉得“(a/1000 ) %10”和“(a/100 ) %10”它们长得相似通过数学思维推导而来,而应该是从功能实现角度考虑哪些是可重用的功能。以后还会看到各种各样的例子,并非都有这样一种公式可“推导”。

也许这个例子不恰当,如果所谓的“上次结果”是一大堆代码,这样的改进就有意义了,初学第二节课,还不能用复杂例子说明这个问题。还有,如果仍然觉得这种改进没必要,那请看下一页的演变。

#include <iostream>
using namespace std;
int main( )
{
	int a,t;
	cin>>a;
	t=a; 
	for(int i=0;i<4;i++){
		cout <<  t%10  << "\t";
		t=t/10;
	}
	return 0;
}

//之前抽取出公共的操作“t=t /10 ; ” ,就可以使用循环啦。

不过这个程序还有瑕疵,它结果输出是反的,输入1234,输出4321,还需要再做点工作,比如分离每位数从千位到个位的顺序,或者引入数组等等,讨论先到此为止。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1867646.html

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

相关文章

[XYCTF新生赛2024]-PWN:ptmalloc2 it‘s myheap plus解析(glibc2.35,堆中的栈迁移,orw)

查看保护 查看ida 思路&#xff1a; 泄露libc和堆地址就不多说了&#xff0c;fastbin duf也不解释了。这里主要是利用fastbin duf在environ附近创建堆块&#xff0c;泄露environ中的栈地址&#xff0c;然后就利用fastbin duf修改rbp和返回地址进行栈迁移了&#xff0c;迁移目标…

日志打印中对容器(包括多级容器)的通用输出

在日志打印中&#xff0c;往往有打印一个数组、集合等容器中的每个元素的需求&#xff0c;这些容器甚至可能嵌套起来&#xff0c;如果每个地方都用for循环打印&#xff0c;将会特别麻烦。基于这种需求&#xff0c;作者尝试实现一个通用的打印函数SeqToStr()&#xff0c;将容器序…

47岁TVB儿童节目主持20多年美貌零走样

现年47岁的香港艺人张洁莲&#xff08;Jackeline姐姐&#xff09;自从2020年嫁给拍拖多年的TVB「不老型男」袁文杰后&#xff0c;不时都在社交平台分享合照&#xff0c;夫妻间甜蜜恩爱&#xff0c;相信正是她多年来的保养秘诀。 最近有网友在社交平台分享了与张洁莲的合照&…

docker配置redis主从复制

下载redis,复制redis.conf 主节点(6379) 修改redis.conf # bind 127.0.0.1 # 注释掉这里 protected-mode no # 改为no port 6379从节点(6380) 修改redis.conf bind 127.0.0.1 protected-mode no # 改为no port 6380 replicaof 172.17.0.2 6379 # 这里的ip为主节点容器的i…

CS与MSF的权限互相传递/mimikatz抓取windows 2012明文密码

目录 CS和MSF的简单介绍 Metasploit Cobalt Strike 1、CS权限传递到MSF 2、MSF权限传递到CS 3、使用mimikatz抓取明文密码 通过修改注册表用户重新登录后抓取明文密码 今天的任务是两个 一个是CS与MSF的权限互相传递一个是抓取windows2012的明文密码 那就分别来完成 …

结构冒险,控制冒险,数据冒险实例分析

目录 1.结构冒险&#xff1a; 2.数据冒险&#xff1a; 3.控制冒险&#xff1a; 指令执行过程&#xff1a; 取指(IF)&#xff1a;从指令存储器或 Cache 中取指令。 译码/读寄存器(ID)&#xff1a;操作控制器对指令进行译码&#xff0c;同时从寄存器堆中取操作数。 执行/计算地…

文字实录|Checkout.com大中华区总经理项尧:品牌全球化发展中的支付运营策略

大家好&#xff0c;很高兴在此次【品牌全球化营销增长峰会】与大家一起分享和交流。 我叫项尧&#xff0c;是 Checkout.com 大中华区的总经理&#xff0c;在支付领域有将近15年的经验。 我们 Checkout.com 是一家总部位于英国的支付公司&#xff0c;专注于线上收单&#xff0…

深入理解组合模式(Composite Pattern)及其实际应用

引言 在软件开发中&#xff0c;我们经常会遇到树形结构的数据&#xff0c;这种结构包含了简单和复杂的对象。组合模式&#xff08;Composite Pattern&#xff09;通过将对象组织成树形结构来表示部分和整体的层次关系&#xff0c;使得客户端对单个对象和组合对象的使用具有一致…

OpenCV 张氏标定法

文章目录 一、简介二、实现代码三、实现效果参考资料一、简介 “张正友标定法”是由张正友教授于1998年提出的单平面棋盘格的摄像头标定方法,该方法介于传统标定法和自标定法之间,克服了传统标定法需要高精度标定物的缺点,仅需要一个棋盘格即可。作为一种非常经典的相机内参标定…

Redis发布、订阅模式(Pub/Sub)详解

Redis发布、订阅模式&#xff08;PUB-SUB&#xff09;详解 Redis的发布订阅&#xff08;Pub/Sub&#xff09;机制是一种消息通信模式&#xff0c;用于消息的广播。它允许多个客户端订阅&#xff08;Subscribe&#xff09;特定的频道&#xff08;Channel&#xff09;&#xff0c…

机器人控制系列教程之动力学建模(2)

接昨天的推文&#xff1a;https://editor.csdn.net/md/?articleId139991958 &#xff0c;动力学的求解通常是个相对比较复杂的过程&#xff0c;但现在基本上不用人工来推算求解各种公式和求解过程了&#xff0c;大家只需要知道其中的步骤即可&#xff0c;现代对于动力学问题的…

51单片机STC8H8K64U通过RA8889/RA8876如何控制彩屏(源码下载)

【硬件部份】 一、硬件连接实物&#xff1a; STC8H系列单片机不需要外部晶振和外部复位&#xff0c;在相同的工作频率下&#xff0c;速度比传统的8051单片机要快12倍&#xff0c;具有高可靠抗干扰的优秀特性&#xff0c;与瑞佑的RA8889/RA8876控制芯片刚好可以完美搭配用于工…

java易错题型(复习必看)

java易错题型&#xff1a; 下列符号中&#xff0c;哪个用于分隔throws关键字抛出的多个异常 逗号&#xff0c; Java中用来声明一个方法可能抛出某种异常的关键字是throw 对于catch子句的排列&#xff0c;下列哪种是正确的&#xff1a;子类异常在先&#xff0c;父类异常在后&a…

鸿蒙NEXT开发知识:工具常用命令—ohpm config

设置ohpm用户级配置项。 命令格式 ohpm config set <key> <value> ohpm config get <key> ohpm config delete <key> ohpm config list 说明 配置文件中信息以键值对<key> <value>形式存在。 功能描述 ohpm 从命令行和 .ohpmrc 文件中…

Android SurfaceFlinger——动画进程销毁(十七)

在动画播放完成后&#xff0c;对动画相关资源释放的同时还需要销毁动画进程。这里我们就来分析一下动画进程的销毁流程。 一、动画进程销毁 动画进程的销毁一般是在桌面进程准备显示的时候&#xff0c;而桌面准备显示是在桌面 Activity 的 Resume 生命周期&#xff0c;我们来看…

江科大—读写内部闪存FLASH读取芯片ID

读写内部闪存FLASH 右下角是OLED&#xff0c;然后左上角在PB1和PB11两个引脚&#xff0c;插上两个按键用于控制。下一个代码读取芯片ID&#xff0c;这个也是接上一个OLED&#xff0c;能显示测试数据就可以了。 STM32-STLINK Utility 本节的代码调试&#xff0c;使用辅助软件…

Sparse4Dv2

Sparse4D: Multi-view 3D Object Detection with Sparse Spatial-Temporal Fusion 相关内容&#xff1a;总览&#xff0c;Sparse4D v1&#xff0c;Sparse4D v3&#xff0c; 单位&#xff1a;地平线(Sparse4D v1 原班人马) GitHub&#xff1a;https://github.com/HorizonRobo…

计算机网络之数据通信原理(中)

上节内容传送口&#xff1a;数据通信原理基础 1.数据传输方式 1.1并行传输 并行传输: 字符编码的各个比特同时传输 特点&#xff1a; 一个比特时间内可传输一个字符&#xff0c;传输速度快&#xff0c;每个比特传输要求一个单独的信道支持&#xff0c;通信成本高&#xf…

基于单片机和 Arduino 平台的六自由度可控机械手臂

摘 要 : 为了降低机械手臂的设计开发难度 &#xff0c; 并使之尽早地投入应用 &#xff0c; 设计一种基于单片机和 Arduino 平台的六自由度可控机械手臂 。提出六自由度可控机械手臂的控制方案&#xff0c; 给出机械手臂控制系统的结构框图 。 详细设计六自由度可控机械手臂…

《UDS协议从入门到精通》系列——图解0x35:请求上传

《UDS协议从入门到精通》系列——图解0x35&#xff1a;请求上传 一、简介二、数据包格式2.1 服务请求格式2.2 服务响应格式2.2.1 肯定响应2.2.2 否定响应 三、通信示例 Tip&#x1f4cc;&#xff1a;本文描述中但凡涉及到其他UDS服务的&#xff0c;将陆续提供链接跳转方式以便快…