c语音:输入字符串,将输出小写字母个数并从小到大排列

编写程序,输入一个字符串(串长不超过1024),程序统计字符串中的各小写字母出现的次数,然后按字母出现的多少顺序输出(先输出字母出现次数多的,如果出现次数相同,则按字母表顺序输出,对不出现的字母不输出)。

例如,输入:5b3a+4-hdeh5dh?

     输出:   h    3

                  d    2

                  a    1

                 b    1

                 e    1

算法:此题关键在于用数组储存小写字母并用循环找到每一次最大的数并输出

首先输入字符串,用循环将每一个小写字母储存在数组c中

#include<stdio.h>
#include<string.h>
#define n 1024
void main()
{
	char a,i,j,k,t,string[n],c[26]={0};
	printf("输入:");
	fgets(string,n,stdin);
	a=strlen(string);
	for(i=0;i<a;i++)
	{
		for(j=0;j<26;j++)
		{
			if(string[i]=='a'+j)
			{
				c[j]++;
				break;
			}
		}
	}//将字符串里的小写字母储存在c【26】中
	/*for(i=0;i<26;i++)
		printf("%c-%d\t",i+'a',c[i]);
	printf("\n");*/    //根据情况编写算法
	printf("输出:\n");
int	w=26;
	while(w--)	
	{
		k=0;
		for(j=0;j<26;j++)
		{
			if(c[j]==0)
				continue;
			if(c[k]<c[j])
			k=j;
		}
	
		if(c[k]==0)//若数值c都为0则不必再循环
			break;
		else
			printf("%c  %d\n",k+'a',c[k]);
			c[k]=0;
	  }
}

结果:

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值