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. Spark项目应用-电子商务大数据分析总结

    一. 数据采集(要求至少爬取三千条记录,时间跨度超过一星期)数据采集到本地文件内容   爬取详见:python爬取京东评论   爬取了将近20000条数据,156个商品种类,用时2个多小时,期间中断数 ...

  2. XShell免费版的安装配置教程以及使用教程(超级详细)

    ​一. XShell的作用 XShell可以在Windows界面下来访问远端不同系统下的服务器,从而比较好的达到远程控制终端的目的.它支持 RLOGIN.SFTP.SERIAL.TELNET.SSH2 ...

  3. Shiro之权限管理的概念

    文章目录 前言:什么是shiro 一.什么是权限管理? 举例 二.权限管理的具体分类 1.身份认证 2.授权 总结 前言:什么是shiro Apache Shiro 是一个开源安全框架,提供身份验证. ...

  4. 自家APP打开微信小程序,可行吗?

    小程序的通用解决方案,今天为大家介绍一下FinClip.它的最大特点,就是能够让任何 App 运行小程序. 只需要在你的 App 里面,引入它的 SDK,就能加载运行外部小程序了.除了 SDK,它还提 ...

  5. QGIS 安装

    QGIS 安装 官网 https://www.qgis.org/ 下载地址 https://www.qgis.org/en/site/forusers/download.html 参考文档 https ...

  6. 『忘了再学』Shell基础 — 8、管道符介绍

    我们之前已经有文章说过管道符了,今天这里再简单总结一下用法. 1.行提取命令grep grep命令的作用,是在指定的文件中,搜索符合条件的字符串. 命令格式: [root@localhost ~ ] ...

  7. JavaWeb学习day2-web入门&随笔

    Tomcat详解: 1默认端口号: Tomcat:8080 Mysql:3306 http:80 https:443 2默认主机名:localhost 地址:127.0.0.1 3网站应用默认存放位置 ...

  8. 背包问题dp的初步总结

    背包问题 01背包 给定的物体只有0个和1个,只有选与不选的划分,其状态转移方程时由i-1行推出,所以第二层循环是由j=m,递减到v[i]的. for(int i=1;i<=n;i++){ fo ...

  9. LCA的离线快速求法

    最常见的LCA(树上公共祖先)都是在线算法,往往带了一个log.有一种办法是转化为"+-1最值问题"得到O(n)+O(1)的复杂度,但是原理复杂,常数大.今天介绍一种允许离线时接近 ...

  10. JVM组成、GC回收机制、算法、JVM常见启动参数、JAVA出现OOM,如何解决、tomcat优化方法

    JVM组成.GC回收机制.算法.JVM常见启动参数.JAVA出现OOM,如何解决.tomcat优化方法