求解广大网友大家一下

从键盘输入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;
}