碰到乙個編輯題如下:
該題就是對選擇排序、函式過載的簡單應用。
由於實在無聊便將簡單問題複雜化,採用了才學習的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檔案。在編譯的時候,使用乙個東西,如果這個東西就在當前位置,當然好了。如果不再當前位置,也沒關係,只要...