第一行输入n《=10;第二行输入n个整数;然后经行调序,使输入的数字中的最大值和最小值分别放在最左和最右 其他数字对应的移项,,求指出错误

#include<stdio.h>

int main(void)
{
    int i,j,n,k,t,l;
    int min,max;
    int a[10];
    scanf("%d",&n);
    
    min=10000000;
    max=-10000000;
    
    for(i=0;i<n;i++)
    {
        scanf("%d",&a[i]);     //输入数组各项的值 
        if(a[i]>max)
        {
            max=a[i];       //找出最大的数组值及其下标数值 
            t=i;
        }
        if(a[i]<min)
        {
            min=a[i];       //找出最小的数组值及其下标数值 
            l=i;
        }
    }
    for(j=0;j<t;j++)           //最小值左侧整体右移 
    {
        a[j+1]=a[j];
        a[0]=min;
    }
    for(k=n-1;k>l;k--)          //最大值右侧整体左移 
    {
        a[k-1]=a[k];
        a[n-1]=max;
    }
    for(i=0;i<n;i++)
    {
        printf("%d",a[i]);       //调序后的结果 
    }
    return 0;
}

你应该把最小值和最大值的查找移位分开了操作,否则的话最大值或最小值的位置可能因为移位改变位置。

#include <stdio.h>

int main()
{
    const int N = 10;
    int a[N], n;
    scanf("%d", &n);
    for (int i = 0; i < n; i++)
        scanf("%d", &a[i]);

    int min = a[0];
    int j = 0;
    for (int i = 1; i < n; i++)
    {
        if (a[i] < min)
        {
            min = a[i];
            j = i;
        }
    }
    for (int i = j; i < n - 1; i++)
        a[i] = a[i + 1];
    a[n - 1] = min;

    int max = a[0];
    j = 0;
    for (int i = 1; i < n; i++)
    {
        if (a[i] > max)
        {
            max = a[i];
            j = i;
        }
    }
    for (int i = j; i > 0; i--)
        a[i] = a[i - 1];
    a[0] = max;

    for (int i = 0; i < n; i++)
        printf("%d ", a[i]);

    return 0;
}

其他数字对应的移项是啥意思啊?