C++與演算法

自訂函式

除了使用別人寫好的函式,你也可以自製函式


語法 - 宣告函式

  • 參數 : 函式的輸入

  • 回傳值 : 函式的輸出

  • 宣告函式在 using namespace std; 之下 、 int main() 之上

  • 函式一旦執行到return,就會立刻回傳,略過之後所有程式碼

回傳值型態 函式名稱(參數1型態 參數名稱1, 參數2型態 參數名稱2, ... )
{
    Do anything you want...

    return 回傳值;
}



範例1 - 網咖算帳 (有回傳值函式)

洛亞網咖收費標準如下:

前三小時,每小時30元

第四小時起,每小時20元

輸入說明

一個整數 n 代表打咖 n 小時

輸出說明

打咖 n 小時共要付多少錢

code

#include<iostream>
using namespace std;

int pay( int hour )
{
    if( hour <= 3 )
    {
        return hour*30;
    }
    else
    {
        return 3*30 + (hour-3)*20;
    }
}

int main()
{
    int n;

    while( cin >> n )
    {
        cout << pay(n) << endl;
    }

    return 0;
}



範例2 - 動物小劇場 (無回傳值函式)

  • 函式也可以只是單純執行某段程式,而不是為了算出回傳值

  • 若是想要宣告沒有回傳值的函式,回傳值型態可以打void

output

   .-.
  /'v'\
 (/   \)
='="="===<
mrf|_|
麻雀:早安~
         /\_/\
    ____/ o o \
  /~____  =o= /
 (______)__m_m)
貓:我要吃掉你!
   .-.
  /'v'\
 (/   \)
='="="===<
mrf|_|
麻雀:不要><

code

#include<iostream>
using namespace std;

void bird()
{
    cout << "   .-." << endl;
    cout << "  /'v'\\" << endl;
    cout << " (/   \\)" << endl;
    cout << "='=\"=\"===< " << endl;
    cout << "mrf|_|" << endl;
}

void cat()
{
    cout << "         /\\_/\\" << endl;
    cout << "    ____/ o o \\" << endl;
    cout << "  /~____  =o= /" << endl;
    cout << " (______)__m_m)" << endl;
}

int main()
{
    bird();
    cout << "麻雀:早安~" << endl;

    cat();
    cout << "貓:我要吃掉你!" << endl;

    bird();
    cout << "麻雀:不要><" << endl;

    return 0;
}

試試看

  • 幫麻雀加上一些呆毛,會兩隻麻雀都改變嗎?



函式的好處

  • 把程式拆成一個一個小區塊,方便與人分工合作。

  • 把經常出現的程式碼寫成函式,可以增加可讀性維護性