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