用C++来2、计算在区间[1,n]的所有整数(n≤99)中,数字x(0≤x≤9)出现的次数
时间: 2024-11-27 07:24:20 浏览: 31
在C++中,我们可以使用哈希表(unordered_map)来计算区间[1, n]内所有整数中每个数字x(0到9)出现的次数。以下是简单的步骤和代码实现:
1. 定义一个`std::unordered_map<int, int>`,键用于存储数字x,值用于计数。
2. 遍历从1到n的整数范围,对于每个数字num:
- 将num转换为字符串,以便获取每一位数字。
- 对于字符串中的每一个字符,如果它是一个有效的数字(0到9),则增加对应的计数。
3. 最后,unordered_map中的值就是每个数字出现的次数。
下面是示例代码:
```cpp
#include <iostream>
#include <unordered_map>
#include <string>
int count_digit(int n) {
std::unordered_map<int, int> digit_counts(10, 0); // 初始化一个大小为10的map
for (int num = 1; num <= n; ++num) {
std::string str_num = std::to_string(num);
for (char c : str_num) {
if ('0' <= c && c <= '9') { // 检查是否是有效数字
digit_counts[c - '0']++; // 更新对应位置的计数
}
}
}
return digit_counts;
}
int main() {
int n = 99;
std::unordered_map<int, int> result = count_digit(n);
// 打印结果
for (const auto &entry : result) {
std::cout << "数字" << entry.first << "出现了 " << entry.second << "次\n";
}
return 0;
}
```
阅读全文