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

#include 
#include 

int main(){
	printf("输入字符串:\n");
	//用来存储输入的字符串
	char cs[1024];
	scanf("%s", cs);
	int count[256] = {0};
	for(int i=0; cs[i]; i++) count[cs[i]]++;
	
	int max = -1;
	char c = 0;
	for(int i=0; i<256; i++){
		if(count[i] > max){
			max = count[i];
			c = (char)i;
		}
	}
	printf("出现次数最多的是:%c", c);
	return 0;
}

上述代码转载于百度问答

扩展:找出字符串数组中出现次数最多的字符串

代码:

#include
#include
#include

int N;	//字符串数组的大小
char* strings[1001];	//字符串数组
int max = 0;	//用来存储最多次数
int index = 0;	//用来存储出现次数最多的那个字符串的索引

int main(){
	scanf("%d", &N);
	for(int i=0; i<N; i++){
		char* str = (char*)malloc(sizeof(char)*15);
		scanf("%s", str);
		strings[i] = str;
	}
	char* Tstr;//用来暂时指向下面我们要与其它数组元素进行比较的字符串
	int temp = 0;	//用来存储*Tstr字符串出现的次数
	for(int i=0; i<N; i++){
		Tstr = strings[i];
		for(int j=0; j<=i; j++){
			//不知道为什么这里改成判断 Tstr == strings[j] 不对???
			if(strcmp(Tstr, strings[j]) == 0)
				temp++;
			}
		if(temp > max){
			max = temp;
			index = i;
		}
		temp = 0;
	}
	printf("出现次数最多的字符串是:%s", strings[index]);
	return 0;
}

你可能感兴趣的:(C语言,笔记)