A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

写一段代码“统计出现的字母及其出现的次数”???

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

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

13 个回复

正序浏览
学习了。
回复 使用道具 举报
xixi 内外层遍历换了一下
回复 使用道具 举报
xixi 内外层遍历换了一下
回复 使用道具 举报
xixi 内外层遍历换了一下
回复 使用道具 举报

很6的说
回复 使用道具 举报

    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-9 15:58
写的很好,非常感谢,刚才没有注意用词,不好意思。

那么严肃干嘛.随意点拉~
回复 使用道具 举报
a2860608 发表于 2016-8-9 15:44
那可以.那我干脆把ASCⅡ给你全部遍历.然后只打印出英文字母大小写.满足吗?.
[mw_shl_code=c,true]    cha ...

写的很好,非常感谢,刚才没有注意用词,不好意思。
回复 使用道具 举报
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[i]]++;
    }
    for (int i = 65; i < 128; i++) {
        if (i<=90)
        {
            printf("%c----%d\n",i,item[i]);
        }
        if (i<=122 && i>=97)
        {
            printf("%c----%d\n",i,item[i]);
        }
    }
回复 使用道具 举报
a2860608 发表于 2016-8-9 11:46
[mw_shl_code=c,true]int main(int argc, const char * argv[])
{
//统计出现的字母及其出现的次数

不区分大小写的呢
回复 使用道具 举报
[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[i] == item[j][0])
            {
                item[j][1]++;
            }
        }
        
    }
    //打印出来.
    for (int i = 0 ; i < 26; i++)
    {
        //左边打印的是英文字母,右边打印是出现过几次.
            printf("%c----%d\n",item[i][0],item[i][1]);
        
    }
    
    return 0;
}
回复 使用道具 举报 1 0
a946608523 发表于 2016-8-8 21:54
Happy Chinese valentine's day!   一般不会让你统计26个的,1个就够了,就看你会不会用方法,比如我这句 ...

你有看那个人的题目吗,问的就是这个,可是他写的代码和题目有点不一样啊
回复 使用道具 举报
Happy Chinese valentine's day!   一般不会让你统计26个的,1个就够了,就看你会不会用方法,比如我这句话e出现的次数,请你用c和oc的方法分别来一次呀
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马