黑马程序员技术交流社区

标题: C语言题目求指教 [打印本页]

作者: 跳DJ的农民哥    时间: 2016-9-21 09:01
标题: C语言题目求指教

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


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

作者: hbpiaoyi    时间: 2016-9-21 09:34
本帖最后由 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);
      }
}


作者: 绕指柔荑    时间: 2016-9-21 10:59
hbpiaoyi 发表于 2016-9-21 09:34
void chCount(const char *str) {
      int ch[128] = {0};
      while(*str) {

大兄弟,你这样写if那里的条件就永真了
作者: 绕指柔荑    时间: 2016-9-21 11:01
是"a出现xx次  b出现xx次  c出现xx次  d出现xx次  e出现xx次......"这样?
作者: hbpiaoyi    时间: 2016-9-25 09:51
绕指柔荑 发表于 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 那里打错了
作者: 邱中林    时间: 2016-9-25 12:26
创建一个长度为128的int类型数组,初始化0,遍历字符串,字符串对应的ASSCI码值的元素+1
作者: 朱儿008    时间: 2016-9-26 00:07
#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;
}





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