1 /*
2 程序功能:读取一个输入的int型十进制数字的位数,并正序输出每个位上的值(不同数位的值用1个空格字符间隔)。
3 例如:当输入985这个数字时,显示如下信息:
4 985是一个3位数字!
5 该数字从左至右的位置上的数字依次为:9 8 5
6 作者:美人她爹,微信:fatherofBeauty
7 时间:2022年4月20日10:39:27
8 */
9 #include <iostream>
10 #include <cmath>
11 /*自定义关键字,标记函数参数是一个输入值*/
12 #define IN
13 using namespace std;
14 /*读取数字位数的函数*/
15 int ReadDigitsOfNumber(IN const int number,IN const int decimalSytem);
16 /*显示数字每个位上数字的函数*/
17 int DisplayNumberByDigits(IN const int number,IN const int digits,IN const int deciamlSystem);
18 int main()
19 {
20 int number;
21 int digits;
22 int decimalSystem = 10;
23
24 cout<<"请输入一个十进制的数字:";
25 cin>>number;
26 /*调用函数ReadDigitsOfNumber(),并将函数返回值赋值给变量digits*/
27 digits = ReadDigitsOfNumber(number,decimalSystem);
28 /*输出输入的十进制数字的digits*/
29 cout<<number<<"是一个"<<digits<<"位数字!"<<endl;
30 /*调用函数DisplayNumberByDigits()*/
31 DisplayNumberByDigits(number,digits,decimalSystem);
32 system("pause");
33 return 0;
34 }
35
36 /*
37 ReadDigitsOfNumber()函数算法原理:
38 利用C++整型数据不保留小数位的特点,
39 对输入数据按照进制(此程序是10)做除法去截位,
40 即算术运算符/,具有截位功能。
41 举例:int number = 985;
42 number = number/10;
43 从数学角度看,number值,应该是98.5。
44 但是,因为number是整型数据,不保留小数位,此时,number = 98
45 number由最初的赋值985变为98,即实现了截位。
46
47 每截除1位,用一个初始值为零的变量digitsCount作为计数器,计数1次。
48 当最后一位截完,输入数据就变为零(作为循环终止条件)
49 此时,digitsCount保存的数据,就是输入数字的位数。
50 */
51 int ReadDigitsOfNumber(IN const int number,IN const int decimalSystem)
52 {
53 int conditionFlag;
54 int digitsCount = 0;//将计数器初始化为零
55 int computeDigitsWorkingNumber = number;
56
57 /*do-while循环实现*/
58
59 do
60 {
61 computeDigitsWorkingNumber = computeDigitsWorkingNumber/decimalSystem;
62 conditionFlag = computeDigitsWorkingNumber;
63 digitsCount = digitsCount + 1;
64 }while(conditionFlag != 0);
65
66
67 /*for循环实现*/
68 /*
69 if(computeDigitsWorkingNumber == 0)
70 {
71 digitsCount = 1;
72 }
73 else
74 {
75 for(conditionFlag = computeDigitsWorkingNumber ;conditionFlag != 0;conditionFlag = conditionFlag/decimalSystem)
76 {
77 digitsCount = digitsCount + 1;
78 }
79 }
80 */
81
82 /*用while循环实现*/
83 /*
84 if(computeDigitsWorkingNumber == 0)
85 {
86 digitsCount = 1;
87 }
88 else
89 {
90
91 //conditionFlag = computeDigitsWorkingNumber;
92 //while(conditionFlag != 0)
93 //{
94 // conditionFlag = conditionFlag/decimalSystem;
95 // digitsCount = digitsCount + 1;
96 //}
97
98 while(computeDigitsWorkingNumber != 0)
99 {
100 computeDigitsWorkingNumber = computeDigitsWorkingNumber/decimalSystem;
101 digitsCount = digitsCount + 1;
102 }
103 }
104 */
105 return digitsCount;
106 }
107 /*
108 DisplayNumberByDigits()函数算法原理:
109 对于一个输入的数字,比如985,将9、8、5三个值输出。
110 用C++实现,有两种方法。
111 方法1:
112 思路:(高位捕获,依次从高位截位,迭代)
113 从十进制高位开始用整除(/)捕获数位上的值;
114 然后从高位开始进行取余(%)逐位截除;
115 如此循环迭代,直到输入数字为零,循环终止。
116 方法2:
117 思路:(低位捕获,依次从低位截位,迭代)
118 从十进制低位开始取余(%)捕获数位上的值;
119 然后从低位开始进行整除(/)逐位截除,
120 如此循环迭代,直到输入数字为零,循环终止。
121 正序输出的话,该方法需要用数组;
122 */
123
124 /*方法1-C++实现代码*/
125 int DisplayNumberByDigits(IN const int number,IN const int digits,IN const int decimalSystem)
126 {
127 cout<<"该数字从左至右位置上的数字依次为:";
128 /*用for循环实现*/
129
130 int displayWorkingNumber = number;
131 int displayWorkingDigits = digits;
132
133 for(int displayWorkingCount = 0;displayWorkingCount<digits;displayWorkingCount++)
134 {
135 cout<<displayWorkingNumber/(int)pow((float)decimalSystem,displayWorkingDigits - 1);
136 cout<<" ";
137 displayWorkingNumber = displayWorkingNumber%(int)pow((float)decimalSystem,displayWorkingDigits - 1);
138 displayWorkingDigits = displayWorkingDigits - 1;
139 }
140
141 /*用while循环实现*/
142 /*
143 int displayWorkingNumber = number;
144 int displayWorkingDigits = digits;
145 int displayWorkingCount = 0;
146
147 while(displayWorkingCount < digits)
148 {
149 cout<<displayWorkingNumber/(int)pow((float)decimalSystem,displayWorkingDigits - 1);
150 cout<<" ";
151 displayWorkingNumber = displayWorkingNumber%(int)pow((float)decimalSystem,displayWorkingDigits - 1);
152 displayWorkingDigits = displayWorkingDigits - 1;
153 displayWorkingCount = displayWorkingCount + 1;
154 }
155 */
156
157 /*用do-while循环实现*/
158 /*
159 int displayWorkingNumber = number;
160 int displayWorkingDigits = digits;
161 int displayWorkingCount = 0;
162 do
163 {
164 cout<<displayWorkingNumber/(int)pow((float)decimalSystem,displayWorkingDigits - 1);
165 cout<<" ";
166 displayWorkingNumber = displayWorkingNumber%(int)pow((float)decimalSystem,displayWorkingDigits - 1);
167 displayWorkingDigits = displayWorkingDigits - 1;
168 displayWorkingCount = displayWorkingCount + 1;
169 }while (displayWorkingCount < digits);
170 */
171 cout<<endl;
172 return 0;
173 }
174
175
176 /*方法2-C++实现代码*/
177 /*
178 int DisplayNumberByDigits(IN const int number,IN const int digits,IN const int decimalSystem)
179 {
180 cout<<"该数字从左至右位置上的数字依次为:";
181
182 int displayWorkingNumber = number;
183 int displayWorkingDigits = digits;
184 int digitsArray[10];//数组个数声明为10的原因:int型数据,最大值为2147483647,10位数字。
185 int displayWorkingCount;
186
187 for(displayWorkingCount = 0;displayWorkingCount < digits;displayWorkingCount++)
188 {
189 digitsArray[displayWorkingDigits -1] = displayWorkingNumber%decimalSystem;
190 displayWorkingNumber = displayWorkingNumber/decimalSystem;
191 displayWorkingDigits = displayWorkingDigits - 1;
192 }
193 for(displayWorkingCount = 0;displayWorkingCount <digits;displayWorkingCount++)
194 {
195 cout<<digitsArray[displayWorkingCount];
196 cout<<" ";
197 }
198 cout<<endl;
199 return 0;
200 }
201 */

