输入一个字符串,输出重新排序,要求,当字母出现次数相同时,按照字

输入一个字符串,输出重新排序,要求,当字母出现次数相同时,按照字母表排序,当字母出现次数不同时,出现次数高的放到后面!如输入aatreddsa输出为erstddaaa

#include "stdio.h"

#include "conio.h"

void main()

{

 int a[256],i,j,k,max;

 char str[256],*p;

 while ( 1 )

 { for ( i=0;i<256;i++ ) a[i]=0;

   printf("请输入字符串:"); gets(str); if ( str[0]=='0' ) break;

   p=str;

   while ( *p )

   { if ( (((*p)>='a')&&((*p)<='z'))||(((*p)>='A')&&((*p)<='Z')) ) a[(*p)]++;

     p++;

   }

   for ( i=max=0;i<256;i++ ) if ( max<a[i] ) max=a[i];

   for ( i=1;i<=max;i++ )

     for ( j=0;j<256;j++ )

       if ( a[j]==i )

         for ( k=0;k<i;k++ )

           printf("%c",j);

   printf("\n");

 }

MEND: printf("\n"); system("pause");

}

温馨提示:答案为网友推荐,仅供参考
第1个回答  2016-07-19
#include <stdio.h>
#include <string.h>
int main()
{
char fu[5][100];
char *p[5],*p2;
int i,k;
for(i=0;i<5;i++)
{
scanf("%s",fu[i]);
p[i]=fu[i];
}
for(i=0;i<4;i++)
{
for(k=i+1;k<5;k++)
{
if(strcmp(p[i],p[k])==1)
{
p2=p[i];
p[i]=p[k];
p[k]=p2;
}
}
}
for(i=0;i<5;i++)
printf("%s\n",p[i]);
return 0;
}
相似回答