编写一个程序,输入一串字符串,统计所有出现过的字符,按出现频率高低的顺序排列输出

 

typedef struct _NUM
{
	char num;
	int count;
}NUM;
void main()
{
	char s[100] = {0};

	scanf("%[^\n]", s);
	int i;
	NUM num[255];
	for (i = 0; i < 255; i++)
	{
		num[i].num = i;
		num[i].count = 0;
	}
	for (i = 0; s[i] != '\0'; i++)
	{
		num[s[i]].count++;
	}
	for (i = 0; i < 256; i++)
		for (int j = i; j < 254 - i; j++)
		{
			if (num[j].count < num[j+1].count)
			{
			NUM nn = num[j];
			num[j] = num[j + 1];
			num[j + 1] = nn;
			}
		}
	for (i = 0; i < 256; i++)
	{
		int c = 0;
		if (num[i].count > 0)
		{
			printf("%c-%d\n", num[i].num, num[i].count);
			c++;
		}
		if (c != 0 && c % 4 == 0)
			printf("\n");
	}
}

 

您好,我是有问必答小助手,您的问题已经有小伙伴解答了,您看下是否解决,可以追评进行沟通哦~

如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~

ps:问答VIP仅需29元,即可享受5次/月 有问必答服务,了解详情>>>https://vip.csdn.net/askvip?utm_source=1146287632