#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);
}
為什么無論輸入什么字符,都會加到letter上?。?/h1>
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 關注
- 285 瀏覽
添加回答
舉報
0/150
提交
取消