编写一个 C 语言程序,找出字符串中出现次数最多的字符,并附带示例。
C 语言程序:找出字符串中出现次数最多的字符 示例 1
此程序允许用户输入一个字符串(或字符数组)。然后,它将找出字符串中出现次数最多的字符(重复最多的字符)。
/* C Program to Find Maximum Occurring Character in a String */
#include <stdio.h>
#include <string.h>
int main()
{
char str[100], result;
int i, len;
int max = -1;
int freq[256] = {0};
printf("\n Please Enter any String : ");
gets(str);
len = strlen(str);
for(i = 0; i < len; i++)
{
freq[str[i]]++;
}
for(i = 0; i < len; i++)
{
if(max < freq[str[i]])
{
max = freq[str[i]];
result = str[i];
}
}
printf("\n The Maximum Occurring Character in a Given String = %c ", result);
return 0;
}

首先,我们声明一个大小为 256 的 Freq 数组,该数组最初包含 0。然后,我们使用 For Loop 迭代字符串中的每个字符,并找出重复次数最多的字符。
for(i = 0; i < len; i++)
{
if(max < freq[str[i]])
{
max = freq[str[i]];
result = str[i];
}
}
str[] = hello
第一个 For Loop – 第一次迭代:for(i = 0; i < strlen(str) ; i++)
条件为 True,因为 0 < 5。
if(max < freq[str[i]]) => if(-1 < freq[h]])
=> if(-1 < 1) – 条件为 True
max = freq[str[i]] => 1
result = str[i] = h
第二次迭代:for(i = 1; 1 < 5; 1++)
if(max < freq[str[1]]) => if(1 < freq[e]])
=> if(1 < 1) – 条件为 False
第三次迭代:(i = 2; 2 < 5; 2++)
if(1 < freq[l]]) => if(1 < 2) – 条件为 True
max = freq[str[i]] => 2
result = str[i] = l
第四次迭代:for(i = 3; 3 < 5; 3++)
if(max < freq[str[3]]) => if(2 < freq[l]])
=> if(2 < 2) – 条件为 False
第五次迭代:for(i = 4; 4 < 5; 4++)
if(max < freq[str[4]]) => if(2 < freq[o]])
=> if(2 < 1) – 条件为 False
最后,我们使用 C 语言的 printf 语句来打印最终的字符串。
printf("\n The Maximum Occurring Character in a Given String = %c ", result);
C 语言程序:找出字符串中出现次数最多的字符 示例 2
这个出现次数最多的字符串字符 C 程序与上面相同,但我们在逻辑上做了一些小的改动。
/* C Program to Find Maximum Occurring Character in a String */
#include <stdio.h>
#include <string.h>
int main()
{
char str[100], result;
int i, len;
int max = 0;
int freq[256] = {0};
printf("\n Please Enter any String : ");
gets(str);
len = strlen(str);
for(i = 0; i < len; i++)
{
freq[str[i]]++;
}
for(i = 0; i < 256; i++)
{
if(freq[i] > freq[max])
{
max = i;
}
}
printf("\n Character '%c' appears Maximum of %d Times in a Given String : %s ", max, freq[max], str);
return 0;
}
Please Enter any String : tutorialgateway.org
Character 'a' appears Maximum of 3 Times in a Given String : tutorialgateway.org
程序:找出字符串中出现次数最多的字符 示例 3
这个程序与第二个示例相同,但这次我们使用了 Functions 的概念来分离逻辑。
/* C Program to Find Maximum Occurring Character in a String */
#include <stdio.h>
#include <string.h>
void Max_Occurring(char *str);
int main()
{
char str[100];
printf("\n Please Enter any String : ");
gets(str);
Max_Occurring(str);
return 0;
}
void Max_Occurring(char *str)
{
int i;
int max = 0;
int freq[256] = {0};
for(i = 0; str[i] != '\0'; i++)
{
freq[str[i]] = freq[str[i]] + 1;
}
for(i = 0; i < 256; i++)
{
if(freq[i] > freq[max])
{
max = i;
}
}
printf("\n Character '%c' appears Maximum of %d Times in a Given String : %s ", max, freq[max], str);
}
Please Enter any String : learn c programming at tutorial gateway
Character 'a' appears Maximum of 6 Times in a Given String : learn c programming at tutorial gateway