計算機考研複試真題 整數奇偶排序
阿新 • • 發佈:2018-11-21
題目描述
輸入10個整數,彼此以空格分隔。重新排序以後輸出(也按空格分隔),要求: 1.先輸出其中的奇數,並按從大到小排列; 2.然後輸出其中的偶數,並按從小到大排列。輸入描述:
任意排序的10個整數(0~100),彼此以空格分隔。
輸出描述:
可能有多組測試資料,對於每組資料,按照要求排序後輸出,由空格分隔。 1. 測試資料可能有很多組,請使用while(cin>>a[0]>>a[1]>>...>>a[9])類似的做法來實現; 2. 輸入資料隨機,有可能相等。示例1
輸入
4 7 3 13 11 12 0 47 34 98
輸出
47 13 11 7 3 0 4 12 34 98
//計算機考研複試真題 整數奇偶排序 /* 程式設計思想: 1.輸入用例。首先把奇數加到向量v1中,然後進行降序排序。 2.然後把偶數加到向量v2中,然後進行升序排序。 3.最後分別輸出兩個向量。 */ //程式實現: #include<iostream> #include<algorithm> #include<vector> using namespace std; bool cmp(int x, int y)//降序 { return x>y ? true : false; } int main() { int num; vector<int> a(10); while(cin>>a[0]>>a[1]>>a[2]>>a[3]>>a[4]>>a[5]>>a[6]>>a[7]>>a[8]>>a[9]){ vector<int>v1, v2; for (int i = 0; i<10; ++i) { if (a[i] % 2 != 0) v1.push_back(a[i]); else v2.push_back(a[i]); } sort(v1.begin(), v1.end(), cmp); //降序 sort(v2.begin(), v2.end()); //升序 for (int j = 0; j<v1.size(); ++j) cout << v1[j] << " "; for (int k = 0; k<v1.size(); ++k) cout << v2[k] << " "; } return 0; }