从键盘输入8个整数存入一个一维整型数组,将这8个整数中的偶数排在前,奇数排在后,且偶数部分按降序排列,奇数部分按升序排列,最后输出排序结果。
#include <stdio.h>
void sort(int arr[], int size) {
int i, j, temp;
// 分离奇偶数
int even = 0, odd = size - 1;
while (even < odd) {
while (arr[even] % 2 == 0 && even < size) even++;
while (arr[odd] % 2 != 0 && odd >= 0) odd--;
if (even < odd) {
temp = arr[even];
arr[even] = arr[odd];
arr[odd] = temp;
}
}
// 偶数部分按降序排列
for (i = 0; i < even - 1; i++) {
for (j = i + 1; j < even; j++) {
if (arr[i] < arr[j]) {
temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
}
}
// 奇数部分按升序排列
for (i = even; i < size - 1; i++) {
for (j = i + 1; j < size; j++) {
if (arr[i] > arr[j]) {
temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
}
}
}
int main() {
int i, arr[8];
printf("请输入8个整数:\n");
for (i = 0; i < 8; i++) {
scanf("%d", &arr[i]);
}
sort(arr, 8);
printf("排序后的结果为:\n");
for (i = 0; i < 8; i++) {
printf("%d ", arr[i]);
}
printf("\n");
return 0;
}