1. 程式人生 > >實驗二 引用與函式

實驗二 引用與函式

實驗目的和要求

1.熟悉引用的概念,掌握引用的定義方法,學會引用在C++程式中的應用

2.掌握函式的定義和呼叫方法

3.練習過載函式的使用。

實驗內容

1.除錯下列程式,寫出輸出結果,並解釋輸出結果。

(1)//sy2-1.cpp
#include<iostream>
using namespace std;
int main()
{
    double dd=3.9,de=1.3;
    double &rdd=dd,&rde=de;
    cout<<rdd+rde<<','<<dd+de<<endl;
    rdd=2.6;
    cout<<rdd<<','<<dd<<endl;
    de=2.5;
    cout<<rde<<','<<de<<endl;
    return 0;
}

輸出結果如下:本函式採用賦值轉換的方式實現最終結果的輸出。

(2)//sy2-2.cpp
#include<iostream>
using namespace std;
int main()
{
    void fun(int,int&);
    int a,b;
    fun(2,a);
    fun(3,b);
    cout<<"a+b="<<a+b<<endl;
    return 0;
}
void fun(int m,int &n)
{
    n=m*4;
}

輸出結果如下:程式採用呼叫函式的方式計算a+b的值

(3)//sy2-3.cpp
#include<iostream>
using namespace std;
int &fun(int);
int aa[5];
int main()
{
    int a=5;
    for(int i(0);i<5;i++)
        fun(i)=a+i;
    for(int i=0;i<5;i++)
        cout<<aa[i]<<" ";
    cout<<endl;
    return 0;
}
int &fun(int a)
{
    return aa[a];
}

輸出結果如下:本程式採用呼叫函式fun和引用陣列的方式,計算長度為5的陣列的值並實現最終輸出結果。

2.編輯完成下列任務。

(1)編寫一個函式,用於將華氏溫度轉換為攝氏溫度,轉換公式為:C=(F-32)*5/9。

根據題意,所寫程式如下:

//sy2-4.cpp
#include<iostream>
using namespace std;
int main()
{
    double F=0;
   
    cout<<"請輸入需轉換的華氏溫度F:"<<endl;
    cin>>F;
     double C=0;
      C=(F-32)*5/9;
    cout<<"攝氏溫度C為:"<<C<<endl;
    return 0;
}
輸出結果如下:

(2)編寫過載函式max1可分別求取2個整數、3個整數、2個雙精度數和3個雙精度數的最大值。

根據題意,所寫程式如下:

//sy2-5.cpp
#include<iostream>
using namespace std;
int Max1(int a,int b)
{
  if(a>b)
        return a;
  else
    return b;
}
double Max1(double x,double y)
{
    if(x>y)
        return x;
    else
        return y;
}
int Max1(int a,int b,int c)
{
    return Max1(a,Max1(b,c));
}
double Max1(double x,double y,double z)
{
    return Max1(x,Max1(y,z));
}
int main()
{
    int a,b,c;
    cout<<"請輸入兩個整數:";
    cin>>a>>b;
    cout<<"最大值為:"<<Max1(a,b)<<endl;
    cout<<"請輸入3個整數:";
    cin>>a>>b>>c;
    cout<<"最大值為:"<<Max1(a,b,c)<<endl;
    double x,y,z;
    cout<<"請輸入2個雙精度數:";
    cin>>x>>y;
    cout<<"最大值為:"<<Max1(x,y)<<endl;
    cout<<"請輸入3個雙精度數:";
    cin>>x>>y>>z;
    cout<<"最大值為:"<<Max1(x,y,z)<<endl;
    return 0;
}

輸出結果如下:

分析與討論

1.總結引用的概念及用途

概念:所謂引用,就是給物件取一個別名,使用該別名可以存取該物件,即使新物件和舊物件共用一個地址,這樣無論對哪個物件進行修改都是對同一個地址的內容進行修改,因而原物件與新物件總是具有相同的值。
用途:引用的主要用途是用作函式的引數和函式的返回值。

2.函式的定義和呼叫方法

定義:從使用者的角度來看,C++有兩種函式:標準庫函式和使用者自定義函式。標準庫函式由C++系統定義並提供給使用者使用,可以看做對語言功能的擴充。使用者根據特定任務編寫的函式稱為自定義函式。
呼叫方法:函式呼叫指定了被呼叫函式的名字和所需的資訊(實參)。不管函式有無引數,都可以用兩種形式呼叫:函式語句或函式表示式。當呼叫作為一條語句時,函式可以沒有返回值;當函式調用出現在表示式中,必須帶有一個明確的返回值。

3.過載函式時通過什麼來區分?

編譯系統是將根據函式引數的型別和個數來判斷使用哪一個函式。

實驗總結

  通過本次實驗,我們初步掌握了函式的·定義、引用及相關含義。學會用簡單的函式進行編譯簡單的程式以進行簡單的運算,實現程式設計簡化的目的。第一次接觸過載函式,還有許多不懂的地方,通過書中的例子進一步對過載函式有了初步的瞭解,也通過各方面的資料查詢與程式模擬,終於編譯出以上求最大數的1程式。過程中出了技術性難度之外,細節也是必須得注意的。在進行程式編譯時一定要細心。