MrX735 2021-12-03 12:23 采纳率: 100%
浏览 14
已结题

为什么这代码统计出来的个数不对?望有人能解答



```c


#include<stdio.h>
int main()
{
    char str[3][80];
    int i,j,t;
    int a=0;//大写
    int b=0;//小写
    int Number=0;//数字
    int Space=0;//空格
    int Other=0;//其它
    printf("请输入三行字符,每行80个\n");
    for(i=1;i<=3;i++)
    {
        printf("请输入第%d行字符:",i);
        gets(str[i]);
    }
    for(i=1;i<=3;i++)
    {
        for(j=1;(t=str[i][j])!='\0';j++)
        {
        if(t>='A'&&t<='Z')
        {
            a++;//大写
        }
        else if(t>='a'&&t<='z')
        {
            b++;//小写
        }
        else if(t>='0'&&t<='9')
        {
            Number++;
        }
        else if(t==32)
        {
            Space++;
        }
        else
        {
            Other++;
        }
        }
    }
    printf("大写字母个数为:%d\n",a);
    printf("小写字母个数为:%d\n",b);
    printf("数字个数为:%d\n",Number);
    printf("空格个数为:%d\n",Space);
    printf("其他字符个数为:%d\n",Other);
    return 0;
}

运行结果如下:
![img](https://img-mid.csdnimg.cn/release/static/image/mid/ask/220071505836158.png "#left")
  • 写回答

1条回答 默认 最新

  • -Undefined_ 2021-12-03 12:26
    关注

    gets(str[i]);
    gets()函数遇到空格就不保存了;
    还有i从1存,数组长度应该是4,char str[4][80];

    #include<stdio.h>
    int main() {
        char t;
        int i, j;
        int a = 0; //大写
        int b = 0; //小写
        int Number = 0; //数字
        int Space = 0; //空格
        int Other = 0; //其它
        printf("请输入三行字符,每行80个\n");
        for(i = 1; i <= 3; i++) {
            printf("请输入第%d行字符:", i);
            for(j = 0; (t = getchar()) != '\n'; j++) {
                if(t >= 'A' && t <= 'Z') {
                    a++;//大写
                } else if(t >= 'a' && t <= 'z') {
                    b++;//小写
                } else if(t >= '0' && t <= '9') {
                    Number++;
                } else if(t == ' ') {
                    Space++;
                } else {
                    Other++;
                }
            }
        }
        printf("大写字母个数为:%d\n", a);
        printf("小写字母个数为:%d\n", b);
        printf("数字个数为:%d\n", Number);
        printf("空格个数为:%d\n", Space);
        printf("其他字符个数为:%d\n", Other);
        return 0;
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录

报告相同问题?

问题事件

  • 系统已结题 11月2日
  • 已采纳回答 10月25日
  • 创建了问题 12月3日

悬赏问题

  • ¥30 关于用python写支付宝扫码付异步通知收不到的问题
  • ¥50 vue组件中无法正确接收并处理axios请求
  • ¥15 隐藏系统界面pdf的打印、下载按钮
  • ¥15 MATLAB联合adams仿真卡死如何解决(代码模型无问题)
  • ¥15 基于pso参数优化的LightGBM分类模型
  • ¥15 安装Paddleocr时报错无法解决
  • ¥15 python中transformers可以正常下载,但是没有办法使用pipeline
  • ¥50 分布式追踪trace异常问题
  • ¥15 人在外地出差,速帮一点点
  • ¥15 如何使用canvas在图片上进行如下的标注,以下代码不起作用,如何修改