c++第二次做業

關於函數

1.爲何要用函數

函數是對一些數據指令的封裝,用函數能夠減小重複的代碼量,提升代碼的質量。有利於代碼重用,提升開發效率,加強程序的可靠性,也便於分工合做和修改維護。舉一個例子吧,若是你是一名理髮店裏的洗頭員工,你給第一位客人洗頭的時候,要去放毛巾的地方拿毛巾,去放洗頭護髮素的地方拿洗頭護髮素,第二位客人來的時候,你重複上面的行爲,若是客人不少,難道要一趟一趟的跑嗎,這個時候,若是你把洗頭護髮素第一次拿過來了,就把它放在那裏等着下次再用,就能夠不用跑那麼多趟了。函數的功能與此類似,節省重複的步驟。ios

2.爲何要用重載函數

什麼是重載函數
兩個以上的函數,具備相同的函數名,可是形參個數或類型不一樣,編譯器根據實參的個數或類型進行最佳匹配,自動肯定調用哪個函數,這就是函數的重載。

當有多個功能類似的函數都出如今一個main函數裏面被調用時,若是函數名各不相同,找到對應的要調用的那個函數相對比較難,須要一個一個的看函數內容。重載函數能夠解決這個問題。函數

/*這裏若是要對兩個數進行求和,在找函數時就顯得有點麻煩,尤爲是函數個數較多時*/
int add1(int x, int y)
int add2(float x, float y)
int add3(double x, double y)
#include<iostream>
using namespace std;
int add(int x, int y)
{
    return( x + y);
}
float add(float x, float y)
{
    return x + y;
}
double add(double x, double y)
{
    return x + y;
}
int main()
{
    int x, y;
    cin >> x >> y;

    float a,b;
    cin >> a >> b;

    double m, n;
    cin >> m >> n;
    cout<<"整型數的和爲"<<add(x, y)<<endl;
    cout<<"浮點數之和爲"<<add(m, n) << endl;
    cout<<"double型的和爲"<<add(a, b) << endl;
    return 0;
}

3.什麼是值傳遞

值傳遞是指當發生函數調用時,給形參分配內存空間,並用實參來初始化形參,這個過程是參數值的單向傳遞過程,一旦形參得到了值便於實參脫離關係,此後不管形參發生什麼改變,實參不會受影響spa

假設咱們要交換兩個數的值,應該怎麼作呢3d

#include<iostream>
using namespace std;
void swap_1(int x,int y)
{
    int t;
    t=x;
    x=y;
    y=t;
}

int main()
{
    int a,b;
    cin>>a>>b;
    cout<<"沒有交換時a,b爲  "<<a<<";"<<b<<endl;
    swap_1(a,b);//值不交換
    cout<<"調用函數1後a,b爲  "<<a<<";"<<b<<endl;
    return 0;
}
//結果展現
5 8
沒有交換時a,b爲  5;8
調用函數1後a,b爲  5;8

4.什麼是地址傳遞

#include<iostream>
using namespace std;
void swap_2(int &x,int &y)
{
    int t;
    t=x;
    x=y;
    y=t;
}
int main()
{
    int a,b;
    cin>>a>>b;
    cout<<"沒有交換時a,b爲  "<<a<<";"<<b<<endl;
    swap_2(a,b);//值交換
    cout<<"調用函數2後a,b爲  "<<a<<";"<<b<<endl;
    return 0;
}
//結果展現
5 8
沒有交換時a,b爲  5;8
調用函數2後a,b爲  8;5

5.如何編寫遞歸函數

以經典的漢諾塔爲例,想要把最大的盤子放在最下面,首先要把上面的其他盤子放在B上去,而又要將B的最大的盤子移過去,就又要把B的其他盤子放在A上,以此類推code

#include<iostream>
using namespace std;
void move(char src,char dest)
{
    cout<<src<<"-->"<<dest<<endl;
}
void hanoi(int n,char src,char medium,char dest)
{
    if(n==1)
        move(src,dest);
    else
    {
        hanoi(n-1,src,dest,medium);
        move(src,dest);
        hanoi(n-1,medium,src,dest);
    }
}
int main()
{
    int m;
    cout<<"輸入碟子數目"<<endl;
    cin>>m;
    cout<<"the steps to moving "<<m<<"diskes:"<<endl;
    hanoi(m,'A','B','C');
    return 0;
}
//結果展現
輸入碟子數目
3
the steps to moving 3diskes:
A-->C
A-->B
C-->B
A-->C
B-->A
B-->C
A-->C
相關文章
相關標籤/搜索
本站公眾號
   歡迎關注本站公眾號,獲取更多信息