从键盘输入4个整数,要求设4个指针变量p1,p2,p3,p4,输出时按照先奇后偶的顺序输出,并且在奇数和偶数中分别按从小
1个回答

#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;

}我想这是最简洁的代码了,哪里不懂就追问.