阿摩線上測驗 登入

申論題資訊

試卷:103年 - 103年高等三級暨普通考普通_資訊處理#29119
科目:程式設計
年份:103年
排序:0

題組內容

二、研究下方的片段 C 語言程式並回答下列問題。

申論題內容


scanf (“%d”, &n);
if (n > 0)
for (m=0, i=1; i<=n; m++, i=i*2);
printf (“%d
”, m);
1.請說明該程式片段最後輸出的數字的意涵,也就是 m 與 n 的關係。(10 分)

詳解 (共 1 筆)

詳解 提供者:hchungw
這段 C 語言程式碼使用 scanf 從使用者那裡讀取一個整數 n,然後通過一個 for 循環來計算變數 m 的值。在 for 循環中,變數 i 以指數方式增長(每次循環都乘以 2),而變數 m 在每次循環中都會遞增 1。
 
在這段程式碼中,m 代表了 i 需要乘以 2 幾次才能達到或超過 n 的過程中循環的次數。因此,這個循環實際上是在計算 2 的多少次幂會第一次超過或等於 n。
 
這樣,輸出的 m 就表示你需要把 1 左移 m 次才能得到一個大於或等於 n 的數。在計算機科學中,這個概念在二進位數字和記憶體地址的計算中非常有用。