(C++)读取一个输入的int型十进制数字的位数,并正序输出每个位上的值(不同数位的值用1个空格字符间隔)
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个空格字符间隔)的更多相关文章
- C语言-正序输出一个一个多位数
//正序输出一个多位数,所有的数字中间用空格分隔 int main() { ;//是可变化的 ; int d; int t =x; //先计算x的位数 ){ t /= ; mask *=; } pri ...
- 给一个int型整数,如何将这个整数的奇偶位互换
题目: 假设一个8为整数是(10101100)b那么奇偶互换之后就是(01011100)b.假设机器是32位的 注意: 8位中最低位开始数,最低位是第0位,是偶数为,次低位时第1位,是偶数位. 做法: ...
- c#编程:给定一个正整数求出是几位数并逆序输出
<span style="color:#FF0000;">第一步:把输入的数字转为字符串n.ToString() 第二步:求出字符串的长度即为正整数的位数 第三步:从后 ...
- 一个简单的int型C++单链表的实现
IntSLList.h //************************ intSLList.h ************************** // singly-linked list ...
- 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 ...
- Java 读取控制台输入
方式1:InputStreamReader+BufferedReader package my_package; import java.io.BufferedReader; import java. ...
- 求int型正整数在内存中存储时1的个数 && int型的数到底最大是多少?
输入一个int型的正整数(十位数之内!嘞!),计算出该int型数据在内存中存储时1的个数. #include<bits/stdc++.h> using namespace std; int ...
- int型的数到底最大值是多少?
本文摘自:http://blog.csdn.net/friendbaby/article/details/6822690 刚才在百度知道上看见一个网友问int型的数最大能存多少.这个问题其实计算机系统 ...
- 把int型非负数转换为英文
数字转换为英文 输入为int型非负数,最大值为2^31 - 1 = 2 147 483 647 输出为String英文,最大输出为Two Billion One Hundred Forty Seven ...
随机推荐
- C# 委托专题
单播委托:一个委托只指向一个方法: 多播委托:一个委托指向多个方法,形成一个方法链: Main是静态方法,里面只能引用静态方法,而不能引用实例方法: Main可以进行类的实例化,然后引用实例化后的方法 ...
- java堆排序
直接贴源代码: package com.java.fmd; import java.util.Scanner; public class HeapSort { int[] arr; public st ...
- Myeclipse 中怎样更改web项目的访问名
第一步:在要修改的项目名称上右击选择最下面一列的"prepertise"(属性),进入属性设置界面. 第二步:找到左侧菜单栏的"Myeclipse"中的web项 ...
- Ncrystal Skill设计
在使用allegro时一般都会听说过skill,使用合适的Skill会使事情事半功倍.但是现阶段所能看到的个人白嫖的Skill都有一些通病.所以我才开发符合自己操作习惯的Skill. 当前我们所能找的 ...
- 1、【Python运维脚本】Python 按时间删除和清空文件
删除和清空文件,用shell的话一条命令就够了,Python要一堆命令. 但是为了学习Python,所以用于实战,就得这么干了. Python 按时间删除和清空文件 #!/usr/bin/python ...
- css加载动画(纯css和html)
从jq官网上摘抄下来的一个简单加载动画,个人比较喜欢使用~存在这里,作为记录 话不多说~上代码 <!DOCTYPE html> <html lang="en"&g ...
- VSCode 前端常用插件集合
Visual Studio Code 是由微软开发的一款免费.跨平台的文本编辑器.由于其卓越的性能和丰富的功能,它很快就受到了大家的喜爱. 但工欲善其事必先利其器,以下是本人为前端开发收集的常用的vs ...
- springmvc03-restful和控制器
一.控制器Controller 控制器复杂提供访问应用程序的行为,通常通过接口定义或注解定义两种方法实现. 控制器负责解析用户的请求并将其转换为一个模型. 在Spring MVC中一个控制器类可以包含 ...
- docker容器的持久化存储:Volume
独立于docker容器的持久化存储: 法(1):自动将服务器文件夹挂载到容器内部文件夹/usr/share/nginx/html,这样只修改服务器文件夹下的内容即可对应修改容器内部文件夹的内容 将服务 ...
- for & while &迭代器
for (int i = 0; i < 10; i++) { System.out.println("hello"); } int a=100; for (;a<110 ...