求帮助,自己练习时遇到的一个有关问题,如何也看不出错哪了。

求帮助,自己练习时遇到的一个问题,怎么也看不出哪里错了。。
//有12个人围坐一圈,编写程序,使从一号开始,到达k号时,淘汰这个人,直到剩下最后一个,输出那个人的序号
#include<iostream.h>
void main()
{
int n=12;
int a[n]={1,2,3,4,5,6,7,8,9,10,11,12},k;
cout<<"12人围坐一圈,被数到k的人出局,k=?";
cin>>k;
cout<<"init-Data: =>";
for(int i=0;i<n;i++)
cout<<a[i]<<" ";//输出a[i]
cout<<endl;
int x=0;
for(i=0;i<n-1;i++)
{
int j=1;
while(j<k)//循环k次
{
if(a[x]!=0)
{
j++;
x++;
}
else
x++;

if(x==12)
x=0;


}
cout<<"delidx="<<x<<", ";

cout<<"a[delidx]="<<a[x]<<"; =>";
a[x]=0;
for(j=0;j<12;j++)
cout<<a[j]<<" ";
cout<<endl;
}
i=0;
while(a[i]==0)
{
i++;
}
cout<<"lastOneIdx="<<i<<",a[lastOneIdx]="<<a[i]<<endl;
}

------解决方案--------------------
改了下你的while循环。。。

C/C++ code
#include<iostream>
using namespace std;
int main()
{
    int a[12]={1,2,3,4,5,6,7,8,9,10,11,12};
    int k;
    cout<<"12人围坐一圈,被数到k的人出局,k=?";
    cin>>k;
    cout<<"init-Data: =>";
    for(int i=0;i<12;i++)
    {
        cout<<a[i]<<" ";//输出a[i]
    }
    cout<<endl;
    int x=0;
    for(int i=0;i<11;i++)
    {
        int j=1;
        while(j<k||a[x]==0)//循环k次
        {
            if(a[x]!=0)
            {
                j++;
                x++;
            }
            else
            {
                x++;
            }
            if(x==12)
            {
                x=0;
            }
        }
        a[x]=0;
        cout<<"delidx="<<x<<", ";
        cout<<"a[delidx]="<<a[x]<<"; =>";
        x++;
        if(x==12)
        {
            x=0;
        }
        for(j=0;j<12;j++)
        {
            cout<<a[j]<<" ";
        }
        cout<<endl;
    }
    int i=0;
    while(a[i]==0)
    {
        i++;
    }
    cout<<"lastOneIdx="<<i<<",a[lastOneIdx]="<<a[i]<<endl;
}