精華區beta NTU-Exam 關於我們 聯絡資訊
課程名稱︰計算機程式(C語言) 課程性質︰必修(化工)或通識(G3:物質科學領域) 課程教師︰李秀惠副教授 開課學院: 開課系所︰ 考試時間︰2006/11/08 本次考試採紙筆測驗 是否需發放獎勵金:是 (如未明確表示,則不予發放) 試題 : 注意事項: 1. 請以C語言回答下列各題. 2. 若題目要求實作函式,且有指定Function Prototype,須完全依照規定. 3. 請注意程式碼應有的結束符號 壹、(20分) 請根據下列附表,撰寫一個完整的程式,讓使用者輸入自己的姓名、身高(cm)、體重 (lb 英磅,1公斤=2.2英鎊),計算出使用者的BMI值(小數點最少取到第一位),並告訴他的身 體重況. 此程式變數宣告如下 char name[20]; float height; float weight; float bmi; =====執行範例===== 請輸入你的姓名:王小明 請輸入你的身高(cm):180 請輸入你的體重(lb):176 你的BMI值:24.6 王小明,你的體重 剛好 附表一 狀態 | BMI ---------------|-------- 太輕 | BMI<18.5 剛好 | 18.5<=BMI<25 有點重 | 25<=BMI<30 非常胖 | 30<=BMI 附表二 BMI=weight(kg)/height(m) 貳、 綜合所得稅的申報是一項複雜的工作,因而有不少幫助人們試算的工具程式,本題希望 同學參考以下公式,實作出試算的其中一項步驟:由使用者輸入的"綜合所得稅",算出 "應繳稅額". 綜合所得稅公式: 應繳稅額=綜合所得稅*稅率-累進差額 綜合所得淨額、稅率級累進差額關係共分五級,如下: 級別 綜合所得淨額 稅率 累進差額 1 0至370,000 6% 0 2 370,001至990,000 13% 25,900 3 990,001至1,980,000 21% 105,100 4 1,980,000至3,720,200 30% 283,300 5 3,720,001 以上 40% 655,300 (a)(15分) 請實作一個應繳稅額的計算函式 income_tax. Function Prororype: int income_tax(int income); 傳入值說明:income:綜合所得淨額. 傳回值說明:請回值一個整數,代表應繳稅額. (b)(10分) 請實作主函式(main 函式), 讓實用者輸入座號(整數)、綜合所得淨額(整數),並叫用(a) 小題之函式計算應繳稅額,再將其印出,直到座號輸入為0 為止. (c)(10分) 請改良income_tax,考量金額可能有小數的情形,故使用較精確的浮點數;同時將稅率、累 進差額這兩組數,皆以浮點數陣列傳入,因此,當他們有所變動時,只須更改其對應陣列內容 ,而income_tax_2這個函式也能正常運作. Function Prototype 如下: float income_tax_2(int income ,int level,float income_bound[], float rate[],float prog_diff[]) 傳入值說明: income : 綜合所得稅 level : 級別數量(以上為例:level 為5) rate : 稅率陣列 prog_diff : 累進差額陣列 income_bound: 邊界陣列(以上為例:此陣列包涵370000和990,000.....) 傳回值說明: 請傳回一個浮點數,代表計算出來的應繳稅額. 叁、(20分) N*N的魔方陣(Magic Square)是指一個寬度N的正方形,其中出現的整數由1到N*N,不可重 覆,而且每行、每列以及兩條對角線上的數之和都相等.下是5X5的魔方陣列. 17 24 1 8 15 23 5 7 14 16 4 6 13 20 22 10 12 19 21 3 11 18 25 2 9 請實作出一個函式,輸入值為一個代表5*5魔方陣的二維陣列(int[5][5]),判斷出這個二維 陣列是否合於以上魔方陣規則,如果合於規則,傳回'Y',不合於規定,傳回'N'. Function Prototype 如下: char magic(int square[5][5]); 傳入值說明:square: 需要判斷的正方形 傳回值說明:一個字元,代表輸入的二維陣列是否為魔方陣. 肆、 巧妙的利用回圈敘述可以繪出倒三角的圖形,請完成下列各小題之函式. (a)(15分) 函式fa的prototype為void fa(int n, int m); 其中n為底長度,m為對齊邊界,印出一個倒三角形. (注意:行數、列數、三角形 都要印出來) =====執行範例 n=4 m=12 ===== 123456789012345678901234567890 **** 1 *** 2 ** 3 * 4 =====執行範例 n=3 m= 4 ===== 123456789012345678901234567890 *** 1 ** 2 * 3 (b)(10分) 函式fb的prototype 為 void fb(int n, int m[],int m_size) 其中n為底長度,m為對齊邊界陣列m_size為m的大小,印出m個倒三角形. ===== 執行範例 n=5 m{ 5, 15, 20} m_size=3 ===== 123456789012345678901234567890 ***** ********** 1 **** **** **** 2 *** *** *** 3 ** ** ** 4 * * * 5 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.112.242.174