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

从键盘输入4个整数,要求设4个指针变量p1,p2,p3,p4,输出时按照先奇后偶的顺序输出,并且在奇数和偶数中分别按从小到大的顺序排序.如:输入3 4 5 7;输出时p1指向3,p2指向5,p3指向7,p4指向4.(注意全为奇数或全为偶数的情况)
程序设计的题目,主要是运用指针
YALEE 1年前 已收到1个回答 举报

风中漫舞的鸟儿 幼苗

共回答了9个问题采纳率:77.8% 举报

#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;
}我想这是最简洁的代码了,哪里不懂就追问.

1年前

6
可能相似的问题
Copyright © 2024 YULUCN.COM - 雨露学习互助 - 16 q. 0.021 s. - webmaster@yulucn.com