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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 跳DJ的农民哥 中级黑马   /  2016-9-21 09:01  /  1936 人查看  /  6 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文


找出里面每个字符出现的次数.


//char* str = "&abcldotreABorpffr**^%#$@@@@#$&*( d a d c x z c z a q u o e  r p pv "

6 个回复

正序浏览
#include <stdio.h>
void test (char* str)
{
    //创建长度为“ASCII码表中的总的字符个数”数组,每个字符对应数组中的元素用来统计字符出现的次数
    char arr[128] ={0};
    while (*str != '\0')
    {
        if (str == NULL)
        {
            return;
        }
        
        arr[*str]++;
        str++;
    }
    for (int i = 0; i < 128; i++)
    {
        if (i != '0' && (arr[i] != 0))
            //if (arr[i] != '\0')
        {
            printf ("字符%c出现了%d次\n",i,arr[i]);
        }
    }
}

int main(int argc, const char * argv[]) {
   
   
    char* str = "&abcldotreABorpffr**^%#$@@@@#$&*(dadcxzczaquoerppv";
   
    test(str);
   
   
    return 0;
}
回复 使用道具 举报
邱中林 来自手机 中级黑马 2016-9-25 12:26:01
地板
创建一个长度为128的int类型数组,初始化0,遍历字符串,字符串对应的ASSCI码值的元素+1
回复 使用道具 举报
绕指柔荑 发表于 2016-9-21 11:01
是"a出现xx次  b出现xx次  c出现xx次  d出现xx次  e出现xx次......"这样?

void test(const char *str) {
   
    int a[128] = {0};
    while (*str) {
        a[*str++]++;
    }
    for (int i = 0; i < 128; i++) {
        if (a) {
            printf("%c : %d\n", i, a);
        }
    }
   
}
if 那里打错了
回复 使用道具 举报
是"a出现xx次  b出现xx次  c出现xx次  d出现xx次  e出现xx次......"这样?
回复 使用道具 举报
hbpiaoyi 发表于 2016-9-21 09:34
void chCount(const char *str) {
      int ch[128] = {0};
      while(*str) {

大兄弟,你这样写if那里的条件就永真了
回复 使用道具 举报
本帖最后由 hbpiaoyi 于 2016-9-25 09:38 编辑

void chCount(const char *str) {
      int ch[128] = {0};
      while(*str) {
            ch[*str++]++;
      }
      for(int i = 0; i < 128; i++) {
            if(ch)
                  printf("%c : %d\n", i, ch);
      }
}

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马