#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);
}
2 回答
明月笑刀无情
TA贡献1828条经验 获得超4个赞
(65<=c<=90||97<=c<=122)
这种写法,按照C语言的语法规则
第一步判断 65<= c 这个不论c为什么字符,都会返回true或者false,这两个值在C中为1或0
第二步判断 0 <= 90 或1 <= 90 ,返回 true
第三步执行 if 条件里的语句 (这里注意 || 操作,只要前面的返回true了,后面的是不会在执行)
接着继续....
DIEA
TA贡献1820条经验 获得超2个赞
你的代码还有问题啊
else if(c=' ') space++;else if(48<=c<=57) number++;
这里,判断相等应该是==
,=
只会赋值并且返回值,而if
判断非零值永远是true
。 还有就是那个连等问题了。以及代码风格也有些问题。 改正后应该如此
else if(c==' ') { space++; }else if(48<=c&&c<=57) { number++; }
- 2 回答
- 0 关注
- 216 浏览
添加回答
举报
0/150
提交
取消