问题提出:
从键盘读入一段文本,统计其中的英文字母、数字、空格和除此之外的其他字符个数。
问题分析:
由于输入字符的个数不确定,需构建条件循环while((c=getchar())!=EOF),其中EOF为符号常量,用于表示文本输入结束,在PC机上通过输入Ctrl+Z组合键来输入此字符。所需数据与算法如下。
数据要求:
问题的输入:char c; /*获取从键盘上输入的字符*/
问题的输出:
unsigned int nChar; /*文本中英文字母的个数*/
unsigned int nNum; /*文本中数字的个数*/
unsigned int nBlank; /*文本中空格的个数*/
unsigned int nOther; /*文本中其他字符的个数*/
算法设计:
初始算法
1. 初始化变量nChar、nNum、nBlank、nOther为零
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++;
……
}
C语言程序代码如下:
#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