c语言程序:
#include<stdio.h>
#include<string.h>
#include<assert.h>
int shuchuzifu(int count[],int j)
{
int k,d=0;
for(k=0;k<26;k++)
{
if(count[k]==j)
{
printf("%c",(char)(k+97));
d=1;
}
}
if(d)
return 1;
else
return 0;
}
int main()
{
char *a="wo cheng gong le jin tian shangwu mei you bai lai";
int count[26];
int max=0,flag1,flag2=0;
int i=0,j,n,p;
int len,m=0;
len=strlen(a);
for(n=0;n<26;n++)//不给count[26]复初值,会出现很多统计数据之类的错误
{
count[n]=0;
}
printf("字符串长度为:%d\n",len);
assert(a);
while(a[i])//在此处用i++的话,l=++count[a[i]-97]里的i没有表达出0的意思。
{
max=(++count[a[i]-97])>max?count[a[i]-97]:max;//重点 这么一句话可等于下面n句
// if(a[i]!=(char)32)//一定要考虑空格的特殊情况
// {
// m=++count[a[i]-97];
// if(m>max)
//{
// max=m;
//}
flag1=1;
//}
i++;
}
printf("最大重复个数为:%d个\n",max);
for(j=1;j<max+1;j++)
{
p=shuchuzifu(count,j);
if(p)
printf(":%d个\n",j);
}
if(flag2)
{
printf("No matching\n");
}
return 0;
}
执行结果: