moea_joint_essay
108年
[統計資訊] 資料庫及資料探勘、程式設計
第 二 題
📖 題組:
在常見的程式設計語言中,變數常區分為全域變數(Global Variable)與區域變數(Local Variable),並在某些情況下使用靜態變數(Static Variable),試回答下列問題:(16 分)
在常見的程式設計語言中,變數常區分為全域變數(Global Variable)與區域變數(Local Variable),並在某些情況下使用靜態變數(Static Variable),試回答下列問題:(16 分)
📝 此題為申論題,共 3 小題
小題 (二)
在一般程式設計中,若區域變數與全域變數同名,試問何者優先使用?(2 分)
思路引導 VIP
說明變數遮蔽效應(Shadowing)。
小題 (一)
何謂靜態變數與區域變數?並說明兩者的特性、差別及個別的生命週期。(6 分)
思路引導 VIP
定義兩者,並比較作用域(Scope)和生命週期(Lifetime)。
小題 (三)
有一打彈珠機函數 balls,接收引數 input1、input2 分別代表輸入值與輸出倍數,其功能要求:80 %機率失敗,回傳值為 0;20 %機率成功,回傳值 = 輸入值*輸出倍數,宣告一變數 count 初始值 1,000,並記錄每次呼叫後之剩餘值。請在下列底線部分填入適當程式碼:(每項 2 分,共 8 分)
int balls ( int input1, int input2 ) { // input1:輸入值;input2:輸出倍數
(1) )
int output = 0;
if ( rand() >= (2) ) // rand()為亂數函數,0 <= rand() < 1
{
(3) )
}
count = (4) )
return output;
}
int balls ( int input1, int input2 ) { // input1:輸入值;input2:輸出倍數
(1) )
int output = 0;
if ( rand() >= (2) ) // rand()為亂數函數,0 <= rand() < 1
{
(3) )
}
count = (4) )
return output;
}
思路引導 VIP
count 必須是靜態變數以保存呼叫間的值,(1)填 static int count = 1000;。若 rand()在0~1,20%成功即是大於等於 0.8 時。 (2) 為 0.8。成功時 output = input1 * input2,(3) 填入此計算。呼叫後剩餘值,通常指 count 減少,可能是減去 input1,或減去 output?題目說「記錄每次呼叫後之剩餘值」,通常是扣除每次投入的數值(input1)或類似設定,不過依常見邏輯是 count -= input1 或 count - input1,或者是加上變化量。