设为首页 加入收藏

TOP

8.5.3 统计字符串中的字符
2013-10-12 09:23:07 来源: 作者: 【 】 浏览:128
Tags:8.5.3 统计 字符串 字符

8.5.3  统计字符串中的字符

本节将讲解一个统计字符串中的字符的例子。文本中的字符串,是由不同的大写字母、小写字母、标点符号等不同字符构成的。在程序中可以把文本存储在字符串中,然后分别统计出文本中的各种字符个数然后输出。为了识别这些字符,需要学习ASCII码。计算机中的所有字符,都是以ASCII码的形式保存在计算机中的。每一个ASCII码在内存中占据一个字节。ASCII码与相对应的序号如图8-2所示。

 
图8-2  ASCII码表

字符的ASCII码值与整型变量是等同的,这就很容易把字符与整型变量联系起来,通过序号的比较可以判断这些字符的种类。从图8-2可知,字符与序号的分布可以总结成下面的分段。

48~57:数字字符。

65~90:大写字母。

97~122:小写字母。

其他字符:特殊符号或标点符号。

要完成字符的统计,需要在程序中完成下面这些步骤。

定义一个字符数组,用来存储字符串。

定义相关的计数变量。变量要赋初值为0。

从键盘输入一个字符串,这一操作可以用scanf()函数实现。

用循环的方法,访问字符串中的每一个字符。

对每一个字符判断字符的类型,然后改变计数的值。

用printf()函数输出统计结果。

根据这些步骤,编写的程序代码如下所示。

【范例8-12】统计输入的字符,实例代码如下所示。

实例代码8-12

  1. 01  #include <stdio.h> 
  2. 02  int main()  
  3. 03  {  
  4. 04    char a[100];                          /*定义一个字符数组保存字符串。*/  
  5. 05    int i,uper,lower,marks,num;               /*定义计数的变量。*/  
  6. 06    i=0;                                  /*计数变量赋初值为0。*/  
  7. 07    uper=0;  
  8. 08    lower=0;  
  9. 09    marks=0;  
  10. 10    num=0;  
  11. 11    printf("please input a string:\n") ;      /*提示输入信息。*/  
  12. 12    scanf("%s",a);                            /*输入一个字符串。*/  
  13. 13    while(a[i]!=NULL)                     /*循环访问字符串中的第一个字符。*/  
  14. 14    {  
  15. 15     if(a[i]<=57&&a[i]>=48)                   /*判断是否是数字。*/  
  16. 16     {  
  17. 17        num++;                                /*是数字则数字计数加1。*/  
  18. 18     }  
  19. 19     else                                 /*其他的可能。*/  
  20. 20     {  
  21. 21        if(a[i]<=90&&a[i]>=65)                /*判断是否是大写字母。*/  
  22. 22        {  
  23. 23           uper++;                            /*是小写字母则大写字母的记数加1。*/  
  24. 24        }  
  25. 25        else                              /*其他的情况。*/  
  26. 26        {  
  27. 27           if(a[i]<=122&&a[i]>=97)                /*判断是否是小写字母。*/  
  28. 28           {  
  29. 29              lower++;                        /*是小写字母则小写字母的记数加1。*/  
  30. 30           }  
  31. 31           else  
  32. 32           {  
  33. 33              marks++;                        /*其他的情况一定是特殊字符加1。*/  
  34. 34           }  
  35. 35        }  
  36. 36     }  
  37. 37     i++;                                 /*字符总数加1,进行下一次循环。*/  
  38. 38    }  
  39. 39    printf("total chars: %d \n",i) ;          /*输出总字符数。*/  
  40. 40    printf("uper chars: %d \n",uper) ;        /*输出大写字符数。*/  
  41. 41    printf("lower chars: %d \n",lower) ;      /*输出小写字符数。*/  
  42. 42    printf("number chars: %d \n",num) ;       /*输出数字字符数。*/  
  43. 43    printf("other chars: %d \n",marks) ;      /*输出其他字符数。*/  
  44. 44    return 0;  
  45. 45  }  

【执行结果】输入下面的命令,编译这个程序。
  1. gcc 8.12.c 

输入下面的命令,运行这个程序。
  1. ./a.out 

程序提示输入一个字符串,这时输入下面的字符串,然后按"Enter"键。需要注意的是,字符串中不要有空格。
  1. asdfghJKLMNQWERT123789123;',./ASDJjhjad 

程序显示出的统计结果如下所示。
  1. total chars: 39  
  2. uper chars: 14  
  3. lower chars: 11  
  4. number chars: 9  
  5. other chars: 5  

【代码解析】代码第15行、第21行和第27行判断输入的字符类型,它们是利用字符在计算机内保存的是其ASCII值的特点来实现的。
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇8.2.1 指针的理解 下一篇4.9.3 字符串测试

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: