定义一个一维整形数组num[20],输入正整数N(N≤20)代表num的实际元素个数,输入N个任意整数到num中,编写函数sort()实现排序处理,完成前面奇数,后面偶数,分别从小到大排序。

定义一个一维整形数组num[20],输入正整数N(N≤20)代表num的实际元素个数,输入N个任意整数到num中,编写函数sort()实现排序处理,完成前面奇数,后面偶数,分别从小到大排序。使用指针完成地址传递,主函数完成N、数组元素的输入和处理后的数组元素输出。

img


#include <vector>
int main()
{
    int num[20];
    int n = 0;
    cout << "请输入数量";
    cin >> n;
    cout << "请输入" << n << "个数字";
    for (int i = 0; i < n; ++i)
    {
        cin >> num[i];
    }

    vector<int> res;
    vector<int> res2;
    //添加奇数
    for (int i = 0; i < n; ++i)
    {
        if (num[i] % 2 != 0)
        {
            res.push_back(num[i]);
        }
    }
    //添加偶数
    for (int i = 0; i < n; ++i)
    {
        if (num[i] % 2 == 0)
        {
            res2.push_back(num[i]);
        }
    }

  
    //排序
    for (int i = 0; i < res.size(); ++i)
    {
        for (int j = i + 1; j < res.size(); ++j)
        {
            if (res[i] > res[j])
            {
                swap(res[i], res[j]);
            }
        }
    }

    for (int i = 0; i < res2.size(); ++i)
    {
        for (int j = i + 1; j < res2.size(); ++j)
        {
            if (res2[i] > res2[j])
            {
                swap(res2[i], res2[j]);
            }
        }
    }

    

    cout << "排序后结果" << endl;
    for (int i = 0; i < res.size(); ++i)
    {
        cout << res[i] << endl;
    }
    for (int i = 0; i < res2.size(); ++i)
    {
        cout << res2[i] << endl;
    }
    

    return 0;
}
#include <stdio.h>

void swap(int *a, int *b)
{
    int t = *a;
    *a = *b;
    *b = t;
}

int needs_swap(int a, int b)
{
    if (a % 2 == 0 && b % 2 != 0)
        return 1;
    if (a % 2 != 0 && b % 2 == 0)
        return 0;
    return a > b;
}

void sort(int a[], int N)
{
    for (int i = 0; i < N - 1; i++)
        for (int j = i + 1; j < N; j++)
            if (needs_swap(a[i], a[j]))
                swap(&a[i], &a[j]);
}

int main()
{
    int a[20], N;
    scanf("%d", &N);
    for (int i = 0; i < N; i++)
        scanf("%d", &a[i]);
    sort(a, N);
    for (int i = 0; i < N; i++)
        printf("%d ", a[i]);
    printf("\n");
    return 0;
}
$ gcc -Wall main.c
$ ./a.out
5
5 4 3 2 1
1 3 5 2 4