C++基本编程1——数位分离问题
数位分离问题
什么是数位分离呢?
3位数520,如何取得其个位、十位、百位的问题
模运算符 % 和 while循环的组合实现最简单数位分离逻辑↓
在这个场景中,我们使用了模运算符%,结合while循环进行数位分离。
int n = 123;
while(n) {
cout << n%10; // L1: n%10,即取得个位上的数输出
n /= 10; // L2: 然后把n变小10倍,即10位变个位,百位变10位
}
核心部分在L1和L2部分,通过while循环,不断执行取模(分离末位值)-> 降次(10位变个位、百位变10位)。直到n变成0。意味着所有的数位都提取成功。
数位分离的妙用之一:数的翻转
我们想要将123翻转变成321输出,怎么做呢?结合上面数位分离的基本型代码加以小小改造即可。
int n = 123;
int ans = 0;
while(n) {
ans = ans*10 + n%10;
n /= 10;
}
cout << ans;
上面的代码中,while循环,取模和降次都保留了,只增加了构造ans的部分。
应用:
(1)求完全数,水仙花数,完全数,亏数。(素数、水仙花数、完数、斐波那契数列、丑数的C++代码参考)
(2)整数转换成二进制/八进制/十六进制。
小结:
对于复杂的问题,它都包含一个核心的最简问题,和若干个简单的基本逻辑,应以复杂问题的分析思维来应对,即把大问题拆分成小问题。这些基本的小问题有必要总结为基本编程。

浙公网安备 33010602011771号