for (int i = 0; i < strlen(str); i++) { freq[str[i]]++; }我要打印这个字符串和每个字符出现的次数
时间: 2024-05-04 08:19:18 浏览: 51
你可以参考下面的代码实现:
```c++
#include <iostream>
#include <cstring>
using namespace std;
int main() {
char str[100];
int freq[256] = {0}; // 初始化为0
cout << "请输入字符串:" << endl;
cin.getline(str, 100);
// 统计字符出现的次数
for (int i = 0; i < strlen(str); i++) {
freq[str[i]]++;
}
// 输出每个字符及其出现的次数
cout << "每个字符出现的次数:" << endl;
for (int i = 0; i < 256; i++) {
if (freq[i] > 0) {
cout << (char)i << ":" << freq[i] << endl;
}
}
return 0;
}
```
运行示例:
```
请输入字符串:
hello world!
每个字符出现的次数:
:1
!:1
d:1
e:1
h:1
l:3
o:2
r:1
w:1
```
注意,这里使用了 ASCII 码表的方式来统计每个字符出现的次数,因此需要定义一个大小为 256 的数组来存储每个字符的出现次数。
相关问题
for (int i = 0; i < strlen(str); i++) { freq[str[i]]++; }
这段代码是用来统计字符串中每个字符出现的频率的。具体来说,它遍历了整个字符串,对于每个字符,将该字符作为下标,增加对应位置的计数器。最终,每个字符出现的次数就保存在了对应下标的计数器中。
需要注意的是,这段代码只适用于 ASCII 字符集,因为它将字符作为下标,而 ASCII 字符集只有 128 个字符。如果要处理其他字符集,需要使用更为通用的方法,比如使用哈希表来统计字符出现的次数。
for (int i = 0; i < strlen(str); i++) { freq[str[i]]++; }这个循环的作用
这个循环的作用是统计一个字符串中每个字符出现的频率。具体来说,循环中的变量i从0开始逐个遍历字符串中的每个字符,然后将该字符作为下标,将对应的频率数组中的值加1,即freq[str[i]]++。循环结束后,freq数组中存储的就是字符串中每个字符的出现频率。其中,频率数组的大小需要根据字符串中出现的字符种类数来确定,通常可以使用一个大小为256的数组来存储ASCII码范围内的所有字符。
阅读全文