C 實驗二(函式過載,函式模板,類)

2022-06-01 01:42:13 字數 3217 閱讀 8444

1.函式過載程式設計練習

實驗要求:編寫過載函式add(),實現對int型,double型,complex型資料的加法。在main()函式中定義不同型別資料,呼叫測試。

1 #include2

using

namespace

std;

3 typedef struct

complex;

7int add(int, int

); 8

double add(double, double);9

complex add(complex, complex);

10int

main()

1127

int add(int h, int i)//

整數相加函式

2831

double add(double j,double k)//

小數相加函式 32

35 complex add(complex l,complex m)//

複數相加函式

36

實驗結果如下:

2.函式模板程式設計練習

實驗要求:編寫實現快速排序函式模板,並在main()函式中,定義不同型別資料,呼叫測試。

1 #include2

using

namespace

std;

3 template //

實現函式模板

4void quicksort(t a,int left,int

right)520

while(q//

從左邊開始乙個個比較大小,同上

21 q++;

22if(q

2327

}28 a[q]=array;

29 quicksort(a,left,q-1);//

以第一次選中的值為中間值初步排序之後,進行第二次排序

30 quicksort(a,q+1

,right);31}

32}33int

main()34;

37double b[10]=;

38 quicksort(a,0,9

);39 quicksort(b,0,9

);40 cout<

整數陣列a由小到大排序的順序為:";

41for(n=0;n<10;n++)

42 cout

43 cout<

44 cout<

小數陣列b由小到大排序的順序為:";

45for(n=0;n<10;n++)

46 cout

47return0;

48 }

實驗結果如下:

3.類的定義、實現和使用程式設計練習

實驗要求:設計並實現乙個使用者類user,並在主函式中使用和測試這個類。每乙個使用者有使用者名稱(name), 密碼(passwd),聯絡郵箱(email)三個屬性。 支援設定使用者資訊setinfo()。允許設定資訊時密碼預設為6個1,聯絡郵箱預設為空串。 支援列印使用者資訊printinfo()。列印使用者名稱、密碼、聯絡郵箱。其中,密碼以6個*方式顯示。 支援修改密碼changepasswd()。在修改密碼前,要求先輸入舊密碼,驗證無誤後,才允許修改。 如果輸入舊密碼時,連續三次輸入錯誤,則提示使用者稍後再試,暫時退出修改密碼程式。 在main()函式中建立user類例項,測試user類的各項操作(設定使用者資訊,修改密碼,列印使用者資訊)

1 #include 2 #include 

3using

namespace

std;

4class

user;

15void user::setinfo(string name1,string password1,string

email1)

1630 cout<

31 cin>>email1;

32 name=name1;

33 password=password0;

34 email=email1;35}

36void

user::changeemail()

3749

if(a!=2)50

55} 56}

57void

user::changepassword()

5873

else

74 78}

79if(originalpassword==password)

8084}85

void

user::printinfo()

8691

intmain()

92

實驗結果如下:

參考**:

實驗小結:

對於本次實驗中三個程式,第乙個程式存在結構體方面知識的缺陷,第二個程式的演算法比較複雜,第三個程式不斷完整的過程中,通過類這個結構還可以將程式各方面更加完整。

程式一:在complex上糾結了很久,輸入實部虛部再進行相加的時候要帶上定義的conplex,反覆好幾次,錯誤都出現在complex上使得整個函式過載出現了問題,但是之後重新學習了一遍c中的結構體,發現只是在定義上出現了問題,以後可以注意!

程式二:這個程式一開始嘗試書寫的時候,是先看了氣泡排序,因為快速排序是氣泡排序的公升級,但是演算法上存在問題,也是由於演算法掌握不夠,現在這個程式還不算達到了實驗要求,這個程式還可以有很多優化,這是我自己的錯誤和不足,水平有限,希望能得到同學的提點斧正。

程式三:該程式再書寫的結構上不存在問題,只是有些語句的位置一開始錯了,接著就發現程式不按照自己既定的方向實現,更改多次後,還算完成了要求。之後學習中希望能夠有修改的機會!

C 筆記函式過載函式模板

include using namespace std class student void display 定義公用函式display 在函式的後面加上不加 結果都是一樣的一句話的結束符號 不影響函式的執行在c 中也允許函式的過載,即函式的一物多。include include using nam...

C 函式過載和函式模板

過載 不同的東西在不同場合有不同的含義,一物多用 例如 和 可以是移位運算子,在c 也是輸入輸出運算子 cout 和cin 函式過載 同名函式實現不同功能。函式過載實現方式 引數型別和引數個數至少乙個不同即可。優點 函式過載將相同或類似功能的函式用乙個函式名,但仍然要定義每個函式,於是函式模板派上用...

C 函式模板的過載

當需要對不同的型別使用同一種演算法 同乙個函式體 時,為了避免定義多個功能重複的函式,可以使用模板。然而,並非所有的型別都使用同一種演算法,有些特定的型別需要單獨處理,為了滿足這種需求,c 允許對函式模板進行過載,程式設計師可以像過載常規函式那樣過載模板定義。在 c 函式模板 一節中我們定義了 sw...