#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