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)整数转换成二进制/八进制/十六进制。

小结:

  对于复杂的问题,它都包含一个核心的最简问题,和若干个简单的基本逻辑,应以复杂问题的分析思维来应对,即把大问题拆分成小问题。这些基本的小问题有必要总结为基本编程。

posted @ 2025-10-17 16:32  gdyyx  阅读(44)  评论(0)    收藏  举报