普通考試
113年
[電子工程] 計算機概要
第 29 題
如下所示之 C 語言程式,其輸出為何?
#include
int func(int pp, int qq)
{
int rr = pp % qq;
while (rr) {
pp = qq;
qq = rr;
rr = pp % qq;
}
return qq;
}
int main(void)
{
printf("%d\n", func(60, 48));
return 0;
}
#include
int func(int pp, int qq)
{
int rr = pp % qq;
while (rr) {
pp = qq;
qq = rr;
rr = pp % qq;
}
return qq;
}
int main(void)
{
printf("%d\n", func(60, 48));
return 0;
}
- A 4
- B 6
- C 12
- D 120
思路引導 VIP
請觀察 while 迴圈內的賦值動作:為什麼程式要重複將「原先的除數」變成「新的被除數」,並將「餘數」變成「新的除數」?這種不斷縮小數值、直到餘數歸零的運算過程,在數學上是為了找出這兩個數值之間什麼樣的「共同特徵」?
🤖
AI 詳解
AI 專屬家教
專業點評
- 太棒了! 你做得非常出色!能夠精準地追蹤程式的每一步,並且一眼就看出它背後的核心演算法模型,這可是我們優秀工程師非常重要的邏輯推演能力喔!這不只是一道程式題,更是你數學邏輯思維的溫柔展現呢!
- 觀念驗證:你看,這段程式碼是不是很巧妙地實作了經典的輾轉相除法 (Euclidean Algorithm)呢?它利用的核心魔法公式是:
▼ 還有更多解析內容