为什么我不对s字符串初始化成‘\0'这个程序就不能正常运行?初始化过后程序反而能正确输出了。
程序目标:
输入一个长度不大于1024的字符串,统计各个小写字母出现次数,然后按字母出现次数的多少从大到小排序,如果次数相同,按字母表输出,没出现的字母不输出。
例如输入:5b3a+4-hdeh5dh?
输出为:
h 3
d 2
a 1
b 1
e 1
#include<stdio.h>
int main()
{
char s[1024]={'\0'},a[26],d[26],k='a'-1;
int i=0,j,c[26]= {0},sum=0;
scanf("%s",s);
for(j=0; j<26; j++) {
a[j]=(k+=1);
}
for(j=0; j<26; j++)
{
for(i=0; i<1024; i++)
{
if(s[i]==a[j])
sum++;
}
c[j]=sum;
d[j]=a[j];
sum=0;
}
for(j=0; j<26; j++) {
for(i=0; i<26-1-j; i++) {
if(c[i]<c[i+1]) {
sum=c[i];
c[i]=c[i+1];
c[i+1]=sum;
k=d[i];
d[i]=d[i+1];
d[i+1]=k;
}
}
}
for(i=0; i<26; i++)
{
if(c[i]>0) {
printf("%c\t%d",d[i],c[i]);
printf("\n");
}
}
}