副程式
function
副程式的好處—模組化
印出一個火箭,下空5行後,有一個男生,再空5行後,有一個女生,然後是一個男生
火箭
空5行
男生
空5行
女生
男生
由重覆的部件構成:
火箭:
男生:
女生:
模組化後只要寫一次
要修改也只要改一處
副程式範例—印長方形
副程式
主程式
副程式範例—印長方形
副程式的內容
主程式呼叫副程式來執行
利用debug的逐行執行來看程式執行順序
副程式範例—印長方形
回傳資料的型態
void 代表無回傳資料
副程式的名稱
輸入參數的型態和名稱
若無參數,則空白即可
呼叫時,以副程式的名稱呼叫
小括號內要按順序傳給對應參數的變數
副程式範例—印長方形
length
主程式:
width
3
5
l
副程式draw_rectangle:
w
3
5
i
j
副程式範例—每月天數
副程式的內容
主程式呼叫副程式
副程式GetDay
用參數month執行運算
並回傳
回傳的資料
被存到day裡
回傳資料型態
為 整數 int
回傳資料
並離開副程式
副程式的位置
先行宣告
記得最後
要加 ;
副程式範例—組合C(n,m)
利用副程式Factorial(階乘)
進行計算
被 Combi 呼叫
需要放在 Combi 前面
回傳資料可計算、可指定給其他變數、直接輸出
利用副程式模組化後
程式變得精簡,易讀(對debug有很大幫助)
印出一個火箭,下空5行後,有一個男生,再空5行後,有一個女生,然後是一個男生
void draw_rocket(void); /*畫火箭*/
void draw_female(void); /*畫女生*/
void draw_male(void); /*畫男生*/
void draw_circle(void); /*畫圓*/
void draw_intersect(void); /*畫交叉線*/
void draw_base(void); /*畫橫線*/
void draw_rectangle(void); /*畫正方形*/
void draw_triangle(void); /*畫三角形*/
void skip_5_lines(void); /*空5行*/
火箭
空5行
男生
空5行
女生
男生
數
學
函
式
開根號(square root)
double sqrt(double x);
回傳型態
輸入參數型態
a = sqrt(x);
a = sqrt(121);
🡺a 為11
🡺a 為x的平方根
#include <cmath>
次方(power)
double pow(double x, double y);
有2個輸入參數
a = pow(x,y);
a = pow(1.5,0.3);
🡺a 為1.50.3
🡺a 為x的y次方
底數
次方
對數(以10為底)
double log10(double x);
a = log10(x);
a = log10(1.5);
🡺a 為log101.5
🡺a 為log10x
不大於x的最大整數(首數)
double floor(double x);
a = floor(x);
a = floor(1.5);
🡺a 為1
🡺a 為x的首數
a = floor(2);
🡺a 為2
a = floor(-2.2);
🡺a 為-3
a = floor(-4);
🡺a 為-4
不小於x的最小整數
double ceil(double x);
a = ceil(x);
a = ceil(1.5);
🡺a 為2
🡺a 為不小於x的最小整數
a = ceil(2);
🡺a 為2
a = ceil(-2.2);
🡺a 為-2
a = ceil(-4);
🡺a 為-4
絕對值(整數)
int abs(int x);
a = abs(x);
a = abs(1);
🡺a 為1
🡺a 為|x|
a = abs(-2);
🡺a 為2
a = abs(2.2);
🡺錯誤
整數型態
絕對值(浮點數)
double fabs(double x);
a = fbs(x);
a = fbs(1.2);
🡺a 為1.2
🡺a 為|x|
a = fbs(-2.2);
🡺a 為2.2
j957: 月刊期數
輸入說明:
輸入兩個整數 Y、M (0<=Y<=150、1<=M<=12) 代表該期月刊出版的年度以及月份。
輸出說明:
請輸出它是第幾期的月刊,但如果該月份月刊還沒創刊( 90 年 7 月(含)以前)或是還沒發行( 101 年 8 月(含)以後),則請輸出 0。
輸入範例1:
輸入1:
92 1
輸出1:
18
輸入範例2:
輸入2:
88 8
輸出2:
0
j958: 停車費
某一停車場的停車費率規則如下:
前 30 分(含)鐘免費。
停車 31 ~ 60 分鐘 30 元。
停車 61 ~ 120 分鐘 60 元。
接下來每一小時增加 30 元,例如 121~ 180 分鐘 90 元、 181~ 240 分鐘 120 元,以此類推。
每日停車費最高為 210 元,例如停了 11 小時又 30 分鐘,原本應該是收費 30×12=360,但只要收 210 元就好。
輸入說明:
輸入四個整數 H1、M1、H2、M2 (0<=H1、H2<=23,0<=M1、M2<=59),
H1:M1 代表車子進場的時間,H2:M2 代表車子出場的時間,而且出場時間一定在進場時間之後。
輸出說明:
請輸出需要繳的停車費是多少(不用考慮跨日的情形)。
輸入範例1:
輸入1:
7 10 7 30
輸出1:
0
輸入範例2:
輸入2:
8 10 9 20
輸出2:
60
j959: 統一發票
頭獎:和頭獎中獎號碼完全相同者,可得 20 萬。
二獎:末七碼和頭獎中獎號碼末七位相同者,可得 4 萬元。
三獎:末六碼和頭獎中獎號碼末六位相同者,可得 1 萬元。
四獎:末五碼和頭獎中獎號碼末五位相同者,可得 4 千元。
五獎:末四碼和頭獎中獎號碼末四位相同者,可得 1 千元。
六獎:末三碼和頭獎中獎號碼末三位相同者,可得 2 百元。
輸入說明:
輸入資料有兩組八位數的號碼,第一組是頭獎中獎號碼,第二組是發票上的號碼。
輸出說明:
請你輸出這張發票可以得到多少獎金(沒中獎請輸出 0)。
輸入範例1:
輸入1:
12345678 12345678
輸出1:
200000
輸入範例2:
輸入2:
12345678 54321678
輸出2:
200