执行结果

(C++)读取一个输入的int型十进制数字的位数,并正序输出每个位上的值(不同数位的值用1个空格字符间隔)的更多相关文章

  1. C语言-正序输出一个一个多位数

    //正序输出一个多位数,所有的数字中间用空格分隔 int main() { ;//是可变化的 ; int d; int t =x; //先计算x的位数 ){ t /= ; mask *=; } pri ...

  2. 给一个int型整数,如何将这个整数的奇偶位互换

    题目: 假设一个8为整数是(10101100)b那么奇偶互换之后就是(01011100)b.假设机器是32位的 注意: 8位中最低位开始数,最低位是第0位,是偶数为,次低位时第1位,是偶数位. 做法: ...

  3. c#编程:给定一个正整数求出是几位数并逆序输出

    <span style="color:#FF0000;">第一步:把输入的数字转为字符串n.ToString() 第二步:求出字符串的长度即为正整数的位数 第三步:从后 ...

  4. 一个简单的int型C++单链表的实现

    IntSLList.h //************************ intSLList.h ************************** // singly-linked list ...

  5. 4.给定一个正整数m,统计m的位数,分别打印每一位数字,再按照逆序打印出各位数字。 要求:m定义为类的属性,需定义构造函数为m赋值;当m大于99999时,输出错误信息“the number is too large”,不再执行。

    package a; public class ShuZi { int m; public int getM() { return m; } public void setM(int m) { thi ...

  6. Java 读取控制台输入

    方式1:InputStreamReader+BufferedReader package my_package; import java.io.BufferedReader; import java. ...

  7. 求int型正整数在内存中存储时1的个数 && int型的数到底最大是多少?

    输入一个int型的正整数(十位数之内!嘞!),计算出该int型数据在内存中存储时1的个数. #include<bits/stdc++.h> using namespace std; int ...

  8. int型的数到底最大值是多少?

    本文摘自:http://blog.csdn.net/friendbaby/article/details/6822690 刚才在百度知道上看见一个网友问int型的数最大能存多少.这个问题其实计算机系统 ...

  9. 把int型非负数转换为英文

    数字转换为英文 输入为int型非负数,最大值为2^31 - 1 = 2 147 483 647 输出为String英文,最大输出为Two Billion One Hundred Forty Seven ...

随机推荐

  1. Mybatis实现批量添加操作

    Mybatis实现批量添加操作 学习内容: 1. 使用 2. 代码实现 2.1 UserMapper.java 接口 2.2 UserMapper.xml 总结: 学习内容: 1. 使用 这里通过动态 ...

  2. audio小记

    写H5活动页的需要音频,图标旋转停止保持当时的旋转角度,这样视觉体验效果好: 之前写法是点击pause()就直接停止动画,后来发现了animation有个比较好的属性animation-play-st ...

  3. 142. 环形链表 II

    做题思路 or 感想 : 1,这一题用快慢指针来判断是否有环,快慢指针同一起点,速度不同,如果有环,则必定会相遇 2,第二个有意思的点就是数论环节来弄出环入口了,真的太精妙了,但因为我表述能力不好,这 ...

  4. IsDebuggerPresent的反调试与反反调试

    一.调用系统的IsDebuggerPresent函数 (1)实现程序 最简单也是最基础的,Windows提供的API接口:IsDebuggerPresent(),这API实际上就是访问PEB的Bein ...

  5. drf中的请求与响应

    请求与响应(3星) 请求:Request REST framework 传入视图的request对象不再是Django默认的HttpRequest对象,而是REST framework提供的扩展了Ht ...

  6. Metalama简介3.自定义.NET项目中的代码分析

    本系列其它文章 使用基于Roslyn的编译时AOP框架来解决.NET项目的代码复用问题 Metalama简介1. 不止是一个.NET跨平台的编译时AOP框架 Metalama简介2.利用Aspect在 ...

  7. element.insertAdjacentHTML

    一.概念 insertAdjacentHTML() 方法将指定的文本解析为 Element 元素,并将结果节点插入到DOM树中的指定位置.它不会重新解析它正在使用的元素,因此它不会破坏元素内的现有元素 ...

  8. 用Eclipse远程调试服务器tomcat

    BEGIN; 在做远程调试时,在windows系统和非windows系统下的配置,Tomcat中会有所差别,具体如下: 第一步.配置tomcat 一.在windows系统中: 打开�TALINE_HO ...

  9. 【dvwa攻略】安全等级low——爆破

    首先登录dvwa,进入到爆破功能模块,在这里是有可以输入账号密码的框的 打开burpsuite,抓包以后发现是get方法 通过在这里输入账号.密码 username password 然后再通过get ...

  10. 4.25JMster环境搭建、webxml及测试平台练习

    1.Java环境搭建 右击电脑属性--高级设置--环境变量--系统变量--新建(输入JAVA_HOME.C:\Program Files\Java\jdk1.8.0_91---CLASSPATH..; ...