黑马程序员技术交流社区

标题: 关于统计字符串中字母出现的次数并按降序排序 [打印本页]

作者: 4B青年    时间: 2015-7-2 23:28
标题: 关于统计字符串中字母出现的次数并按降序排序
本帖最后由 4B青年 于 2015-7-2 23:30 编辑

  1. #include <stdio.h>
  2. #include <string.h>
  3. int main(int argc, const char * argv[]) {
  4.     //定义一个数组用来存放输入的字符串
  5.     char array[100];
  6.     //提示用户输入一个字符串
  7.     printf("请输入一个字符串:\n");
  8.     //接收用户输入的字符串
  9.     scanf("%s",array);
  10.     //定义四个变量用来存放ABCD出现的次数
  11.     int a=0,b=0,c=0,d=0;
  12.     //定义变量存放字符串的长度
  13.   unsigned long len=strlen(array);
  14.     //通过for循环遍历数组元素
  15.     for (int i=0;i<len;i++){
  16.         //统计A出现的次数
  17.         if(array[i]=='A'){
  18.             a++;
  19.         }
  20.         //统计B出现的次数
  21.         else if(array[i]=='B'){
  22.             b++;
  23.         }
  24.         //统计C出现的次数
  25.         else if(array[i]=='C'){
  26.             c++;
  27.         }
  28.         //统计D出现的次数
  29.         else if(array[i]=='D'){
  30.             d++;
  31.         }
  32.     }
  33.     //定义一个数组Num用来存放ABCD出现的次数
  34.     int Num[4]={a,b,c,d};
  35.     //定义变量用于临时存放数组元素
  36.     int temp;
  37.     //冒泡排序法
  38.     for(int i=0;i<3;i++){
  39.         for(int j=0;j<3;j++)
  40.         {
  41.             if(Num[j]<Num[j+1]){
  42.                 //当前一个数组元素小于后一个数组元素时,交换它们的位置
  43.                 temp=Num[j];
  44.                 Num[j]=Num[j+1];
  45.                 Num[j+1]=temp;
  46.             }
  47.         }
  48.     }
  49.     //定义一个数组mark用来存放ABCD标志
  50.     char mark[4];
  51.     //将数组Num与数组mark的出现次数和标志一一对应
  52.     for(int i=0;i<4;i++){
  53.         //如果出现a次,则mark[i]='A'
  54.         if(Num[i]==a && mark[0]!='A' && mark[1]!='A' && mark[2]!='A' && mark[3]!='A'){
  55.             mark[i]='A';
  56.         }
  57.         //如果出现b次,则mark[i]='B'
  58.         else if(Num[i]==b && mark[0]!='B' && mark[1]!='B' && mark[2]!='B' && mark[3]!='B'){
  59.             mark[i]='B';
  60.         }
  61.         //如果出现c次,则mark[i]='C'
  62.         else if(Num[i]==c && mark[0]!='C' && mark[1]!='C' && mark[2]!='C' && mark[3]!='C'){
  63.             mark[i]='C';
  64.         }
  65.         //如果出现d次,则mark[i]='D'
  66.         else
  67.         {
  68.             mark[i]='D';
  69.         }
  70.     }
  71.     //降序打印输出每个字母出现的次数
  72.     for(int i=0;i<4;i++)
  73.         printf("%c出现%d次\n",mark[i],Num[i]);
  74.     return 0;
  75. }
复制代码

作者: 4B青年    时间: 2015-7-2 23:32
有人知道第14行代码为什么用unsigned long定义类型吗?




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