问题  从键盘读入一段文本,统计其中的英文字母、数字、空格和除此之外的其他字符个数。
分析  能够删除字符串中空格的函数是由于输入字符的个数不确定,需构建条件循环while((c=getchar())!=EOF),其中EOF为符号常量,用于表示文本输入结束,在PC机上通过输入Ctrl+Z组合键来输入此字符。所需数据与算法如下。
数据要求
    问题的输入:
    char c;                    /*获取从键盘上输入的字符*/
    问题的输出:
unsigned int nChar;            /*文本中英文字母的个数*/
unsigned int nNum;            /*文本中数字的个数*/
unsigned int nBlank;            /*文本中空格的个数*/
unsigned int nOther;            /*文本中其他字符的个数*/
设计  初始算法
1. 初始化变量nCharnNumnBlanknOther为零
2. 从键盘输入文本,直到输入特殊的字符结束
3. 对文本中每一个字符,做循环判断并计数。
算法细化
1. unsigned int nChar=0,nNum=0,nBlank=0,nOther=0;
2. 循环统计从键盘输入的英文字母个数,算法如下:
while((c=getchar())!=EOF)
{
        if((c>='a')&&(c<='z')||(c>='A')&&(c<='Z'))
        nChar++;
……
流程图
实现  程序代码如下:
#include "stdio.h"
void main()
{
unsigned int nChar=0,nNum=0,nBlank=0,nOther=0;
char c;
while((c=getchar())!=EOF)
{
if((c>='a')&&(c<='z')||(c>='A')&&(c<='Z'))
          nChar++;
else
    {
          if((c>='0')&&(c<='9'))
              nNum++;
          else
          {
              if(c==' ')
                  nBlank++;
              else
                  nOther++;
          }
    }
}
printf("Char=%d\tNum=%d\tBlank=%d\tOther=%d",nChar,nNum,nBlank,nOther);
}
运行结果
输入  #define PI 3.14^Z
输出  Char=8    Num=3    Blank=2    Other=2

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。