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. Cannot get a STRING value from a NUMERIC cell poi异常解决

    ref:http://www.tpyyes.com/a/kuozhan/2017/0902/199.html poi导入excel表格数据时报java.lang.IllegalStateExcepti ...

  2. EMS导入导出邮箱

    Exchange支持EMS命令导出用户邮箱内容作为备份的功能.当重要用户的邮件误删除后,可以通过导出的邮箱恢复数据. 1.授权管理用户 Exchange默认安装完成后,内置"Mailbox ...

  3. Servlet实现登录注册

    1.注册页面register.html <!DOCTYPE html> <html lang="en"> <head> <meta cha ...

  4. spring-基于xml的aop开发-快速入门

    1.导入aop的相关坐标 <dependency> <groupId>org.springframework</groupId> <artifactId> ...

  5. STL空间分配器源码分析(一)

    一.摘要 STL的空间分配器(allocator)定义于命名空间std内,主要为STL容器提供内存的分配和释放.对象的构造和析构的统一管理.空间分配器的实现细节,对于容器来说完全透明,容器不需关注内存 ...

  6. 【Azure Developer】使用 CURL 获取 Key Vault 中 Secrets 中的值

    问题描述 在使用CURL通过REST API获取Azure Key Vaualt的Secrets值,提示Missing Token, 问如何来生成正确的Token呢? # curl 命令 curl - ...

  7. 清除安装的Rancher、K8s

    #清除主机的所有容器.挂载.镜像(慎用) docker stop $(docker ps -aq) docker system prune -f docker volume rm $(docker v ...

  8. python基础-基本数据类型(二)

    一.序列类型 序列类型是用来表示有序的元素集合 1.字符串(str) python中字符串通常用str表示,字符串是使用单引号,双引号,三引号包裹起来的字符的序列,用来表示文本信息. 1.1 字符串的 ...

  9. 2022最新IntellJ IDEA的zheng开发部署文档

    目录 前景提示 一.环境整合 构建工具(参考工具部署方式) 二.git 导入编译器 三.模块描述浅析 四.配置文档 1.总配置 2.数据库配置 3.密码设置 4.配置建议 五.在IDEA中执行MySQ ...

  10. 聊聊Lock接口的lock()和lockInterruptible()有什么区别?

    lock()和lockInterruptible()都表示获取锁,唯一区别是,当A线程调用lock()或lockInterruptible()方法获取锁没有成功而进入等待锁的状态时,若接着调用该A线程 ...