c语言 最小元素和最大元素交换,其他不变

c语言问题:输入8个数放入数组中,将最小的元素最大的元素进行交换。
例如:输入:5 6 1 8 7 2 9 4 ,当X=3时,输出:5 6 9 8 7 2 1 4

遍历一遍找出最大最小元素下标,然后进行交换

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