我正在尝试从数组中获取最常用的字符。
这是我的代码
#include <stdio.h>
int main(void)
{
int c[1000];
char input[] = "abcdab";
int i;
for(i=0; input[i]; i++)
{
c[input[i]]++;
}
int j = 0;
char str = 0;
for(i=0; i<256; i++)
{
if(c[i] > j)
{
j = c[i];
str = i;
}
}
printf("%c\n", str);
return 0;
}
它返回&#39; a&#39;
但我想得到一个&#39;和&#39; b&#39;因为它们是数组中最常用的字符。 任何帮助将不胜感激,谢谢。
答案 0 :(得分:1)
您正在通过整个阵列寻找最大值,并记住第一个。使用您拥有的解决方案,您需要一个额外的循环:
for(i=0; i<256; i++){ // Look for all maximums
if(c[i] == j) // If it is the maximum
{
printf("%c\n", i); // print the character
}
}
请注意,您的数组c
未初始化为全零,因此纯粹是偶然(不是真的)代码正在运行。如果您希望c为全零,则需要将其声明为int c[1000] = {0};
或在其上调用memset
。