C语言选择法排序,有时排序正确,有时异常,求大神指教

C语言选择法排序,有时排序正确,有时错误,求大神指教
#include<stdio.h>
int main()
{
    int i,j;
    int a[10];
    int temp;
    int k;
    printf("为数组元素赋初值:\n");
        for(i=0;i<10;i++)
    {
        printf("a[%d]=",i);
        scanf("%d",&a[i]);
    }
    for(i=0;i<10;i++)
    {
        k=i;
        for(j=i+1;j<10;j++)
        {
            if(a[j]<a[i])
                k=j;
        }
            if(k!=i)
            {
                temp=a[i];
                a[i]=a[k];
                a[k]=temp;
            }
    }
    for (i=0;i<10;i++)
    {
        printf("%d\t",a[i]);

    }
    return 0;
}
------解决方案--------------------
for(j=i+1;j<10;j++)
{
if(a[j]<a[k])//这儿错了把i改成k就行了,自己想想逻辑上的问题
k=j;
}