酷代码 AI
菜单
全部AI  /  热门  /  AI写代码神器
服务商

用C++完成一本书的页数为N,页码从1开始编起,请你求出全部页码中,用了多少个0,1,2……9。输入 一个正整数N(N<=10000),表示总的页码。 输出 共十行:第k行为数字k-1的个数。 样例输入 复制 11 样例输出 复制 1 4 1 1 1 1 1 1 1 1

要解决这个问题,我们可以编写一个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点数解答]

相关提问