一本书的页码从自然数1 开始顺序编码直到自然数n。书的页码按照通常的习惯编排,每个页码都不含多余的前导数字0。例如,第6页用数字6表示,而不是06或006等。数字计数问题要求对给定书的总页码n,计算出书的全部页码中分别用到多少次数字0,1,2,…,9。 用c++写出来
时间: 2024-09-20 11:07:08 浏览: 28
为了编写一个C++程序解决这个问题,我们可以创建一个函数来计算每个数字在页码中出现的次数。这里是一个简单的思路:
```cpp
#include <iostream>
#include <vector>
std::vector<int> count_digits(int n) {
std::vector<int> counts(10, 0); // 初始化一个长度为10的向量,用于存储0到9的计数
for (int i = 1; i <= n; ++i) {
// 对于每一页,提取页码中的每一位数字并累加计数
int page_num = i;
while (page_num > 0) {
counts[page_num % 10]++;
page_num /= 10;
}
}
return counts;
}
int main() {
int book_pages;
std::cout << "请输入书的总页数: ";
std::cin >> book_pages;
if (book_pages <= 0) {
std::cerr << "页数必须大于0!" << std::endl;
return 1;
}
std::vector<int> result = count_digits(book_pages);
for (int digit, count : result) {
std::cout << "数字" << digit << "出现了:" << count << "次\n";
}
return 0;
}
```
这个程序首先读取用户输入的书的总页数`book_pages`,然后计算从1到该页数的所有页码中每个数字0到9的出现次数,并打印结果。