| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 782 人关注过本帖
标题:如何才可以编出这样一个程序?
只看楼主 加入收藏
fightingsss
Rank: 6Rank: 6
等 级:侠之大者
帖 子:97
专家分:471
注 册:2010-11-12
结帖率:80%
收藏
已结贴  问题点数:1 回复次数:8 
如何才可以编出这样一个程序?
如何才可以编出这样一种程序。给定任意数目的如edbciuahbvufaenvuore的字母组,要求输出如d9,u5等结果,就是把每个字母的频率按照先后顺序打出来,如果两个字母的频率相同,就按照字母表上的先后顺序打出。。。多谢了。。。
搜索更多相关主题的帖子: 字母表 
2010-11-13 23:30
outsider_scu
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:3
帖 子:430
专家分:1333
注 册:2010-10-21
收藏
得分:1 
程序代码:
/*设字符串是由26个英文字母构成,试编写一个算法,统计每个字母出现的频度*/
#include <stdio.h>
void count(char *s)
{
    int a[26]={0};
    int i;
    for(i=0;s[i];i++)
    if(s[i]>='A'&&s[i]<='Z')  a[s[i]-'A']++;
    else if(s[i]>='a'&&s[i]<='z') a[s[i]-'a']++;
    for(i=0;i<26;i++)
    printf("  %c  出现的次数为   %d\n",i+'A',a[i]);
}
void main()
{
    int s[80];
    gets(s);
    count(s);
}

编程的道路上何其孤独!
2010-11-13 23:43
vandychan
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15
等 级:贵宾
威 望:18
帖 子:2296
专家分:6418
注 册:2010-8-20
收藏
得分:0 
这.......

到底是“出来混迟早要还”还是“杀人放火金腰带”?
2010-11-13 23:51
fightingsss
Rank: 6Rank: 6
等 级:侠之大者
帖 子:97
专家分:471
注 册:2010-11-12
收藏
得分:0 
我觉得剩下的一些东西,比如说频率为0的不用打出来,还有排序之类的东西,我想应该还是比较简单的额!我来搞定他们。。。
2010-11-14 14:09
tduslost
Rank: 2
等 级:论坛游民
帖 子:19
专家分:26
注 册:2010-11-13
收藏
得分:0 
怎么给?从文件中读?还是你自己敲?
2010-11-14 18:56
fightingsss
Rank: 6Rank: 6
等 级:侠之大者
帖 子:97
专家分:471
注 册:2010-11-12
收藏
得分:0 
这些东西我自己去敲,我觉得应该不会很难得。。。
2010-11-15 12:30
wentaiyou
Rank: 2
等 级:论坛游民
帖 子:68
专家分:17
注 册:2004-12-3
收藏
得分:0 
#include <stdio.h>
#include <string.h>
#define N 100


int my_fun(char *s, int len){
    int i, j;
    int t;
    int my_table[52][2] = {0};
    for(i = 0; i < 52; i++)
        my_table[i][1] = i;
        
    for(i = 0; i < len; i++){
        t = *(s+i);
        if(t >= 'a'  && t <= 'z')
            my_table[t - 'a'][0]++;
        else if(t >= 'A'  && t <= 'Z')
            my_table[26 + t - 'A'][0]++;
        else
            printf("Not a char %d\n",t);
    }

    for(i = 0; i < 52; i++)
        for(j = i; j < 52; j++)
            if(my_table[j][0] > my_table[i][0]){
                t = my_table[i][0];
                my_table[i][0] = my_table[j][0];
                my_table[j][0] = t;
               
                t = my_table[i][1];
                my_table[i][1] = my_table[j][1];
                my_table[j][1] = t;
            }

    for(i = 0; i < 52; i++){
        if(my_table[i][0] == 0)
            break;
            
        if(my_table[i][1] >= 26)
            printf("%c -> %d\n",(my_table[i][1] - 26 + 'A'), my_table[i][0]);
        else
            printf("%c -> %d\n",(my_table[i][1] + 'a'), my_table[i][0]);
    }
}

int main(){
    int i;
    char str[N];
    printf("Please input a strings:\n");
    gets(str);
    if((i = strlen(str)) >= N)
        printf("Strings is too long! %d\n",i);
    else
        my_fun(str,i);
}

假如回到过去.我能做些什么? 还是和现在这样有时间没事情?
2010-11-15 15:17
fightingsss
Rank: 6Rank: 6
等 级:侠之大者
帖 子:97
专家分:471
注 册:2010-11-12
收藏
得分:0 
利用2维数组,是个不错的想法!!!
2010-11-15 17:32
dd576503061
Rank: 1
来 自:西安
等 级:新手上路
帖 子:7
专家分:3
注 册:2010-9-17
收藏
得分:0 
楼上正解~
2010-11-18 20:28
快速回复:如何才可以编出这样一个程序?
数据加载中...
 
   



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

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