C语言字符数组排序……

//下列程序的功能是对5个字符按从小到大排序
#include<stdio.h>
#include<string.h>
main()
{
char a[5][10],t[10];
int i,j,k;
for(i=0;i<5;i++)
scanf("%s",&a[i]);
for(i=0;i<5;i++)
{
k=i;
for(j=i+1;j<5;j++)
if(a[i]>a[j])
k=j;
if(k==i)
{
strcpy(t,a[k]);
strcpy(a[k],a[i]);
strcpy(a[i],t);
}
}
for(i=0;i<5;i++)
printf("%s\n",a[i]);
}

我这个程序有哪个语句写错了吗,运行结果不对

供参考:

#include<stdio.h>
#include<string.h>
main()
{
    char a[5][10],t[10];
    int i,j,k;
    for(i=0;i<5;i++)
           scanf("%s",a[i]);//scanf("%s",&a[i]);
    for(i=0;i<5;i++)
    {
       k=i;
       for(j=i+1;j<5;j++)
           if(strcmp(a[k],a[j])>0)//if(a[i]>a[j])
               k=j;
       if(k!=i) //if(k==i)
       {
           strcpy(t,a[k]);
           strcpy(a[k],a[i]);
           strcpy(a[i],t);
       }
    }
    for(i=0;i<5;i++)
        printf("%s\n",a[i]);
}

#include<stdio.h>
#include<string.h>
main()
{
    char a[5][10],t[10];
    int i,j;
    for(i=0;i<5;i++)
        scanf("%s",a[i]);//a[i]就是字符串首地址,不需要加&
    for(i=0;i<5;i++)
    {        
        for(j=i+1;j<5;j++)
        {
            if(strcmp(a[i],a[j])>0)//字符串比较大小用strcmp函数
            {//满足条件直接交换
                strcpy(t,a[i]);
                strcpy(a[i],a[j]);
                strcpy(a[j],t);
            }
        }
    }
    for(i=0;i<5;i++)
        printf("%s\n",a[i]);
}