要解决这个问题,我们可以编写一个C++程序来统计每个数字(0到9)在1到N的页码中出现的次数。以下是实现这个功能的代码: ```cpp #include <iostream> using namespace std; void countDigits(int N) { int count[10] = {0}; // 初始化一个数组来存储每个数字的出现次数 for (int i = 1; i <= N; i++) { int num = i; while (num > 0) { int digit = num % 10; // 获取当前数字的最后一位 count[digit]++; // 增加对应数字的计数 num /= 10; // 去掉最后一位 } } // 输出每个数字的出现次数 for (int i = 0; i < 10; i++) { cout << count[i] << endl; } } int main() { int N; cin >> N; countDigits(N); return 0; } ``` 代码解释: 1. `countDigits` 函数接受一个整数 `N`,表示总页码。 2. 使用一个大小为10的数组 `count` 来存储每个数字(0到9)的出现次数。 3. 通过循环从1到N,对每个数字进行逐位分解,统计每个数字的出现次数。 4. 输出每个数字的出现次数。 样例输入输出: - 输入 `11`,输出如下: ``` 1 4 1 1 1 1 1 1 1 1 ``` 额外需要注意的逻辑点: 1. 确保输入的 `N` 不超过10000,否则可能会超出预期范围。 2. 在统计数字时,注意处理数字0的情况,因为0不会出现在页码的最前面。 3. 如果 `N` 为0,程序应该输出10个0,因为没有任何页码被统计。 [2025-03-21 19:42:05 | AI写代码神器 | 422点数解答]