你的i值重复了,在count函数中i代码操作到的下标,也代表字母的个数。
应改为
#include
int n=0,j=0,k=0,m=0;
void count(char str[ ]);
int main()
{
char str1[100];
printf("");
count(str1);
printf("字母有:%d个\n数字有:%d个\n空格有:%d个\n其他字符有:%d个\n",n,k,j,m);
}
void count(char str[])
{
gets (str);
for(int i=0;str[i]!='\0';i++)
{
if(str[i]==' ')
j++;
else if((str[i]<='z'&&str[i]>='a')||(str[i]<'Z'&&str[i]>'A'))
n++;
else if(str[i]<58&&str[i]>47) k++;
else m++;
}
}