C 语言查找字符串中出现次数最多的字符

编写一个 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;
}
C Program to Find Maximum Occurring Character in a String 1

首先,我们声明一个大小为 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