首先,让我们看一下题:
输入一行字符,分别统计出其中英文字母、空格、数字和其他字符的个数。
先对每一个计数的值初始化,并且用getchar输入这个字符串:
#include<stdio.h>
int main()
{
char a;
int letter=0, space=0, digit=0, others=0;
printf("请输入一串字符串:");
a = getchar();
为啥不用scanf函数呢?
这是因为scanf函数不可以接收空格,而getchar可以接收空格。这里我们要计空格的数量,所以用getchar函数。
接下来进入循环,当字符串中没有换行则进入循环:
while(a!='\n') //字符串中没有回车则就进入循环
{
if ((a >= 'a' && a <= 'z') || (a >= 'A' && a <= 'Z')) //当是字母时,则给字母加一
letter++;
else if (a >= '0' && a <= '9') //当是数字时,则给数字加一
digit++;
else if (a ==' ') //当是空格时,则给空格加一
space++;
else 当是其他时,则给其他加一
others++;
a= getchar();
}
完整代码如下:
#include<stdio.h>
int main()
{
char a;
int letter=0, space=0, digit=0, others=0; //将所有量初始化
printf("请输入一串字符串:");
a = getchar();
while(a!='\n') //字符串中没有回车则就进入循环
{
if ((a >= 'a' && a <= 'z') || (a >= 'A' && a <= 'Z')) //当是字母时,则给字母加一
letter++;
else if (a >= '0' && a <= '9') //当是数字时,则给数字加一
digit++;
else if (a ==' ') //当是空格时,则给空格加一
space++;
else 当是其他时,则给其他加一
others++;
a= getchar();
}
printf("字母的个数为%d\n空格的个数为%d\n数字的个数为%d\n其他的个数为%d\n", letter, space, digit, others);
return 0;
}
最后输出结果为: