今天完成了C++第一次上機作業,感覺比較簡單。
題目:
- 求2個數或3個正整數中的最大數,用帶有預設引數的函式實現。
- 對3個變數按由小到大順序排序,要求使用變數的引用。
- 編寫一個程式,用同一個函式名對幾個資料進行從小到大排序,資料型別可以是整型、浮點型。用過載函式實現。
- 對第4題改用函式模板實現,並與第4題程式進行對比分析。
第一題程式碼:
1 #include<iostream> 2 using namespace std; 3 4 void max(int a=0,int b=0,int c=0) 5 { 6 a= a>b ? a : b; 7 a= a>c ? a : c; 8 cout<<a<<endl; 9 } 10 11 int main() 12 { 13 max(1,2); 14 max(1,2,3); 15 return 0; 16 }
第二題程式碼:
#include<iostream> using namespace std; void sort(int &a,int &b,int &c) { int tmp; if(a>b) {tmp=a;a=b;b=tmp;} if(b>c) {tmp=b;b=c;c=tmp;} if(a>b) {tmp=a;a=b;b=tmp;} } int main() { int a1=3,a2=2,a3=1; sort(a1,a2,a3); cout<<a1<<" "<<a2<<" "<<a3<<endl; }
第三題程式碼:
1 #include<iostream> 2 using namespace std; 3 4 void sort(int* a){ //氣泡排序 5 int t; 6 for(int j=4;j>0;j--) 7 for(int i=0;i<=j-1;i++) 8 if(a[i]>a[i+1]) 9 {t=a[i];a[i]=a[i+1];a[i+1]=t;} 10 for(int i=0;i<5;i++) 11 cout<<a[i]<<" "; 12 } 13 14 void sort(float* a){ 15 float t; 16 for(int j=4;j>0;j--) 17 for(int i=0;i<=j-1;i++) 18 if(a[i]>a[i+1]) 19 {t=a[i];a[i]=a[i+1];a[i+1]=t;} 20 for(int i=0;i<5;i++) 21 cout<<a[i]<<" "; 22 } 23 24 int main() 25 { 26 int a[5]={5,4,2,1,3}; 27 float b[5]={5.1,4.1,2.1,1.1,3.1}; 28 sort(a); 29 sort(b); 30 return 0; 31 } 32
第四題程式碼:
1 #include<iostream> 2 using namespace std; 3 template<typename T> 4 int Partition(T* cp,int low,int high) 5 { 6 T tmp=cp[low]; 7 T pivotkey=cp[low]; 8 while(low<high) 9 { 10 while(low<high&&cp[high]>=pivotkey) --high; 11 cp[low]=cp[high]; 12 while(low<high&&cp[low]<=pivotkey) ++low; 13 cp[high]=cp[low]; 14 } 15 cp[low]=tmp; 16 return low; 17 } 18 template<typename T> 19 void Qsort(T* cp,int low,int high) //快速排序 20 { 21 if(low<high) 22 { 23 int pivotloc=Partition(cp,low,high); 24 Qsort(cp,low,pivotloc-1); 25 Qsort(cp,pivotloc+1,high); 26 } 27 } 28 int main() 29 { 30 int a[5]={5,4,2,1,3}; 31 float b[5]={5.1,4.1,2.1,1.1,3.1}; 32 Qsort(a,0,4); 33 Qsort(b,0,4); 34 for(int i=0;i<5;i++) 35 { 36 cout<<a[i]<<" "<<b[i]<<endl; 37 } 38 return 0; 39 }
******