这是一个C语言 while 循环示例:输入一串以?为结束标志的字符,统计其中字母和数字的个数。
输入:从键盘输入一个以?结尾的字符串。
输出:两个整数(分别表示字母和数字的个数)。
这是一个计数问题:重复读入字符,根据字符的类型(字母还是数字),进行个数统计。但是,并不知道输入了多少个字符,只知道输入的字符串中最后一个字符是?。因此,可以使用 while 语句,当读入的字符是?时结束循环,否则判断读入的字符是字母还是数字,并累加计数。
那么,如何判断一个字符是字母还是数字呢?
计算机中所有的字符都是以数字的形式存在的,每一个字符都有一个数字与其对应(参见表 ASCII 标准字符代码表)。因此,一个字符变量“ch”的值是字母还是数字,可以用下面的条件表达式进行判断:
字母:((ch >= 'a') && (ch <= 'z')) || ((ch >= 'A') && (ch <= 'Z')) 数字:(ch >= '0') && (ch <= '9')
1) 定义字符型变量 ch 用来存放一个字符;
2) 定义整型变量 Letter 和 Digit,作为计数器,分别存放字母和数字的个数,并初始化为 0;
3) 当 ch 不是“?”时,重复执行:
若 ch 是字母,则字母个数 Letter 加 1;
若 ch 是数字,则数字个数 Digit 加 1;
读入一个新字符给 ch;
4) 输出 Letter 和 Digit;
5) 结束。
代码清单 1:输入一串以?为结束标志的字符,统计其中字母和数字的个数
#include <stdio.h>
#include <stdlib.h>
int main( )
{
char ch;
int Letter = 0,Digit = 0;
printf("输入一串‘?’结尾的字符:");
ch = getchar( ); //循环外读入第一个字符
while(ch != '?')
{
if(((ch >= 'a') && (ch <= 'z')) || ((ch >= 'A') && (ch <= 'Z')))
Letter++; //字母的个数加 1
else if((ch >= '0') && (ch <= '9'))
Digit++; //数字的个数加 1
ch = getchar( ); //继续读入下一个字符
}
printf("其中字母的个数是:%d\n",Letter);
printf("其中数字的个数是:%d\n",Digit);
system("pause");
return 0;
}
运行结果:
输入一串‘?’结尾的字符:321Are you ready?
其中字母的个数是:11
其中数字的个数是:3