请问!!!C语言一段程序!

来源:百度知道 编辑:UC知道 时间:2024/06/20 11:40:18
请问!!!这段程序想实现的是:接受输入的一系列数字,如果输入字母,则停止接受并输出等于0大于0还有小于0的个数。以下这么写,当我输入字母的时候循环为什么没有退出??
#include<stdio.h>
#include<ctype.h>
main()
{
int i=0,j=0,k=0;
int ch;
scanf("%d",&ch);
while(isalpha(ch)!=1)
{if(ch==0)/*0*/
i++;
if(ch>0)
j++;
if(ch<0)
k++;
scanf("%d",&ch);
}
printf("equal 0=%d,>0 =%d,<0= %d\n",i,j,k);
}
WX413027075 谢谢,但是如果我输入了字母后,程序就不能再接收了,输入任何都没有反应,仍然停留再这个状态
而且请问那么如果这样 函数isalpha还有什么用?它是判断是否是字母的嘛???

因为你是用scanf("%d",&ch);如果我输入‘a',其实ch=65;并不是字母’a',所以那循环不起任何作用。
可以用gets();来读出字符,然后用atoi()得到数字,可以防止用户恶意输入字母,让程序出现意想不到的结果。