要求读入若干整数(最少1个不超过4个),然后按从小到大的顺序输出

本题目要求读入若干整数(最少1个不超过4个),然后按从小到大的顺序输出。

输入格式:
最少1个不超过4个整数,以空格分隔。

输出格式:
以一个空格分隔输出所有排序后的数。

输入样例:
18
输出样例:
18
输入样例:
18 15
输出样例:
15 18
输入样例:
1 8 6
输出样例:
1 6 8
输入样例:
11 28 5 9
输出样例:
5 9 11 28
代码长度限制
16 KB
时间限制
400 ms
内存限制
64 MB
我的代码是

#include
int main()
{
    int i=-1,j,k,t,a[4];
    do{
    i++;
    scanf("%d",&a[i]);
    }while (getchar()!='\n');
    for (j=0;j<=i;j++){
      for (k=i;k>j;k--)
        if (a[k]-1]) {
            t=a[k];
            a[k]=a[k-1];
            a[k-1]=t;
           }
    printf("%d",a[j]);
    if (j!=i) printf(" ");
    }
    return 0;
}

问一下,为什么我这个会运行超时啊?

很大的可能是没退出,建议写!=EOF