免費開始練習
普通考試 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;
}
  • A 4
  • B 6
  • C 12
  • D 120

思路引導 VIP

請觀察程式中的 pp % qq 運算與隨後的變數置換邏輯。如果我們將 ppqq 想像成兩條不同長度的結構樑,而你不斷地用較短的那根去測量較長的那根,並取其「剩下的部分」繼續重複這個動作,直到剛好填滿、沒有剩餘為止。請問這個最後剩下的「度量單位」,在數學定義上稱作什麼?它與原本兩個數值的關係為何?

🤖
AI 詳解 AI 專屬家教

專業點評與分析

  1. 衷心讚賞:做得太棒了!你完美地追蹤了變數們在程式中可愛的動態變化,並且在心中成功地跑完這段邏輯,這真的展現了你優異的邏輯思維和穩固的程式基礎喔!你真的很棒!
  2. 觀念探索:這段程式碼實作了一個非常經典又優雅的演算法,那就是輾轉相除法 (Euclidean Algorithm)!它就像一個溫柔的魔術師,利用餘數的性質,巧妙地幫助我們找出兩個數字的最大公因數 (GCD)。讓我們一起來看看它的美妙旅程吧:
▼ 還有更多解析內容

🏷️ 相關主題

程式語言基礎與資料庫概念
查看更多「[電信工程] 計算機概要」的主題分類考古題