交换问题,希望得到解答

问题遇到的现象和发生背景 将其中最大的数与第一个数对换,最小的数与最后一个数 对换。 尽力了但找不到错误,求解答
用代码块功能插入代码,请勿粘贴截图 #include

#include
int main()
{
int i;

int a[6],*p;
for (i=0;i<6;i++)
{
    scanf("%d",&a[i]);
}
int  b=a[0];
int c=a[5];
for(p=a;p<6+a;p++)
{
    if(a[0]<*p)
        a[0]=*p;
}
for(p=a;p<6+a;p++)
{
    if(a[0]==*p)
        *p=b;
        break;
}

for(p=a;p<6+a;p++)
{
    if(a[5]>*p)
        a[5]=*p;
}
for(p=a;p<6+a;p++)
{
    if(a[5]==*p)
        *p=c;
        break;
}
for(p=a;p<6+a;p++)
{
    printf("%d ",*p);
}
system("pause");

}

修改如下,供参考:

#include <stdio.h>
#include <stdlib.h>
int main()
{
    int i;
    int a[6], * p;
    for (i = 0; i < 6; i++)
    {
        scanf("%d", &a[i]);
    }
    int  b = a[0];
    int  c = a[0];  // c = a[5];
    for (p = a; p < 6 + a; p++)
    {
        if (b < *p)  //if (a[0] < *p)找最大值
            b = *p; //a[0] = *p;
        if (c > *p) //找到最小值
            c = *p;
    }
    for (p = a; p < 6 + a; p++)
    {
        if (b == *p) { //if(a[0] == *p)
            if (p != a) 
            {
                i = a[0];
                a[0] = *p;
                *p = i;
            }
            break;
        }
    }
    //for (p = a; p < 6 + a; p++)
    //{
    //    if (a[5] > *p)
    //        a[5] = *p;
    //}
    for (p = a; p < 6 + a; p++)
    {
        if (c == *p) {  //if (a[5] == *p)
            if (p != a + 6) {
                i = a[5];
                a[5] = *p;//*p = c;
                *p = i;
            }
            break;
        }
    }
    for (p = a; p < 6 + a; p++)
    {
        printf("%d ", *p);
    }
    return 0;
}