黑马程序员技术交流社区

标题: 计算字符串中每种字符出现的次数。“Welcome to Chinaworld”... [打印本页]

作者: haojuncong    时间: 2015-1-18 12:23
标题: 计算字符串中每种字符出现的次数。“Welcome to Chinaworld”...
花了一个小时终于做出来了
当要计算空格得字数得时候:代码如下
  1. int main()
  2. {
  3.     char str[] = "Welcome to Chinaworld";
  4.     int a[50] ; //用于标记字母
  5.     for (int i = 0; i < strlen(str); i++)
  6.     {
  7.         a[i] = 1; //初始化,所有的标记都为1
  8.     }

  9.     for(int i = 0;i < strlen(str);i++)
  10.     {
  11.         int count = 1;
  12.         if (a[i] == 1)
  13.         {
  14.          for (int j = i+1; j < strlen(str); j++)
  15.                 {
  16.                     if ((str[j] >= 'A' && str[j] <= 'Z')||(str[j] >= 'a' && str[j] <= 'z'))
  17.                     {
  18.                         if ((str[i] == str[j])||(str[i] == (str[j]-32))||(str[i] == (str[j]+32)))
  19.                         {
  20.                             a[j] = 0; //当被计算,归0
  21.                             count++;
  22.                         }
  23.                     }else
  24.                     {
  25.                         if (str[i] == str[j])
  26.                         {
  27.                             a[j] = 0; //当被计算,归0
  28.                             count++;
  29.                         }
  30.                     }
  31.             }
  32.             
  33.             printf("%c-%d\n ",str[i],count);
  34.    
  35.        }
  36.     }
  37.   
  38.     return 0;
  39. }
复制代码

当只需要计算字母的个数的时候,只需要多加一个字母的判断
  1. int main()
  2. {
  3.     char str[] = "Welcome to Chinaworld";
  4.     int a[50] ; //用于标记字母
  5.     for (int i = 0; i < strlen(str); i++)
  6.     {
  7.         a[i] = 1; //初始化,所有的标记都为1
  8.     }

  9.     for(int i = 0;i < strlen(str);i++)
  10.     {
  11.         int count = 1;
  12.         if (((str[i] >= 'A' && str[i] <= 'Z')||(str[i] >= 'a' && str[i] <= 'z'))&&(a[i] == 1))
  13.         {
  14.             if ((str[i] >= 'A' && str[i] <= 'Z')||(str[i] >= 'a' && str[i] <= 'z'))
  15.             {
  16.                 for (int j = i+1; j < strlen(str); j++)
  17.                 {
  18.                     if ((str[j] >= 'A' && str[j] <= 'Z')||(str[j] >= 'a' && str[j] <= 'z'))
  19.                     {
  20.                         if ((str[i] == str[j])||(str[i] == (str[j]-32))||(str[i] == (str[j]+32)))
  21.                         {
  22.                             a[j] = 0; //当被计算,归0
  23.                             count++;
  24.                            
  25.                         }
  26.                     }
  27.                     
  28.                 }
  29.             }
  30.             
  31.             printf("%c-%d\n ",str[i],count);
  32.    
  33.        }
  34.     }
  35.   
  36.     return 0;
  37. }
复制代码




作者: 爱在西元前    时间: 2015-1-18 12:38
:lol 加油加油 ----我要一步一步往上爬~
作者: woaiwomama    时间: 2015-1-18 12:42
不懂啊.......
作者: 浅唱丶iii    时间: 2015-2-28 14:33
加油加油 ----
作者: keeganlee    时间: 2015-2-28 14:53
写的挺好的 ,我觉得用结构体数组来做应该更简单,有空你可以写一下试试




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