将数组中元素最大的值和第一个数组元素交换位置,最小的值和最后一个交换位置

想实现数组中最大值和与第一个数组元素交换位置,最小的元素和最后一个值交换位置,但是运行结束后却没有结果,希望各位能帮忙看一看问题出在哪里了
#include <stdio.h>

int main() {
int a[5];
int i, t, max, min;

for (i = 0; i < 5; i++) {
    scanf("%d", &a[i]);
}


max = a[0];
min = a[4];

for (i = 0; i < 5; i++) {
    if (a[i] > max)
        t = i;
}

if (t != 0) {
    a[0] = a[t];
    a[t] = max;
}

t = 0;

for (i = 0; i < 5; i++) {
    if (a[i] < min)
        t = i;
}

if (t != 4) {
    a[4] = a[t];
    a[t] = min;
}

printf("%s", a);

return 0;

}

交换逻辑不太对,然后你最后也没输出

#include <stdio.h>
int main() 
{
    int a[5];
    int i, t=0, max, min;
    for (i = 0; i < 5; i++) {
        scanf("%d", &a[i]);
    }
    max = a[0];
    min = a[4];
    for (i = 0; i < 5; i++) {
        if (a[i] > max){
            max = a[i];
            t = i;
        }
    }
    int tem=a[0];
    a[0] = a[t];
    a[t] = tem;
    t = 4;
    for (i = 0; i < 5; i++) {
        if (a[i] < min){
            t = i;
            min = a[i];
        }
    }
    tem = a[4];
    a[4] = a[t];
    a[t] = tem;
    for(i=0;i<5;i++)
        printf("%d ",a[i]);

    return 0;
}