向各位大佬求助
  • 板块学术版
  • 楼主xx2199753019
  • 当前回复3
  • 已保存回复3
  • 发布时间2022/10/16 23:10
  • 上次更新2023/10/27 07:10:26
查看原帖
向各位大佬求助
839213
xx2199753019楼主2022/10/16 23:10

问题描述:输入整数M(1≤M≤100)表示字符的个数,输入共有N个字符的字符串,统计其中小写字母、大写字母、数字、其它字符的个数,并输出统计结果,数据间以空格分隔。 这是我的代码

#include <stdio.h> 
int main()
{
    int M;
    scanf_s("%d", & M);
    int i, a=0, b=0, c=0, d=0;
    fflush(stdin);
    char ch;
    for (i = 0; i < M; i++)
    {
        scanf_s("%c", &ch);
        //a为大写字母,b为小写字母,c为数字,d为其他字符。
        fflush(stdin);
        if (ch >= 'A' && ch <= 'Z')   a++;
        else if (ch >= 'a' && ch <= 'z')   b++;
        else if (ch >= '0' && ch <= '9')   c++;
        else d++;
    }
    printf("%d %d %d %d", a, b, c,d);


    return 0;
}

问题是输入的最后数据都会会被看成是其他字符,比如说输入
4
1234
输出就是
0 0 3 1
不懂为什么会莫名其妙蹦出个1出来,才刚刚学c语言,挺迷的,跟同学讨论了很久,试了很多方式,也上网查过,最终还是厚着脸皮来这里问大佬们。若能解答感激不尽。

2022/10/16 23:10
加载中...