#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)//為什么無(wú)論輸入什么字符,都會(huì)加到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 回答

明月笑刀無(wú)情
TA貢獻(xiàn)1828條經(jīng)驗(yàn) 獲得超4個(gè)贊
(65<=c<=90||97<=c<=122)
這種寫法,按照C語(yǔ)言的語(yǔ)法規(guī)則
第一步判斷 65<= c 這個(gè)不論c為什么字符,都會(huì)返回true或者false,這兩個(gè)值在C中為1或0
第二步判斷 0 <= 90 或1 <= 90 ,返回 true
第三步執(zhí)行 if 條件里的語(yǔ)句 (這里注意 || 操作,只要前面的返回true了,后面的是不會(huì)在執(zhí)行)
接著繼續(xù)....

DIEA
TA貢獻(xiàn)1820條經(jīng)驗(yàn) 獲得超2個(gè)贊
你的代碼還有問(wèn)題啊
else if(c=' ') space++;else if(48<=c<=57) number++;
這里,判斷相等應(yīng)該是==
,=
只會(huì)賦值并且返回值,而if
判斷非零值永遠(yuǎn)是true
。 還有就是那個(gè)連等問(wèn)題了。以及代碼風(fēng)格也有些問(wèn)題。 改正后應(yīng)該如此
else if(c==' ') { space++; }else if(48<=c&&c<=57) { number++; }
- 2 回答
- 0 關(guān)注
- 278 瀏覽
添加回答
舉報(bào)
0/150
提交
取消