c语言调换最值问题求解

这段代码在vs中可以正常运行出结果,但是在
头歌平台却运行不出来,请问是哪里的问题,如果可以的话,希望能帮帮我,如果能给个更优解就更好了。

img

#include 
int main()
{
    int i, t, maxi, mini, l, n, max, min;

    printf("Input n(n<=10):");
    scanf("%d", &n);
    int a[n];

    printf("Input %d Numbers:\n", n);
    for (i = 0; i < n; i++)
    {
        scanf("%d", &a[i]);
    }
    maxi = mini = a[0];
    for (i = 0; i < n; i++)
    {
        if (a[i] < maxi)
        {
            maxi = a[i];
            max = i;
        }
    }
    for (i = 0; i < n; i++)
    {
        if (a[i] > mini)
        {
            mini = a[i];
            min = i;
        }
    }
    if ((max+min)==(n-1))
    {
        t = a[min];
        a[min] = a[max];
        a[max] = t;
    }
    else
    {
        t = a[max];
        a[max] = a[0];
        a[0] = t;
        l = a[min];
        a[min] = a[n - 1];
        a[n - 1] = l;
    }
    printf("After MaxMinExchange:\n");
    for (i = 0; i < n; i++)
        printf("%d ", a[i]);
}

测试图看能否满足你意,代码仅供参考。谢谢!

img

img

img

#include<stdio.h>
#include<limits.h>

void MaxMinExchange(int *arr, int count)
{
    int *p = arr;
    int min = INT_MAX, max = INT_MIN;
    int min_i, max_i;
    int arr1[count];
    int *p1 = arr1;

    for (int i = 0; i < count; i++)
    {
        if (p[i] <= min)
        {
            min_i = i;
            min = p[i];
        }
        if (p[i] >= max)
        {
            max_i = i;
            max = p[i];
        }
    }

    // 防止最大或最小的数有重复数字出现必须要这么做!
    int m = 0;
    for (int i = 0; i < count; i++)
    {
        if (p[i] == min)
        {
            *p1++ = min;
            ++m;
        }
    }

    for (int i = 0; i < count && m <= count; i++)
    {
        if (p[i] != min && p[i] != max)
        {
            *p1++ = p[i];
            ++m;
        }
    }

    for (int i = 0; i < count && m <= count; i++)
    {
        *p1++ = max;
        ++m;
    }

    for (int i = 0; i < count; i++)
    {
        arr[i] = arr1[i];
    }

}


int main()
{
    int i, t, maxi, mini, l, n, max, min;

    printf("Input n(n<=10):");
    scanf("%d", &n);
    int a[n];

    printf("Input %d Numbers:\n", n);
    for (i = 0; i < n; i++)
    {
        scanf("%d", &a[i]);
    }

    MaxMinExchange(a, n);


    printf("After MaxMinExchange:\n");
    for (i = 0; i < n; i++)
        printf("%d ", a[i]);
}

平台用的什么编译器版本,int a[n];不一定支持,改用malloc分配内存