为什么每次大写字母都多一个?

#include<stdio.h>
#define N 80
int main ()
{
    int i,a=0,b=0,c=0;
    char s[N];
    gets(s);
    for(i=0;i<=79;i++)
    {
        if(s[i]<='9'&&s[i]>='0')
        a++;
        else if(s[i]<='z'&&s[i]>='a')
        b++;
        else if(s[i]<='Z'&&s[i]>='A')
        c++;
    }
    printf("大写:%d,小写:%d,数字:%d",c,b,a);
    return 0;
}

你每次都输入了80个字符吗?如果没有,for(i=0;i<=79;i++) 会读垃圾数据,应该修改循环结束条件为 i < strlen(s)

如果你的输入不是正好80个字符,就把i<=79改成s[i]!='\0'

建议在循环时用<strlen(s)作为结束标志,可以去了解下当开辟的数组未赋值时里面的默认值为什么

测试了一下,没有出现你说的问题啊

希望对你有帮助:https://blog.csdn.net/it_xiangqiang/category_10581430.html
希望对你有帮助:https://blog.csdn.net/it_xiangqiang/category_10768339.html