for (int i = 0; i < strlen(str); i++) { freq[str[i]]++; }我要用C语言打印这个字符串和每个字符出现的次数
时间: 2024-04-30 12:19:19 浏览: 88
可以使用以下代码实现:
```c
#include <stdio.h>
#include <string.h>
int main() {
char str[100];
int freq[256] = {0}; // 初始化为0,表示每个字符出现次数都为0
printf("请输入一个字符串:");
scanf("%s", str);
// 统计每个字符出现的次数
for (int i = 0; i < strlen(str); i++) {
freq[str[i]]++;
}
// 打印字符串和每个字符出现的次数
printf("输入的字符串为:%s\n", str);
printf("每个字符出现的次数为:\n");
for (int i = 0; i < 256; i++) {
if (freq[i] != 0) {
printf("'%c'出现了%d次\n", i, freq[i]);
}
}
return 0;
}
```
在这个代码中,我们使用了一个 `freq` 数组来统计每个字符出现的次数。该数组的下标是字符的 ASCII 码值,因此可以统计任何字符出现的次数。最后,我们遍历 `freq` 数组,输出每个字符出现的次数。
相关问题
详细分析下这段代码for (int i = 0; i < strlen(str); i++) { freq[str[i]]++; }
这段代码的作用是统计字符串 `str` 中每个字符出现的次数,并将结果保存在一个数组 `freq` 中。
具体分析如下:
1. `strlen(str)` 函数返回字符串 `str` 的长度,即字符个数。
2. `for (int i = 0; i < strlen(str); i++)` 表示循环遍历字符串 `str` 中的每个字符,从第一个字符开始遍历到最后一个字符。
3. `freq[str[i]]++;` 表示将字符串 `str` 中第 `i` 个字符出现的次数加 1。其中,`str[i]` 表示字符串 `str` 中第 `i` 个字符,`freq[str[i]]` 表示字符 `str[i]` 出现的次数,`++` 表示将其值加 1。
这样,当循环结束后,数组 `freq` 中存储的就是字符串 `str` 中每个字符出现的次数。例如,若字符串 `str` 为 `"hello"`,则 `freq['h']` 的值为 1,`freq['e']` 的值为 1,`freq['l']` 的值为 2,`freq['o']` 的值为 1,`freq['a']` 的值为 0,`freq['b']` 的值为 0,等等。
for (int i = 0; i < strlen(str); i++) { freq[str[i]]++; }
这段代码的作用是统计字符串 `str` 中每个字符出现的次数,具体来说:
- `strlen(str)` 返回字符串 `str` 的长度,即字符个数。
- `freq` 是一个整型数组,下标为字符的 ASCII 码值,元素值为该字符出现的次数。
- `str[i]` 表示字符串 `str` 中下标为 `i` 的字符。
- `freq[str[i]]++` 将字符 `str[i]` 出现的次数加 1,相当于 `freq[str[i]] = freq[str[i]] + 1`。
因此,循环结束后,`freq` 数组中存储的就是字符串 `str` 中每个字符出现的次数。
阅读全文