输入一个长度不大于1024的字符串,统计各个小写字母出现次数,然后按字母出现次数的多少从大到小排序,如果次数相同,按字母表输出,没出现的字母不输出。
例如输入:5b3a+4-hdeh5dh?
输出为:
h 3
d 2
a 1
b 1
e 1
为什么我这个代码没有输出??是哪里错了吗。
#include<stdio.h>
int main()
{
char s[1024],a[26],b[1024],k='a'-1;
int i=0,j,c[26],sum=0;
scanf("%s",s);
for(j=0;j<26;j++)
a[j]=(k+=1);
for(j=0;j<1024;j++)
{
while(i<1024)
{
if(s[i]>='a'&&s[i]<='z')
b[j]=s[i];
i++;
break;
}
}
for(j=0;j<26;j++)
{
for(i=0;i<1024;i++)
{
if(b[i]==a[j])
sum++;
else
continue;
c[j]=sum;
}
sum=0;
}
i=0;
while(i<1024)
{
if(c[i]<c[i+1])
{
j=c[i];
c[i]=c[i+1];
c[i+1]=j;
k=b[i];
b[i]=b[i+1];
b[i+1]=k;
i++;
}
else if(c[i]=c[i+1]&&b[i]>b[i+1])
{
k=b[i];
b[i]=b[i+1];
b[i+1]=k;
i++;
}
else
{
i++;
continue;
}
}
for(i=0;i<1024;i++)
{
printf("%c\t%d",b[i],c[i]);
printf("\n");
}
}