黑马程序员技术交流社区

标题: 从键盘输入一大堆字符串,统计A、B、C、D的出现次数,... [打印本页]

作者: baihe0813    时间: 2015-1-17 22:45
标题: 从键盘输入一大堆字符串,统计A、B、C、D的出现次数,...
  1. char str[1024];
  2.         gets(str);
  3.         
  4.         int i = 0;
  5.         int countA = 0;
  6.         int countB = 0;
  7.         int countC = 0;
  8.         int countD = 0;
  9.         //计算ABCD出现的个数
  10.         while (str[i] != '\0') {
  11.             
  12.             if(str[i] == 'A')
  13.             {
  14.                 countA++;
  15.             }
  16.             else if(str[i] == 'B')
  17.             {
  18.                 countB++;
  19.             }
  20.             else if(str[i] == 'C')
  21.             {
  22.                 countC++;
  23.             }
  24.             else if(str[i] == 'D')
  25.             {
  26.                 countD++;
  27.             }
  28.             
  29.             i++;
  30.         }
  31.         
  32.         printf("%i, %i, %i, %i\n", countA, countB, countC, countD);
  33.         
  34.         //分别将字母和次数放到数组中,他们的关系是对应的。并且再排序的时候他们的位置都是要变得。
  35.         int count[4] = {countA, countB, countC, countD};
  36.         char cc[4] = {'A', 'B', 'C', 'D'};
  37.         for(int i = 0; i<3; i++)
  38.         {
  39.             if(count[i] < count[i+1])
  40.             {
  41.                 int temp = count[i];
  42.                 count[i] = count[i + 1];
  43.                 count[i + 1] = temp;
  44.                
  45.                 char tempC = cc[i];
  46.                 cc[i] = cc[i + 1];
  47.                 cc[i + 1] = tempC;
  48.             }
  49.         }
  50.         
  51.         for(int i = 0; i<4; i++)
  52.         {
  53.             printf("%c : %i\n", cc[i], count[i]);
  54.         }
  55.   
复制代码



作者: missyoyo    时间: 2015-1-17 22:49
不行的,像这样做为何不用switch,switch效率高,如果是统计A到Z呢?不可能定义26个变量吧?
正确的做法应该是定义一个TreeMap集合,键是A-Z,值是出现的次数,如果集合中没有出现过键,则map.put(字母,1).如果出现过则值++;再put
作者: baihe0813    时间: 2015-1-17 22:52
我也是觉得我这样的方法麻烦了,但是不太明白那个TreeMap集合,一会上网查查。。
作者: missyoyo    时间: 2015-1-17 22:53
IOS?进错了,我按照JAVA的思路来解了,楼主可以不看我的解答
作者: baihe0813    时间: 2015-1-17 22:57
missyoyo 发表于 2015-1-17 22:53
IOS?进错了,我按照JAVA的思路来解了,楼主可以不看我的解答

感觉iOS中肯定也是有类似的思路
作者: arui12580    时间: 2015-1-18 23:23
为毛不用结构体




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