C语言:为什么输出不了a[i]?

问题遇到的现象和发生背景

为什么最后我输出不了a[i]?sup + 1是可以正常输出的。

用代码块功能插入代码,请勿粘贴截图
#include 
int main(){
    int n,k;
    scanf("%d %d",&n,&k);
    int arr[100] = {0};
    int num = 0; //记录1~k
    int sup = 0;//记录下标
    int survive = n;//记录存活的人数
    int a[100] = {0};
    int i = 1;
    while (survive >= k){
        if (arr[sup] == 0){
            num++;
            if (num % k == 0){
                survive--;
                arr[sup] = 1;
               printf("%d ",sup + 1);

                num = 0;

            }
        }
        sup = (sup + 1) % n;//1~n的下标

    }
    if (arr[sup] == 0){
        a[i] = sup + 1;
        i++;
        printf("%d ",a[i]);
    }
//    while (survive < k){
//
//    }

        return 0;
}

运行结果及报错内容
D:\clioncode_1\cmake-build-debug\homework3\josephus.exe
41 3
3 6 9 12 15 18 21 24 27 30 33 36 39 1 5 10 14 19 23 28 32 37 41 7 13 20 26 34 40 8 17 29 38 11 25 2 22 4 35
Process finished with exit code 0

28和29交换一下顺序吧