課程
/后端開發(fā)
/C
/C語言入門
為什么這里要把score除以10呢?
2016-01-13
源自:C語言入門 4-16
正在回答
1、score/10是結(jié)合隱形強制轉(zhuǎn)換使用。
2、case 后面跟的是整數(shù),又根據(jù) “switch后面的表達式語句只能是整型或者字符類型”這句話,所以我們可以判斷switch后面的表達式是整形的而不是字符型的。
3、代碼中score/10等于8.7,但是因為switch后面的表達式是整形的,所以程序會對8.7做隱形強制轉(zhuǎn)換使其轉(zhuǎn)換為整形。在c++中,小數(shù)轉(zhuǎn)換成整形時會把小數(shù)點部分舍棄而不是四舍五入,也就是說8.7被轉(zhuǎn)換成8了。 這樣一來,switch語句就會執(zhí)行case 8 這個分支,也就是輸出“等級B”。
3、score/10結(jié)合隱形強制轉(zhuǎn)換把分數(shù)轉(zhuǎn)換成10、9、8、7、6等整形變量,然后參與switch分支判斷,這樣就可以實現(xiàn) 90-100分輸出“等級A”、80-90分輸出“等級B”這種目的。
張土土
比如說,他考了87分,那么87/10等于8,如果他考了93分,那么93/10等于9,也就是說,可以先通過score/10來取十位數(shù),然后看switch語句中有case多少與之對應,然后依次執(zhí)行完,遇到break就終止了,不會繼續(xù)往下執(zhí)行。例如:把程序中的case 8下面的那個break去掉,那么運行結(jié)果就是等級B等級C,因為遇到break才跳出switch,你可以在想想。如下:
#include <stdio.h>
int main()?
{
? ? int score = 87; ??
? ? score/=10;
? ??
? ? switch(score)
? ? {
? ? ? ??
? ? ? ? case 10:
? ? ? ? case 9:
? ? ? ? ? ? printf("等級A");
? ? ? ? ? ? break;
? ? ? ? case 8:
? ? ? ? ? ? printf("等級B");
? ? ? ? ? ? ? ? ? ? ? ? ? ?
? ? ? ? case 7:
? ? ? ? case 6:?
? ? ? ? ? ? printf("等級C");
? ? ? ? ? ? break; ? ? ? ? ? ? ??
? ? ? ? default:
? ? ? ? ? ? printf("等級D");
? ? ? ? ? ? break; ? ?
? ? }
? ? return 0;
}
舉報
C語言入門視頻教程,帶你進入編程世界的必修課-C語言
1 回答c語言入門4-4 分支結(jié)構(gòu)之嵌套
2 回答C語言入門4-16
1 回答c語言入門 4-16
3 回答C語言入門1—2 c程序結(jié)構(gòu)
3 回答C語言入門 4—13
Copyright ? 2025 imooc.com All Rights Reserved | 京ICP備12003892號-11 京公網(wǎng)安備11010802030151號
購課補貼聯(lián)系客服咨詢優(yōu)惠詳情
慕課網(wǎng)APP您的移動學習伙伴
掃描二維碼關(guān)注慕課網(wǎng)微信公眾號
2016-01-14
1、score/10是結(jié)合隱形強制轉(zhuǎn)換使用。
2、case 后面跟的是整數(shù),又根據(jù) “switch后面的表達式語句只能是整型或者字符類型”這句話,所以我們可以判斷switch后面的表達式是整形的而不是字符型的。
3、代碼中score/10等于8.7,但是因為switch后面的表達式是整形的,所以程序會對8.7做隱形強制轉(zhuǎn)換使其轉(zhuǎn)換為整形。在c++中,小數(shù)轉(zhuǎn)換成整形時會把小數(shù)點部分舍棄而不是四舍五入,也就是說8.7被轉(zhuǎn)換成8了。 這樣一來,switch語句就會執(zhí)行case 8 這個分支,也就是輸出“等級B”。
3、score/10結(jié)合隱形強制轉(zhuǎn)換把分數(shù)轉(zhuǎn)換成10、9、8、7、6等整形變量,然后參與switch分支判斷,這樣就可以實現(xiàn) 90-100分輸出“等級A”、80-90分輸出“等級B”這種目的。
2016-01-13
比如說,他考了87分,那么87/10等于8,如果他考了93分,那么93/10等于9,也就是說,可以先通過score/10來取十位數(shù),然后看switch語句中有case多少與之對應,然后依次執(zhí)行完,遇到break就終止了,不會繼續(xù)往下執(zhí)行。例如:把程序中的case 8下面的那個break去掉,那么運行結(jié)果就是等級B等級C,因為遇到break才跳出switch,你可以在想想。如下:
#include <stdio.h>
int main()?
{
? ? int score = 87; ??
? ? score/=10;
? ??
? ? switch(score)
? ? {
? ? ? ??
? ? ? ? case 10:
? ? ? ? case 9:
? ? ? ? ? ? printf("等級A");
? ? ? ? ? ? break;
? ? ? ? case 8:
? ? ? ? ? ? printf("等級B");
? ? ? ? ? ? ? ? ? ? ? ? ? ?
? ? ? ? case 7:
? ? ? ? case 6:?
? ? ? ? ? ? printf("等級C");
? ? ? ? ? ? break; ? ? ? ? ? ? ??
? ? ? ? default:
? ? ? ? ? ? printf("等級D");
? ? ? ? ? ? break; ? ?
? ? }
? ? return 0;
}