簡單的c 程式(實驗八)

2021-08-21 01:42:19 字數 3779 閱讀 7638

一、實驗目的和要求

1.能夠使用c++模板機制定義過載函式。

2.能夠例項化及使用模板函式。

3.能夠例項化和使用模板類。

4.應用標準c++模板庫(stl)通用演算法和函式物件實現查詢和排序。

二、實驗內容

1.分析並除錯下列程式,了解函式模板的使用。

#include

using

namespace

std;

template

<

class

t>

tmax(t

a,tb)

intmain

()

(1)寫出執行結果,分析編譯系統工作過程。

執行結果:

分析:將a和b進行比較,輸出兩個數中大的數,主函式中 cout<

(2)如果定義函式過載,**如下:

int max(int a,int b)

float max(float a,float b)

如果程式中有max('6','5');呼叫時會出現什麼錯誤?為什麼?上機除錯並分析原因。

定義函式過載後程式如下:

#include

using

namespace

std;

template

<

class

t>

tmax(t

a,tb)

intmax(int a,int b)

float

max(float a,float b)

intmain

()

執行結果:

2.分析除錯下列程式,了解特定模板函式的作用。

#include

using

namespace

std;

template

<

typename t>

t max

(t a,t b)

char* max

(char *a,char *b)

intmain

( )

(1)寫出執行結果。

(2) 說明特定模板函式的作用。

答:特定模板函式的作用是可以替換原本會自動從函式模板中建立的模板例項,用來替換的函式。

3.宣告乙個類模板,利用它實現10個整數、浮點數和字元的排序。

#include

#include

template

<

class

t>

class

mysort

void

dosort

(bool up = true)

} else

//降序

} }

} }

private:

t *stores;

}; int

main

()

; mysort<

int> mysort(nums);

mysort.dosort(

true);

//公升序

for(

int i =

0; i <

10; i++)

printf(

"%d ", nums[i]);

printf(

"\n");

//float

float nums1[

10] = ;

mysort<

float> mysort1(nums1);

mysort1.dosort(

false);

for(

int i =

0; i <

10; i++)

printf(

"%0.2f ", nums1[i]);

printf(

"\n");

// char

char chars[

10] = ;

mysort<

char> mysort2(chars);

mysort2.dosort();

for(

int i =

0; i <

10; i++)

printf(

"%c ", chars[i]);

printf(

"\n");

return

0;

} 4.宣告乙個整型陣列,使用c++標準模板庫(stl)中的查詢演算法find()進行資料的查詢,然後應用排序演算法sort()對資料進行公升序和降序排序。

#include

#include

using

namespace

std;

bool

largethan

(int x,int y)

intmain

()

; size_t arrsize=

7; int searchvalue=

5; vector

<

int> vec(a,a+arrsize);

vector

<

int>::iterator it=find(vec.begin(),vec.end(),searchvalue);

if(it==vec.end())

cout

<<

"not found"

<<

endl;

else

cout

<

endl;

//公升序

sort(vec.begin(),vec.end());

for(

vector

<

int>::iterator it=vec.begin();it!=vec.end();it++)

cout

<

cout

<<

endl;

//降序;

sort(vec.begin(),vec.end(),largethan);

for(

vector

<

int>::iterator it=vec.begin();it!=vec.end();it++)

cout

<

cout

<<

endl;

}三、分析與討論

1.結合實驗內容中第1題和第2題,說明編譯器匹配函式的過程。

2.結合實驗內容中第3題和第4題,比較利用自定義類模板排序和使用c++標準模板庫排序的過程。

四、實驗總結:

通過本次實驗,我們學習了使用c++模板機制定義過載函式,學會例項化及使用模板函式,例項化及使用模板類,應用標準c++模板庫通用演算法和函式物件實現查詢與排序。

實驗一 簡單的C 程式

實驗1 簡單的c 程式 一 實驗目的和要求 1 熟悉visual c 6.0編譯系統的常用功能 2 學會使用visual c 6.0編譯系統實現簡單的c 程式 3 熟悉c 程式的基本結構,學會使用簡單的輸入 輸出操作。二 實驗內容 1 編譯下列程式,改正所出現的錯誤資訊,並寫出輸出結果。1 sy1 ...

實驗1簡單的C 程式

實驗目的和要求 1熟悉code blocks 16.01編譯系統的常用功能 2.學會使用code blocks 16.01編譯系統實現簡單的c 程式 3.熟悉c 程式的基本結構,學會使用簡單的輸入 輸出操作 實驗內容 1.編譯下列程式,改正所出現的錯誤資訊,並寫出輸出結果 錯誤程式如下 1 sy1 ...

實驗1 簡單的C 程式

熟悉visual c 6.0 code blocks編譯系統的常用功能。學會使用visual c 6.0 code blocks編譯系統實現簡單的c 程式。熟悉c 程式的基本結構,學會使用簡單的輸入 輸出操作。1.編譯以下程式,改正所出現的錯誤資訊,並寫出輸出結果。1 sy1 1.cpp main ...