| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 329 人关注过本帖
标题:这个程序还有一点点小问题!请大虾帮忙解决一下。。。
取消只看楼主 加入收藏
fightingsss
Rank: 6Rank: 6
等 级:侠之大者
帖 子:97
专家分:471
注 册:2010-11-12
结帖率:80%
收藏
已结贴  问题点数:1 回复次数:2 
这个程序还有一点点小问题!请大虾帮忙解决一下。。。
#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;
}

相同频率的字符之间的排队会有一点点问题!请人帮忙解决。。。
2010-11-16 08:36
fightingsss
Rank: 6Rank: 6
等 级:侠之大者
帖 子:97
专家分:471
注 册:2010-11-12
收藏
得分:0 
如果输出的字母相同频率的想从小到大排列,那又应该怎么改呢?
2010-11-16 20:59
fightingsss
Rank: 6Rank: 6
等 级:侠之大者
帖 子:97
专家分:471
注 册:2010-11-12
收藏
得分:0 
好像
if (a[j]>a[t])

if ( a[j]>a[t] || (a[j] == a[t] && b[j] < b[t]) )
就可以了。。。
2010-11-16 22:06
快速回复:这个程序还有一点点小问题!请大虾帮忙解决一下。。。
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.036544 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved