C新手,求解一个问题

#include <stdio.h>
void main()
{
	char c;
	int letter=0,space=0,number=0,other=0;
	while ((c=getchar())!='\n')
	{
		if (65<=c<=90||97<=c<=122)//为什么无论输入什么字符,都会加到letter上!?
			letter++;
		else if(c=' ')
			space++;
		else if(48<=c<=57)
			number++;
		else 
			other++;
	}
	printf("%d\n%d\n%d\n%d\n",letter,space,number,other);
}
阅读 4.3k
3 个回答
if ((65<=c&&c<=90)||(97<=c&&c<=122))

建议重新去看一遍逻辑运算符执行顺序 ...

新手上路,请多包涵

(65<=c<=90||97<=c<=122)
这种写法,按照C语言的语法规则
第一步判断 65<= c 这个不论c为什么字符,都会返回true或者false,这两个值在C中为1或0

第二步判断 0 <= 90 或1 <= 90 ,返回 true

第三步执行 if 条件里的语句 (这里注意 || 操作,只要前面的返回true了,后面的是不会在执行)

接着继续....

你的代码还有问题啊

else if(c=' ')
    space++;
else if(48<=c<=57)
    number++;

这里,判断相等应该是===只会赋值并且返回值,而if判断非零值永远是true。 还有就是那个连等问题了。以及代码风格也有些问题。 改正后应该如此

else if(c==' ') {
    space++;
}
else if(48<=c&&c<=57) {
    number++;
}
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
logo
101 新手上路
子站问答
访问
宣传栏