问题描述:输入整数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语言,挺迷的,跟同学讨论了很久,试了很多方式,也上网查过,最终还是厚着脸皮来这里问大佬们。若能解答感激不尽。