#include
int main() {
std::cout << "input 4 numbers:";
int a, b, c, d;
std::cin >> a >> b >> c >> d;
int *p1 = &a, *p2 = &b, *p3 = &c, *p4 = &d;
// 思路
// 按照先奇后偶,先小后大的顺序排序..
// 为方便排序,做二级指针数组
// 用冒泡排序
int **p[4] = {&p1, &p2, &p3, &p4};
// 将最大的沉底
for (int i = 0; i < 4; ++i) {
bool swap = false;
for (int j = 0; j < 3 - i; ++j) {
int t0 = **p[j] % 2;
int t1 = **p[j + 1] % 2;
// 如果 t0 < t1,说明 **p[j] 是偶数,**p[j+1]是奇数
// 如果 t0 == t1,说明 奇偶相同,然后判断 大小..
if ((t0 < t1) || (t0 == t1 && **p[j] > **p[j + 1])) {
int *t = *p[j];
*p[j] = *p[j+1];
*p[j+1] = t;
swap = true;
}
}
if (!swap) {
break;
}
}
std::cout << *p1 << " " << *p2 << " " << *p3 << " " << *p4 << std::endl;
return 0;
}我想这是最简洁的代码了,哪里不懂就追问.