請(qǐng)教一下???
#include <stdio.h>
int main()?
{
? ? int score = 7200;
? ? //完善一下代碼
?if(score>=10000) ??
? ? {
? ? ? ? printf("鉆石玩家");
? ? }
? else if(5000<=score<10000) ?
? ? {
? ? ? ? printf("白金玩家"); ? ?
? ? }
? else if(1000<=score<5000) ?
? ? {
? ? ? ? printf("青銅玩家"); ? ??
? ? }
? else
? ? {
? ? ? ? printf("普通玩家"); ? ?
? ? }
? ? return 0;
}
為什么這個(gè)代碼是錯(cuò)誤的????輸不出青銅,普通玩家
2015-08-15
5000<=score<10000 作區(qū)間判斷不是這樣寫的,應(yīng)該為?5000 <= score && score < 10000
2015-08-15
區(qū)間判斷在邏輯上其實(shí)是兩個(gè)條件判斷用邏輯與相連:即?score大于等于5000 和 score小于10000 同時(shí)成立。 所以要用邏輯與運(yùn)算符(&&)將兩個(gè)條件判斷相連。
不過 5000<=score<10000 也是一個(gè)合法的復(fù)合語(yǔ)句,但C是這樣解釋它的:(5000<=score)<10000。5000<=score的結(jié)果是true或false,然后這個(gè)bool值再與10000做大小判斷。因?yàn)閠ure會(huì)轉(zhuǎn)換為1,false會(huì)轉(zhuǎn)換為0,于是當(dāng)score小于5000,則整個(gè)表達(dá)為 0<10000;當(dāng)score大于等于10000,整個(gè)表達(dá)式為 1<10000,不管是哪種情況,整個(gè)表達(dá)式都是true。
所以你的代碼,只要score小于10000,都會(huì)進(jìn)入第一個(gè)else if,打印出“白金玩家”