【发布时间】:2018-04-19 23:07:00
【问题描述】:
我有一个复杂的C 程序,我只想编写一个获取字符串作为参数的函数。
int most_frequent(char *string)
函数必须返回字符串中出现频率最高的字符的编号。我尝试过这样的事情,但我认为这是不正确的:
int most_frequent(char *string){
int i, lenght;
lenght=strlen(string);
int max=0, x=0;
for(i=0;i<lenght;i++)
{
if(string[i]==string[i++])
{
x++;
}
if(max<x)
max=x;
}
return max;
}
例如:“溢出” - 2 “十一” - 3
【问题讨论】:
-
你的算法是错误的,你的代码正在计算最多的相同数字。
-
"返回最常见字符的数量'需要一个各种字符的出现计数表。
if(string[i]==string[i++])简单测试两个后续string[]是否相同。您需要一种新方法. -
先弄清楚如何在没有计算机的情况下解决这个问题,然后尝试编写代码。
-
您可以使用频率表(如 chux 建议的那样),或使用两个嵌套的
for循环。外循环选择一个字符。内部循环计算该字符的出现次数。 -
尝试计算每个字符出现的频率并保存,然后返回你得到的最大的数字。例如,对于“溢出”:数'o'的个数,然后数'v'的个数,...最后返回最大个数。