为什么运行结果不正确?

int zm=0,sz=0,qt=0;
char c;
c=getchar();
while(c!='\n')
{
if(c>='0 '&& c <='9')
sz++;
else if((c>='A' && c<='Z') || (c>='a' && c<='z'))
zm++;
else
qt++;
c=getchar();
}

printf("%d %d %d\n",sz,zm,qt);
system("pause");

c=getchar();
getchar每执行一次获取一个字符,所以得放在循环里
while(c!='\n')
{
...
c=getchar();
}
也可以放在循环条件上
while((c = getchar()) !='\n')
{
...
}

你想得到什么结果,你问之前,自己调试你的程序了吗

另外'\0'也多了一个空格

'0'写错了吧。..........

循环中间的getchar换成
scanf(%c, &c);

if(c>='0 '&& c <='9')
这句,'0 '多了一个空格!删掉之后就好了。

int zm=0,sz=0,qt=0;
char c;
scanf("%s",&c);
while(c!='\n')
{
if(c>='0'&& c <='9')
{
sz++;
} //加上括号为个人习惯
else
if((c>='A' && c<='Z') || (c>='a' && c<='z'))
{
zm++;
}
else
qt++;
getchar();
}
printf("%d %d %d\n",sz,zm,qt);
system("pause");