如何實現C 分離式編譯與選擇排序

2021-10-03 23:50:42 字數 2492 閱讀 4523

碰到乙個編輯題如下:

該題就是對選擇排序、函式過載的簡單應用。

由於實在無聊便將簡單問題複雜化,採用了才學習的c++中的分離式編譯進行編寫程式,有以下幾點值得注意:

1、對於函式的宣告應該位於.h的標頭檔案中

2、對於函式的定義應該位於.cc或.cpp的檔案中

3、在定義函式和使用函式的檔案中應該加上標頭檔案#include" .h",其後不用加分號「;」

建立標頭檔案的方法:

原始檔類似

**:(1)、主函式

#include

#include

#include

"sort.h"

//不用";"來表示結束

#include

"dataio.h"

using

namespace std;

const

int n =10;

intmain

(int ar**,

char

** argc)

(2)、輸入輸出函式宣告

#include

#include

using

namespace std;

void

datainput

(int

*ptr,

int n)

;void

datainput

(string* ptr,

int n)

;//函式過載

void

dataoutput

(int

* ptr,

int n)

;void

dataoutput

(string* ptr,

int n)

;//函式過載

(3)選擇排序宣告

#include

using

namespace std;

void

sort

(int

* ptr,

int n)

;void

sort

(string *ptr,

int n)

;//函式過載

(4)、函式定義

#include

#include

#include

"dataio.h"

#include

"sort.h"

using

namespace std;

void

datainput

(int

* ptr,

int n)

}void

datainput

(string* ptr,

int n)

}void

sort

(int

* ptr,

int n)

if(min != i)

//若未排序元素中含最小值則交換兩者的值}}

void

sort

(string* ptr,

int n)

if(min != i)}}

void

dataoutput

(int

* ptr,

int n)

cout << endl;

}void

dataoutput

(string* ptr,

int n)

cout << endl;

}

對於陣列的排序一定要注意下標是否訪問越界的問題

選擇排序將陣列分成兩部分,前面部分為已經排序的,後半部分則為無序陣列;如 5 78 23 45 10 66這個含6無序整數元素排序:

1、找到無序序列中最小元素 5 生成序列:5 78 23 45 10 66

2、找到無序序列中最小元素 10 生成序列:5 10 23 45 78 66//第五個數10與第二個數78互換位置

3、找到無序序列中最小元素 23 生成序列:5 10 23 45 78 66

4、找到無序序列中最小元素 45 生成序列:5 10 23 45 78 66

5、找到無序序列中最小元素 66 生成序列:5 10 23 45 66 78

C 分離式編譯

c 開發中廣泛使用宣告和實現分開的開發形式,其編譯過程是分離式編譯,就是說各個cpp檔案完全分開編譯,然後生成各自的obj目標檔案,最後通過鏈結器link生成乙個可執行的exe檔案。不需其他操作。在編譯main.cpp的時候,不需要知道呼叫的其他檔案中的函式的具體實現,只需要有個宣告,然後會有一條c...

C 中的分離式編譯

隨著程式越來越複雜,我們希望把程式的各個部分分別儲存在不同的檔案中。我們可以將原來的程式分成三個部分 pragma once ifndef game h define game h include using namespace std struct game void inputgame game...

C 不支援模版的分離式編譯

1 c 不支援模版的分離式編譯,為什麼?c 是分別,單獨編譯,對於每個cpp檔案,預編譯為編譯單元,這個編譯單元是自包含檔案,編譯的時候,不需要其他的檔案,編譯好了,生成obj檔案,然後連線成exe檔案。在編譯的時候,使用乙個東西,如果這個東西就在當前位置,當然好了。如果不再當前位置,也沒關係,只要...