c语言找出字符串中出现次数最少的字符sef
时间: 2023-10-08 14:14:49 浏览: 174
以下是一个示例代码:
```c
#include <stdio.h>
#include <string.h>
#include <limits.h>
int main() {
char str[100];
printf("请输入一个字符串:");
scanf("%s", str);
int freq[CHAR_MAX] = {0}; // 初始化字符频率数组
int min_freq = INT_MAX; // 记录最小频率
for (int i = 0; i < strlen(str); i++) {
freq[(int)str[i]]++; // 统计频率
}
for (int i = 0; i < CHAR_MAX; i++) {
if (freq[i] > 0 && freq[i] < min_freq) {
min_freq = freq[i]; // 更新最小频率
}
}
printf("出现次数最少的字符:");
for (int i = 0; i < CHAR_MAX; i++) {
if (freq[i] == min_freq) {
printf("%c ", (char)i); // 输出出现次数最少的字符
}
}
return 0;
}
```
首先,我们定义了一个字符数组 `str` 来存储输入的字符串,然后初始化了一个大小为 `CHAR_MAX` 的整型数组 `freq`,并将所有元素初始化为 0。其中,`CHAR_MAX` 是一个宏定义,表示 `char` 类型的最大值。我们使用它来确保 `freq` 数组的大小足够存储所有可能出现的字符。
接下来,我们使用一个循环来遍历字符串中的每个字符,并将对应的频率加 1。
然后,我们再使用一个循环来遍历 `freq` 数组,找到其中最小的且不为 0 的元素,即为出现次数最少的字符的频率。
最后,我们再使用一个循环来遍历 `freq` 数组,输出所有频率等于最小频率的字符。需要注意的是,我们需要将整型数组中的元素转换为字符类型,才能正确输出字符。
阅读全文