调用 getchar()函数,将从键盘输人的数据暂存到键盘缓冲区,直到输入结束(遇到'$'字符)后,将缓冲区中的数据一起输人到计算机中。利用while循环对每个字符进行判断和统计,直到遇到'$'字符为止。
int main()
{
char c;
int num = 0,n = 0,blank = 0,rest = 0;
while ((c = getchar()) != '$')
{
if (c >= 48 && c <= 57)
{
num++;
}
else if (c >= 'a' && c <= 'z'|| c >= 'A' && c <= 'Z')
{
n++;
}
else if (c == ' ')
{
blank++;
}
else
{
rest++;
}
}
printf("字母的个数是%d\n", n);
printf("数字的个数是%d\n", num);
printf("空格的个数是%d\n", blank);
printf("其他字符的个数是%d\n", rest);
return 0;
}
不过上面代码我们需要注意的是 循环后面括号里的条件表达式我们需要给 c = getchar() 加上括号
否则 getchar() 中的字符不会输入到变量 c 中运行结果如下:
这两段代码效果一样:
由于并没有赋值给 C所以C中储存的内容是随机的。
而正确的运行结果应该是下面这样的:
当然换行也是算作随机字符的:
除此之外我们还可以用 scanf 来实现:
int main()
{
char c = 'a';
int num = 0, n = 0, blank = 0, rest = 0;
while (1)
{
scanf("%c", &c);
if (c >= '0' && c <= '9')
{
num++;
}
else if (c >= 'a' && c <= 'z' || c >= 'A' && c <= 'Z')
{
n++;
}
else if (c == ' ')
{
blank++;
}
else
{
rest++;
}
if (c == '$')
{
rest--;
break;
}
}
printf("字母的个数是%d\n", n);
printf("数字的个数是%d\n", num);
printf("空格的个数是%d\n", blank);
printf("其他字符的个数是%d\n", rest);
return 0;
}
运行结果如下: