我正在尝试输入一个单词,并获取该字母被输入的次数。
假设我的输入是“你好”
我的输出将是:h = 1,e = 1 l = 2 等。
我非常接近正确,但我对这段代码有一个小问题:
#include <stdio.h>
#include <string.h>
void find_frequency(char s[], int count[]) {
int c = 0;
while (s[c] != '\0') {
if (s[c] >= 'a' && s[c] <= 'z' )
count[s[c]-'a']++;
c++;
}
}
int main()
{
char string[100];
int c, count[26] = {0};
printf("Input a string\n");
gets(string);
find_frequency(string, count);
printf("Character Count\n");
for (c = 0 ; c < 26 ; c++)
if(count[c] > 0)
printf("%c : %d\n", c + 'a', count[c]);
return 0;
}
这段代码完成了一半的工作,但不是全部。
它的输出按字母顺序排列。我如何更改它以仅提供输入的字符数组的输出?
最佳答案
如Ry- this comment中建议您可以迭代原始字符串并使用字符作为频率表的索引。类似于以下内容:
int len_string = strlen(string);
for (c=0; c<len_string; c++) {
char ch = string[c];
printf("%c: %d, ", ch, count[ch-'a']);
}
这不会完全符合您的预期输出,因为此代码将输出 l: 2
两次,但这提出了一个问题:
当您有像 abba
这样的字符串时,您的预期输出是什么? a:2,b:2
? a:1,b:2,a:1
? a:2,b:2,a:2
?当你问这样一个模棱两可的问题时,很难提供帮助。
关于c - 如何在C中查找字符数组中出现的次数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52674344/