先将输入的一系列整数中的最小值与第一个数交换,然后将最大值与最后一个数交换,最后输出交换后的序列,问题在哪

问题遇到的现象和发生背景 问题在哪
问题相关代码,请勿粘贴截图 #include <stdio.h>

输入格式: 输入在第一行中给出一个正整数N(≤10),第二行给出N个整数,数字间以空格分隔。 输出格式: 在一行中顺序输出交换后的序列,每个整数后跟一个空格。
int main()
{
int i, N, a[10], max, min, t;
scanf("%d\n", &N);
for (i = 0; i < N; i++)
scanf("%d ", &a[i]);
min = a[0], max = a[N - 1];
for (i= 1; i< N; i++)
if (a[i] < min) a[i] = min, a[0] = t, a[0] = a[i], a[i] = t;
for (i = 0; i < N - 1; i++)
if (a[i] > max) a[i] = max, a[N - 1] = i, a[N - 1] = a[i], a[i] = t;
for (int i = 0; i < N; i++)
printf("%d ", a[i]);
return 0;
}

运行结果及报错内容 结果是0 0 0 0 4
我的解答思路和尝试过的方法
我想要达到的结果

你这个交换有问题,给你更改下
代码:

int i, N, a[10], max, min, t=0;
    scanf("%d\n", &N);
    for (i = 0; i < N; i++)
    {
        scanf("%d", &a[i]);
    }   
    min = a[0], max = a[N - 1];
    for (i = 0; i < N; i++)
    {
        if (a[i] < min)
        {
            min = a[i];  //记录最小值
            int temp = a[0];
            a[0] = a[i];
            a[i] = temp;
            /*a[i] = min;
            a[0] = t;
            a[0] = a[i];
            a[i] = t;*/
        }
    }  
    
    for (i = 0; i < N - 1; i++)
    {
        if (a[i] > max)
        {
            max = a[i];   //记录最大值
            int temp = a[N-1];
            a[N - 1] = a[i];
            a[i] = temp;
            /* a[i] = max;
             a[N - 1] = i;
             a[N - 1] = a[i];
             a[i] = t;*/
        }
    }      
    for (int i = 0; i < N; i++)
    {
        printf("%d ", a[i]);
    }
        
    return 0;

效果:

img


有用望采纳