思路是每次读入一个字符,来判断属于那种,在有自变量加1;
#include <stdio.h>
int main()
{
char e;
int a=0,b=0,c=0,d=0;
while((e=getchar())!='\n')//切记c=getchar()外用()括起来即(c=getchar())
{
if((e>='a'&&e<='z')||(c>='A'&&c<='Z'))//两个判断条件中间用“||”,外面括起来
a++;
else if(e>='0'&&e<='9')
b++;
else if(e==' ')
c++;
else
d++;
}
printf("英语%d\n数字%d\n空格%d\n其他%d\n",a,b,c,d);
}
结果
ea yh jERHAGETJ #$ %^^&** 461 ELRHU
英语5
数字3
空格8
其他21
第二种是将核心代码改为不用getchar用scanf的形式
#include <stdio.h>
int main()
{
char e=0;//这里最好初始化,万一里面装的就刚好是\n就不进入循环
int a=0,b=0,c=0,d=0;
for(;e='\n';)//无限循环到回车才跳出循环
{
scanf("%c",&e);
if((e>='a'&&e<='z')||(c>='A'&&c<='Z'))//两个判断条件中间用“||”,外面括起来
a++;
else if(e>='0'&&e<='9')
b++;
else if(e==' ')
c++;
else
d++;
}
printf("英语%d\n数字%d\n空格%d\n其他%d\n",a,b,c,d);
}
其中还可以选择不用if用问号表达式这里就不多做解释