Re: [問題] 條件式判斷
※ 引述《iamlouis (2塊錢立頓紅茶包)》之銘言:
: ※ 引述《doggingg (doggingg)》之銘言:
: : There are 4 tests for 10 students with grade ranges as:
: : A:(grade>=90)
: : B:(90>grade>=80)
: : C:(80>grade>=70)
: : D:(70>grade>=60)
: : E:(grade<60)
: : write a nested loop to count the number of grades,
: : eg. 10'A's , 15'B's,etc and put the results into sc[5]
: : (you can not use if statement)
: : 題目是說10個同學每人有四個成績共40個成績,計算A等級幾個,B等級幾個
: : 把這五個等級的個數放進sc陣列中,
: : 我想請教的是,不用if寫,要怎麼寫,是用switch嗎? 還是?:
: for (i = 0; i < 10; i++) {
: sc[min(4, max(0, (grade[i] - 50) / 10))))]++;
: }
: 利用 min(X, max(Y, ...)), 可以結果約束在 X 與 Y 之間. :-)
這個好 ...
改良一下
引用下列函數
const int CHAR_BIT = 8;
#define min(x,y)
y + ((x - y) & ((x - y) >> (sizeof(int) * CHAR_BIT - 1))); // min(x, y)
#define max(x,y)
x - ((x - y) & ((x - y) >> (sizeof(int) * CHAR_BIT - 1))); // max(x, y)
因為沒有限定 A~E 在 sc中的順序 故 min 可略
for (i = 0; i < 10; i++, sc[max((grade[i] - 50) / 10), 0)]++) {}
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 123.204.119.163
※ 編輯: Anonymoux 來自: 123.204.119.163 (02/10 22:49)
※ 編輯: Anonymoux 來自: 123.204.119.163 (02/10 22:53)
推
02/10 23:16, , 1F
02/10 23:16, 1F
推
02/10 23:20, , 2F
02/10 23:20, 2F
→
02/10 23:33, , 3F
02/10 23:33, 3F
→
02/10 23:35, , 4F
02/10 23:35, 4F
→
02/10 23:42, , 5F
02/10 23:42, 5F
→
02/10 23:42, , 6F
02/10 23:42, 6F
推
02/11 00:19, , 7F
02/11 00:19, 7F
推
02/11 09:51, , 8F
02/11 09:51, 8F
討論串 (同標題文章)