编写程序,输入一个字符串(串长不超过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;
}
}
结果: