这个程序还有一点点小问题!请大虾帮忙解决一下。。。
#include <stdio.h>#include <stdlib.h>
#include <string.h>
void Swap(int *x,int *y)/*自定义可以相互交换整型数的函数*/
{
int temp;
temp= *x;
*x= *y;
*y=temp;
}
void Exchange(char *p1, char *p2)/*自定义可以相互交换字符的函数*/
{
char p = *p1;
*p1 = *p2;
*p2 = p;
}
int main()
{
int a[26]={0};
char b[26];
int A;
char str[1000];
int k,i,j,t,h;
gets(str);/*给定一个字符串*/
A=strlen(str);/*计算字符串的长度*/
for (h=0;h<=25;h++)
b[h]=h+'a';
for (k=0;k<=A;k++)
if ('a'<=(char)(str[k])&&(char)(str[k])<='z')
a[(char)(str[k])-'a']++;/*计算每个字符出现的频率*/
for (i=0;i<25;i++)
{
t=i;
for (j=i+1;j<26;j++)
{
if (a[j]>a[t])
{
Swap(&a[t],&a[j]);
Exchange(&b[t],&b[j]);
}
}
}
for (i=0;i<26;i++)
if (a[i]!=0)
printf("%c %d\n",b[i],a[i]);
return 0;
}
相同频率的字符之间的排队会有一点点问题!请人帮忙解决。。。