| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 879 人关注过本帖
标题:统计一段字符串中各字母出现的次数并按次数排序?
只看楼主 加入收藏
benfifi
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2012-3-19
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:3 
统计一段字符串中各字母出现的次数并按次数排序?
#include<stdio.h>
#include<string.h>
#define N 200
char switchit(char *str)
{
    int i;
    for(i=0;i<strlen(str);i++)
    {
        if((str[i]>='A')&&(str[i]<='Z'))
        str[i]+=32;
        return(*str);
    }
}
int frequency(char *str)
{
    int i,num[26]={0};
    for(i=0;i<strlen(str);i++)
    {
        if(str[i]>='a'&&str[i]<='z')
        num[str[i]-97]++;
    }
    return(num)
}
char rank(char *str)
{
    int i,j,num[26]={0};
    char t;
    for(j=0;j<strlen(str);j++)
        for(i=0;i<strlen(str)-j;i++)
        if(num[i]<num[i+1])
        {
            t=num[i];
            num[i]=num[i+1];
            num[i+1]=t;
        }
            return(*str);
}
int main()
{
    char s[N];
    int i,num[26]={0};
    printf("Input a string:\n");
    gets(s);
    switchit(s);
    frequency(s);
    rank(s);
    for(i=0;i<26;i++)
   
   
}

写到这儿写不下去了,必须用三个函数(转化大小写字母,统计各字母出现次数,按次数多少排序)。
求大神赐教!!!
搜索更多相关主题的帖子: 字符串 return frequency 统计 include 
2012-09-06 20:56
g270615179
Rank: 2
等 级:论坛游民
帖 子:32
专家分:63
注 册:2012-3-2
收藏
得分:0 
你写的我函数都是有问题的额
2012-09-06 21:31
g270615179
Rank: 2
等 级:论坛游民
帖 子:32
专家分:63
注 册:2012-3-2
收藏
得分:20 
程序代码:
#include<stdio.h>
#include<string.h>
#include<string.h>
#define N 200
void del(char str[],char c)
{
     int i,n=0;
     char s[N];
     for(i=0;str[i]!=0;i++)
     {
      if(str[i]!=c)
        s[n++]=str[i];
     }
     s[n]=0;
     strcpy(str,s);
}
void shan(char str[])
{
     int i;
     for(i=0;str[i]!=0;i++)
        del(&str[i+1],str[i]);
}
void switchit(char *str)
{
    int i;
    for(i=0;str[i]!=0;i++)
    {
        if((str[i]>='A')&&(str[i]<='Z'))
        str[i]+=32;
    }
}
void frequency(char *str, int num[26])
{
    int i;
    for(i=0;i<26;i++)
       num[i]=0;
    for(i=0;i<strlen(str);i++)
    {
        if(str[i]>='a'&&str[i]<='z')
          num[str[i]-97]++;
    }
    //for(i=0;i<26;i++)
    //   printf("%d  ",num[i]);
   
}
void rank(char *str,int num[26])
{
    int i,j;
    char t;
    //switchit(str);
    frequency(str,num);
   // printf("\n");
    //for(i=0;i<26;i++)
    //   printf("%d  ",num[i]);
    shan(str);
    //printf("\n");
    //puts(str);
    for(j=0;j<strlen(str);j++)
        for(i=0;i<strlen(str)-j-1;i++)
        if(num[str[i]-97]<num[str[i+1]-97])
        {
            t=str[i];
            str[i]=str[i+1];
            str[i+1]=t;
        }
    //puts(str);
   
}
int main()
{
    char s[N];
    int i,num[26]={0};
    printf("Input a string:\n");
    gets(s);
    switchit(s);
    rank(s,num);
    puts(s);
    for(i=0;s[i]!=0;i++)
    {
     printf("%c:%d\n",s[i],num[s[i]-97]);
    }
    system("pause");
    return 0;
}
这是我根据你的程序改的。。
2012-09-07 07:17
g270615179
Rank: 2
等 级:论坛游民
帖 子:32
专家分:63
注 册:2012-3-2
收藏
得分:0 
前两个是删除重复出现的字符
2012-09-20 07:09
快速回复:统计一段字符串中各字母出现的次数并按次数排序?
数据加载中...
 
   



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

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