首页 > 专题系列 > C基础练习 > C语言程序设计-统计字符数[综合应用]
2013
11-19

C语言程序设计-统计字符数[综合应用]

10064 统计字符数

【问题描述】判断一个由a-z 这26个字符组成的字符串中哪个字符出现的次数最多。


【输入形式】第1行是测试数据的组数n,每组测试数据占1行,是一个由a-z这26个字符组成的字符串,每行数据不超过


                    1000个字符且非空。


【输出形式】输出n行,每行输出对应一个输入。一行输出包括出现次数最多的字符和该字符出现的次数,中间是一个


                    空格。如果有多个字符出现的次数相同且最多,那么输出ASCII码最小的那一个字符。


【样例输入】2


                    abbccc


                    adfadffasdf


【样例输出】c 3


                    f 4


【样例说明】输出样例如上。


【评分标准】本题共4个测试点,每个测试点0.25分,共1.0分。

 

#include <stdio.h>
char chs[1000];
void count(char ch[],int counts[]);
void max(int a[]);
int main()
{
	
	int n,i;
	scanf("%d",&n);
	for (i=0;i<n;i++)
	{
		int counts[26] = {0};
		scanf("%s",chs);
		count(chs,counts );
		max(counts);
		
	}
	return 0;
}

void count(char ch[],int counts[26])
{
	
	int i;
	for (i=0;ch[i]!='\0';i++)
	{
		// int index = ch[i]-97;
		// printf("%d\n",index);
		counts[ch[i]-97]++;
	}
}

void max(int a[])
{
	int max = 0;
	int k = -1;
	int i;
	for (i=0;i<26;i++)
	{
		if (max < a[i])
		{
			max = a[i];
			k = i;
		}
	}
	printf("%c %d\n",(k+97),max);
}

 


  1. 思路二可以用一个长度为k的队列来实现,入队后判断下队尾元素的next指针是否为空,若为空,则出队指针即为所求。