函式參數再練習|JS 學徒特訓班|六角學院

【六角學院 – JS 學徒特訓班 – 第十一天】

這裡紀錄六角學院的 JS 學徒特訓班試題的筆記,方便日後可以在職場上可以學習與複習,總共有六十關,讓自己的 JS 觀念可以更好!

情境:

小杰:「師傅你就老實承認吧..你是不是認識我老闆?」
小杰:「還有你教我的都是 JAVA 啊,害我還得自己轉成 JavaScript..」
師傅:「我跟你老闆認識 2、30 年了,還有這樣的訓練安排是我故意的,這樣以後你學其他的語言才會舉一反三,懂為師的安排嗎?」
小杰:「…可惡,原來你早就跟老闆串通好了,假借帶我變強,實則是借刀花自己的特休來教育訓練」
師傅:「呵呵呵..小毛頭這些都是人生歷練啊,想當年我…嗚!」

剎那間,師傅手撫著胸跪了下來,表情逐漸扭曲痛苦。

小杰焦急著問:「師傅你怎麼啦!?」
師傅:「快幫我叫救護車,我心臟的老毛病又犯了!」

過了 15 分鐘後,救護人員風風火火的過來了,但師傅仍然執拗的要小杰做完它提供的課題。

小杰:「師傅你不要再固執了啦,等你養好我們再鍛鍊不就好了!」
師傅:「不行!這題你一定要今天做完,不然我就不上救護車!」
小杰:「什麼東西啊..」

小杰抓抓了頭,焦急著左顧右盼,怎麼會有人這麼固執呢?於是他將眼神望向了醫護人員,希望他們一起說服師傅。

醫護人員:「他情況蠻緊急的,現在交通也很塞車,如果沒有在一小時內出發的話,我們不能擔保他的性命哦。」
師傅氣若游絲地說:「一小時綽綽有餘了…小杰你快做吧,你今天不完成…我向老闆承諾的學習進度就無法完成,我 30 年的吃飯借據就無法一筆勾銷了。」
小杰:「什麼!?你竟然吃了這麼久的霸王飯,竟然還順便利用了我,我真的衰到—」
醫護人員:「可以快一點做決定嗎?時間快來不及了!」

此時的小杰也無法做抉擇,身為遊戲玩家的你,你的選擇是?
A:不理師傅,安全第一,在救護車與醫院上再來慢慢研究
B:非常不情願地在現場,嘗試在一小時內解完題目,順便挑戰自己的極限

第一題 老闆想要隨時扣你的薪水

老闆:「今天是發薪日,先發給你薪資 23500 元(遞給小杰」
老闆:「以下三步驟動作請寫成程式」
老闆:「步驟一:昨天你上廁所太久了,我要扣你 1000 元」
老闆:「步驟二:小黑說不喜歡你煮的狗食,我要再扣你 3500 元 (再次取走」
老闆:「步驟三:我今天心情不太好,扣個 500 元意思一下」
小杰:「屁啦!心情不太好關我啥事!」
老闆:「這不是重點,快點算!將之前的寫法換成函式,並增加一個參數,讓我方便何時扣你多少都沒問題」
老闆:「最後你寫的函式,要執行三次,每次都要回報你的總薪水剩下多少。」

複製題目

函式參數再練習|JS 學徒特訓班|六角學院

參考解答:

var salary = 23500;

// 請依照上面的武功秘笈 Codepen,依序實現兩步驟,算出小杰被扣了多少錢

function payCut(money) {
  salary -= money;
  console.log("小杰目前還剩下" + salary + "元");
}

payCut(1000); // 小杰目前還剩下22500元
payCut(3500); // 小杰目前還剩下19000元
payCut(500); // 小杰目前還剩下18500元

說明:

基本的減法運算式

第二題 if + 指派運算子

老闆:「好了,現在我要告訴你贈品條件!」

  • 目前小杰手上有 3 個贈品
  • 消費滿 100 元就送對方贈品

下圖為第八關截圖,請依照以下邏輯進行改寫:

現在來了三個客人,並依序有消費,A顧客消費 150、B 顧客消費 99、C 顧客消費 110。
請設計一個函式,裡面代入一個參數為顧客消費金額,確認該客戶是否符合贈品條件,若符合就讓 giftNum 變數減少數量。
並依序執行三次函式,每次函式皆會 return 目前贈品數量剩下多少。

複製題目

函式參數再練習|JS 學徒特訓班|六角學院

參考解答:

var giftNum = 3;     // 贈品數量
var customerA = 150; // 顧客 A 消費金額
var customerB = 99;  // 顧客 B 消費金額
var customerC = 110; // 顧客 C 消費金額

function checkConsumption(money) {
  if (money >= 100 && giftNum > 0) {
    giftNum -= 1;
  }
  console.log("目前贈品剩下" + giftNum + "個");
}

checkConsumption(customerA); // 目前贈品剩下2個
checkConsumption(customerB); // 目前贈品剩下2個 (消費未達到 100)
checkConsumption(customerC); // 目前贈品剩下1個

第三題 if + 指派運算子

老闆:「我現在補齊給你總計 200 個贈品!」
老闆:「然後我覺得現在贈品門檻太高了,我決定大放送,只要滿 50 元就送一個!以此類推,他買 500 元就送 10 個贈品!
小杰:「老闆你竟然利用我的特休,我跟你沒完啦。」
老闆:「別廢話,客人來了快點!他買完後告訴我贈品還夠不夠!」

下圖為第八關截圖,giftNum 已改為 200 份,請依照以下邏輯進行改寫:

  1. 請用函式改寫,同時來了三組客人,請用你寫的函式連續執行三次,來幫助顧客是否有符合贈品條件。
  2. 另外每次執行函式時,都必須告訴老闆一次目前贈品數量。

第一組客人:Mary 買了 10 份薯條,10 份漢堡
第二組客人:Bob 買了 1 份薯條
第三組客人:Tim 買了 20 份薯條,15 份漢堡

複製題目

函式參數再練習|JS 學徒特訓班|六角學院

參考解答:

var giftNum = 200; // 贈品數量
var friesPrice = 30; // 薯條單價
var hamburgerPrice = 50; // 漢堡單價

// 計算總消費額函式
function consumptionTotal(name, friesNumber, hamburgerNumber) {
  var total = (friesPrice * friesNumber) + (hamburgerPrice * hamburgerNumber);
  giftNum = giftNum - Math.floor(total / 50); // 消費 50 送一個

  if (giftNum <= 0) {
    console.log("老闆贈品賣光啦~");
  } else {
    console.log("老闆!贈品還夠!剩下" + giftNum + "個~");
  }
}

consumptionTotal("Mary", 10, 10); // 老闆!贈品還夠!剩下184個~
consumptionTotal("Bob", 1, 0); // 老闆!贈品還夠!剩下184個~ (消費未滿 50 元,所以贈品沒變)
consumptionTotal("Tim", 20, 15); // 老闆!贈品還夠!剩下157個~

說明:

Math.floor() 函式會回傳小於等於所給數字的最大整數。 參考教學網址

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *