Bootstrap

C语言 统计字符串中英文,数字,空格,其他的几种写法

思路是每次读入一个字符,来判断属于那种,在有自变量加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用问号表达式这里就不多做解释

;