所屬科目:程式設計
一、請追蹤下列根基於 C++所撰寫的程式,列出輸出結果,每項輸出皆要說明為何會輸出所對映數值的原因,受那些規則或副程式所決定的結果。(30 分)
二、給定二個方形,方形 A 的左上角座標(x1,y1),寬和高為(w1,h1);方形 B 的左上角座標(x2,y2),寬和高為(w2,h2),請設計判斷邏輯,以確認二個方形是否有任何重疊,有重疊回傳 true,否則為 false。(20 分)
三、以圖示法表示下列遞迴程式呼叫執行的過程,給定 n = 4,k = 2 來呼叫(即 pascal(4,2))副程式,來求解最後回傳的結果,請依產生的堆疊並以分支圖 示法來呈現此呼叫之過程。(25 分)
四、二位富翁張三和李四比較誰較有錢,為保有隱私,互不直接說出財富金額,依此設定一個零知識證明程式,給定二維陣列分別標記二富翁所擁有的財富,假設一個陣列序號代表所擁有資產的一個單位(如:1 千萬),下表 所示張三擁有 4 千萬,則分別標記 1 到 4 為 T;李四擁有 6 千萬,則分別 標記 1 到 6 為 T。依此,於檢視誰比較有錢時,張三只能檢視李四第 4 個陣列格,李四只能檢視張三第 6 個陣列格,若有檢視到標記 T,則可以確 認對方擁有的財富等同自己或在自己之上,反之則反。請設計一虛擬碼程式以分別讓二位富翁運用此程式,來驗證是否比對方有 錢。(25 分)