黑马程序员技术交流社区

标题: 统计出现的字母及其出现的次数 [打印本页]

作者: hanmaoChen    时间: 2016-8-8 21:51
标题: 统计出现的字母及其出现的次数
写一段代码“统计出现的字母及其出现的次数”???

想了好久不知道怎么写好点,遍历统计的话那样是不是要分26类,另外还要一个与字母对应的整数来统计其出现的次数,
输出的时候如果统计的数为零的话,字母就不用输出。这样怎么写啊?

大神们,是时候伸出你援手了,传播爱的时候到了


作者: a946608523    时间: 2016-8-8 21:54
Happy Chinese valentine's day!   一般不会让你统计26个的,1个就够了,就看你会不会用方法,比如我这句话e出现的次数,请你用c和oc的方法分别来一次呀
作者: hanmaoChen    时间: 2016-8-8 22:17
a946608523 发表于 2016-8-8 21:54
Happy Chinese valentine's day!   一般不会让你统计26个的,1个就够了,就看你会不会用方法,比如我这句 ...

你有看那个人的题目吗,问的就是这个,可是他写的代码和题目有点不一样啊
作者: a2860608    时间: 2016-8-9 11:46
[C] 纯文本查看 复制代码
int main(int argc, const char * argv[])
{
//统计出现的字母及其出现的次数
    char* ABC = "AAAAHSTRSTEGDIWNAVZVSCXDEQRWYDPDOFIDNDMFJY";
   
    int item[26][2] = {0};
    //把这个数组批量赋值为英文字母对应的ASCⅡ的数字.65到90.
    for (int A = 0,B = 65; A < 26; A++,B++)
    {
        item[A][0] = B;
    }
   
    //这里开始判断.是否有对应的字母.如果对应,在相应的就加1.
    for (int i = 0; i < (int)strlen(ABC); i++)
    {
        //如果ABC[0]-对应是65,和item[0][0]-对应是65相等,那么就把item[0][1]加1.
        for (int j = 0; j < 26; j++)
        {
            if (ABC == item[j][0])
            {
                item[j][1]++;
            }
        }
        
    }
    //打印出来.
    for (int i = 0 ; i < 26; i++)
    {
        //左边打印的是英文字母,右边打印是出现过几次.
            printf("%c----%d\n",item[0],item[1]);
        
    }
   
    return 0;
}

作者: hanmaoChen    时间: 2016-8-9 15:28
a2860608 发表于 2016-8-9 11:46
[mw_shl_code=c,true]int main(int argc, const char * argv[])
{
//统计出现的字母及其出现的次数

不区分大小写的呢
作者: a2860608    时间: 2016-8-9 15:44
hanmaoChen 发表于 2016-8-9 15:28
不区分大小写的呢

那可以.那我干脆把ASCⅡ给你全部遍历.然后只打印出英文字母大小写.满足吗?.
[C] 纯文本查看 复制代码
    char* ch1 = "$%^&(*GDTFCGVHTREWS#56rtyfhgsq12345thjkl;]'[pl,.[iuyt5rf";
    int item[128] = {0};
    for (int i = 0; i < (int)strlen(ch1); i++)
    {
        item[ch1]++;
    }
    for (int i = 65; i < 128; i++) {
        if (i<=90)
        {
            printf("%c----%d\n",i,item);
        }
        if (i<=122 && i>=97)
        {
            printf("%c----%d\n",i,item);
        }
    }

作者: hanmaoChen    时间: 2016-8-9 15:58
a2860608 发表于 2016-8-9 15:44
那可以.那我干脆把ASCⅡ给你全部遍历.然后只打印出英文字母大小写.满足吗?.
[mw_shl_code=c,true]    cha ...

写的很好,非常感谢,刚才没有注意用词,不好意思。
作者: a2860608    时间: 2016-8-9 16:01
hanmaoChen 发表于 2016-8-9 15:58
写的很好,非常感谢,刚才没有注意用词,不好意思。

那么严肃干嘛.随意点拉~
作者: anan安    时间: 2016-8-12 00:16

    for (int i = 'a'; i <= 'z'; i++) {
        int count = 0;
        for (int j = 0; j<len1 ; j++) {
            if (i == arr[j]) {
                count ++;
            }
        }
        if (count != 0) {
            printf("%c-%d\t",i,count);
        }
    }
  觉得这个思路怎么样?
作者: hanmaoChen    时间: 2016-8-12 10:01

很6的说
作者: anan安    时间: 2016-8-12 23:01
xixi 内外层遍历换了一下
作者: anan安    时间: 2016-8-12 23:08
xixi 内外层遍历换了一下
作者: anan安    时间: 2016-8-12 23:11
xixi 内外层遍历换了一下
作者: 赵延达    时间: 2016-8-23 23:53
学习了。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2