課程名稱︰計算機程式(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