TVET Professional Subjects
มัธยมปลาย
เคลียร์แล้ว

求講解 答案B

3. 給定程式碼,請問輸出為何? (A) 10 (B) 20 (C) 30 (D) 40 // code int x 100; for (int i = 1; i <= 8; i++) for (int j = 1; j <= i; j++) for (int k = 1; k <= j; k++) x += 1; printf("%d", x);

คำตอบ

✨ คำตอบที่ดีที่สุด ✨

也就是要計算 x+=1 會被運行的次數
或者可以進行一些簡化:

對於k的迴圈:
for(int k = 1; k <= j; k++){
x += 1;
}
可以改寫成:
x += j;

再來,對於j的迴圈:
for(int j = 1; j <= i; j++){
x += j;
}
利用連續正整數和公式
可以改寫成:
x += i*(i+1)/2;

最後,對於i的迴圈:
for(int i = 1; i <= 8; i++){
x += i*(i+1)/2;
}
要計算 (1×2)/2 + (2×3)/2 + (3×4)/2 + ⋯ + (8×9)/2
= (1²+1)/2 + (2²+2)/2 + (3²+3)/2 + ⋯ + (8²+8)/2
= (1²+2²+3²+⋯+8²)/2 + (1+2+3+⋯+8)/2
利用連續正整數和、平方和公式
可再化簡成
= (8×9×17/6) / 2 + (8×9/2) / 2
= 6 × 17 + 2 × 9
= 120

所以最後的 x 值就是 -100 + 120 = 20

แสดงความคิดเห็น
ข้อสงสัยของคุณเคลียร์แล้วหรือยัง?