普考申論題
111年
[資訊處理] 程式設計概要
第 二 題
📖 題組:
以下是完整的 C#程式碼,請回答以下各小題執行的結果為何?(每小題 10 分,共 20 分)
以下是完整的 C#程式碼,請回答以下各小題執行的結果為何?(每小題 10 分,共 20 分)
📝 此題為申論題,共 2 小題
小題 (二)
static void Main(string[] args) {
float rate = 2.5f;
float amount = 10f;
computing(rate, ref amount);
Console.WriteLine(
String.Format("Rate: {0}, Amount: {1}", rate, amount));
}
static void computing(float rate, ref float amt) {
rate *= 10;
amt *= rate;
}
float rate = 2.5f;
float amount = 10f;
computing(rate, ref amount);
Console.WriteLine(
String.Format("Rate: {0}, Amount: {1}", rate, amount));
}
static void computing(float rate, ref float amt) {
rate *= 10;
amt *= rate;
}
思路引導 VIP
本題的核心在於區分「傳值呼叫(Call by Value)」與「引用呼叫(Call by Reference)」。關鍵字是 ref。考生需追蹤變數在主程式與子程式間的變動情形:哪一個變數會被修改後帶回主程式?哪一個只是在子程式內部的區域變數?
小題 (一)
internal class Program {
static void Main(string[] args) {
float p = 5.5f;
int r = calc_square(p);
Console.WriteLine(String.Format("Result:{0}", r));
}
static int calc_square (float param) {
int result = (int)(param * param);
return result;
}
}
static void Main(string[] args) {
float p = 5.5f;
int r = calc_square(p);
Console.WriteLine(String.Format("Result:{0}", r));
}
static int calc_square (float param) {
int result = (int)(param * param);
return result;
}
}
思路引導 VIP
看到本題,首先要辨識出這是一個基本的 C# 程式追蹤題。重點在於觀察:1. 變數類型的轉換(float 轉 int);2. 運算優先序(先乘法後轉型);3. 整數強制轉型(Casting)的取捨規則(無條件捨去小數)。思考順序應為:計算 5.5 * 5.5 的確切數值,再判斷轉為 int 時會發生什麼事,最後確認輸出的字串格式。