SuperBao861 2022-03-30 10:58 采纳率: 100%
浏览 83
已结题

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;

}

  • 写回答

3条回答 默认 最新

  • 关注

    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;
    }
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 4月7日
  • 已采纳回答 3月30日
  • 创建了问题 3月30日

悬赏问题

  • ¥15 Android STD快速启动
  • ¥15 如何使用simulink建立一个永磁同步直线电机模型?
  • ¥30 天体光谱图的的绘制并得到星表
  • ¥15 PointNet++的onnx模型只能使用一次
  • ¥20 西南科技大学数字信号处理
  • ¥15 有两个非常“自以为是”烦人的问题急期待大家解决!
  • ¥30 STM32 INMP441无法读取数据
  • ¥15 R语言绘制密度图,一个密度曲线内fill不同颜色如何实现
  • ¥100 求汇川机器人IRCB300控制器和示教器同版本升级固件文件升级包
  • ¥15 用visualstudio2022创建vue项目后无法启动