民國114年 第3梯次 數位電子甲級 學科

第62題

Arduino map 函式:unsigned long map(unsigned long x, unsigned long i, unsigned long…

題目

Arduino map 函式:unsigned long map(unsigned long x, unsigned long i, unsigned long j, unsigned long y, unsigned long z),下列敘述何者正確?

  1. (1) return (x - i) * (z - y) / (j - i) + y;
  2. (2) i 為映射前區間最小值,j 為映射前區間最大值
  3. (3) return (x - y) * (j - i) /(z - y) + i;
  4. (4) i 為映射後區間最小值,j 為映射後區間最大值

官方答案

(1) return (x - i) * (z - y) / (j - i) + y;、(2) i 為映射前區間最小值,j 為映射前區間最大值

解析

Arduino map() 函式將數值 x 從輸入區間 [i, j] 線性映射至輸出區間 [y, z],其實作為 return (x - i) * (z - y) / (j - i) + y;(選項1正確,整數運算會無條件捨去小數)。其中 i 為映射前(輸入)區間最小值 in_min,j 為映射前區間最大值 in_max(選項2正確);y 為映射後最小值 out_min,z 為映射後最大值 out_max。選項3公式錯誤,且選項4把 i、j 說成映射後區間,與函式定義相反,故皆不正確。

AI 參考解析(推得答案已與官方答案比對一致),非官方公告內容,僅供備考參考。

官方資料