题目:输入一串字符,统计字母、空格、数字、其他字符的个数
我本来编写的程序如下,但是遇到了问题,输入的字符串的第一个字符没有被计入,例如输入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') 也是输入字符串
您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!