C语言,输入一串字符判断字符个数

题目:输入一串字符,统计字母、空格、数字、其他字符的个数
我本来编写的程序如下,但是遇到了问题,输入的字符串的第一个字符没有被计入,例如输入111www后数字只记为2,输入www111小写字母记为2。

#include
using namespace std;
int main(){
printf("请输入一串字符:");
char a;
int b=0, c=0, d=0, e=0;
cin>>a;

    while((a=getchar())!='\n')    
{
if(a>='a' && a<='z')       {b++;}
else if (a==' ')           {c++;}
else if (a>='0' && a<='9') {d++;}
else{e++;}
}
cout<<"小写字母:"<<b<<"空格:"<<c<<"数字:"<<d<<"其他字符:"<<e;
return 0;

}

然后参考了同学的,更改了一下成了这样,刚刚说的bug就没了,有没有人能告诉我这是怎么回事
#include<stdio.h>
using namespace std;
int main(){
printf("请输入一串字符:");
char a;
int b=0, c=0, d=0, e=0;

while((a=getchar())!='\n')    
{
if(a>='a' && a<='z')       {b++;}
else if (a==' ')           {c++;}
else if (a>='0' && a<='9') {d++;}
else{e++;}
}
printf("字母=%d 空格=%d 数字=%d 其他=%d",b,c,d,e); 
return 0;

}

while循环之前有一个cin>>a,在while循环中 a=getchar()会覆盖掉cin读取的a
你的代码改成下面的就可以了

#include <iostream>
using namespace std;
int main() {
    printf("请输入一串字符:");
    char a;
    int b = 0, c = 0, d = 0, e = 0;
    cin >> a;

    while ( a!= '\n')
    {
        if (a >= 'a' && a <= 'z') { b++; }
        else if (a == ' ') { c++; }
        else if (a >= '0' && a <= '9') { d++; }
        else { e++; }
        a = getchar();
    }
    cout << "小写字母:" << b << "空格:" << c << "数字:" << d << "其他字符:" << e;
    return 0;
}

cin >>a是输入字符串。while((a=getchar())!='\n') 也是输入字符串

您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!
PS:问答VIP年卡 【限时加赠:IT技术图书免费领】,了解详情>>> https://vip.csdn.net/askvip?utm_source=1146287632