整数的位数可能各不相同,给定一组整数,请按位数分类统计,输出每种位数的出现次数。c++
时间: 2023-10-07 18:05:01 浏览: 95
可以使用 unordered_map 来记录每种位数的出现次数,具体代码如下:
```c++
#include <iostream>
#include <unordered_map>
#include <vector>
using namespace std;
int main() {
vector<int> nums = {123, 4567, 89, 12, 3456, 7890, 1234};
unordered_map<int, int> count;
for (int num : nums) {
int digit = 0;
while (num) {
num /= 10;
digit++;
}
count[digit]++;
}
for (auto& p : count) {
cout << "位数为 " << p.first << " 的整数出现了 " << p.second << " 次" << endl;
}
return 0;
}
```
输出结果为:
```
位数为 1 的整数出现了 2 次
位数为 2 的整数出现了 1 次
位数为 3 的整数出现了 1 次
位数为 4 的整数出现了 2 次
位数为 5 的整数出现了 1 次
```
其中 unordered_map 是 C++11 中提供的一种哈希表,可以快速地进行元素查找和插入。上面的代码中,我们用 count[digit]++ 来统计每种位数的出现次数,如果该位数之前没有出现过,则会自动初始化为 0。
阅读全文