数字倒序输出 这样为什么错了

问题描述
给一个数n(0<n<=32767),逆序打印出各位数字,并求它是几位数。

输入
输入数据有多组,每组占一行,由一个整数组成。

输出
对于每组输入数据,输出一行,该行有两个数,一个数是n的各位数字的逆序,一个数是n的位数,它们以一个空格隔开。

输入样列
12345
34
100
789
输出样例
54321 5
43 2
001 3
987 3

#include<stdio.h>
int main()
{
    int n,k,i;
    int a[6];
    while(~scanf("%d",&n)){
        k=0;
        do{
            a[k]=n%10;
            k++;
            n=n/10;
        }while(n!=0);
        for(i=0;i<k;i++){
            printf("%d",a[k]);
        }
        printf(" %d\n",k);
    }
    return 0;
}

代码修改如下

#include<stdio.h>
int main()
{
    int n,k,j;
    int a[6];
    while(~scanf("%d",&n))
    {
        k=0;
        do {
            a[k]=n%10;
            k++;
            n=n/10;
        } while(n!=0);
        for(j=0; j<k; j++)
        {
            printf("%d",a[j]);//改了
        }
        printf(" %d\n",k);
    }
    return 0;
}