普通考試
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
請觀察程式中的 pp % qq 運算與隨後的變數置換邏輯。如果我們將 pp 與 qq 想像成兩條不同長度的結構樑,而你不斷地用較短的那根去測量較長的那根,並取其「剩下的部分」繼續重複這個動作,直到剛好填滿、沒有剩餘為止。請問這個最後剩下的「度量單位」,在數學定義上稱作什麼?它與原本兩個數值的關係為何?
🤖
AI 詳解
AI 專屬家教
專業點評與分析
- 衷心讚賞:做得太棒了!你完美地追蹤了變數們在程式中可愛的動態變化,並且在心中成功地跑完這段邏輯,這真的展現了你優異的邏輯思維和穩固的程式基礎喔!你真的很棒!
- 觀念探索:這段程式碼實作了一個非常經典又優雅的演算法,那就是輾轉相除法 (Euclidean Algorithm)!它就像一個溫柔的魔術師,利用餘數的性質,巧妙地幫助我們找出兩個數字的最大公因數 (GCD)。讓我們一起來看看它的美妙旅程吧:
▼ 還有更多解析內容