为什么k的值会被修改?

这是一道很简单的编程题,但为什么到最后一步交换值的时候,k的值会被修改。
原题:
输入10个整数,将其中最小的数与第一个数对换,把最大的数与最后一个数对换。
Input:
10个整数
Output:
整理后的十个数,每个数后跟一个空格(注意最后一个数后也有空格)
Sample Input:
2 1 3 4 5 6 7 8 10 9
Sample Output:
1 2 3 4 5 6 7 8 9 10

#include

void Input(int *a);
void Output(int *a);
int MaxPos(int *a);
int MinPos(int *a);

int main()
{
int a[9],i,j,t,k;

Input(a);
i = MaxPos(a);
j = MinPos(a);
t = a[0], k = a[9];
a[0] = a[j], a[j] = t;
a[9] = a[i], a[i] = k;
Output(a);

}

void Input(int *a)
{
int i;

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

}

void Output(int *a)
{
int i;

for(i=0;i<10;i++)
{
    printf("%d ",a[i]);
}

}

int MaxPos(int *a)
{
int i = 0,k,max;

max = a[i];

for(i=1;i<10;i++)
{
    if(a[i] > max)
    {
        max = a[i];
        k = i;
    }

}

return k;

}

int MinPos(int *a)
{
int i = 0,k,min;

min = a[i];

for(i=1;i<10;i++)
{
    if(a[i] < min)
    {
        min = a[i];
        k = i;
    }

}

return k;

}