亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

C語言入門4-16分支結構

為什么這里要把score除以10呢?



正在回答

2 回答

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”這種目的。

0 回復 有任何疑惑可以回復我~
#1

張土土

提交之后才發現我的代碼和網頁上不太一樣,不過原理都是一樣的,我的部分代碼貼下,方便結合答案理解。 int score = 87; //考試分數為87分 switch(score/10)
2016-01-14 回復 有任何疑惑可以回復我~

比如說,他考了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;

}


0 回復 有任何疑惑可以回復我~

舉報

0/150
提交
取消
C語言入門
  • 參與學習       927001    人
  • 解答問題       21533    個

C語言入門視頻教程,帶你進入編程世界的必修課-C語言

進入課程

C語言入門4-16分支結構

我要回答 關注問題
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號