12个人围成一个圈,任意输入一个数字n,从第一个人开始数,数到n,这个人被淘汰,然后继续数,直到剩

12个人围成一个圈,任意输入一个数字n,从第一个人开始数,数到n,这个人被淘汰,然后继续数,直到剩下一个人,输出每淘汰一个人的结果和最后剩下的那个人。帮我看看这个代码,显示运行错误。#include<iostream>
#include<iomanip>
using namespace std;
int main()
{
int n,move=0,i=0,j=0;
cin>>n;
int a[12];
for(i=0;i<12;i++)
a[i]=i+1;
while(move<11)
{
if(a[i]!=0)
j++;
if(j==n)
{
a[i]=0;
move++;
j=0;
for(int m=0;m<12;m++)
cout<<setw(3)<<a[m];
cout<<endl;
}
i++;
if(i==12)
i=0;
}
for(i=0;i<12;i++)
{
if(a[i]!=0)
cout<<setw(3)<<a[i];
}
return 0;
}

for(i=0;i<12;i++)
a[i]=i+1;
再加一句加一句 i=0就好了,否则i=12,在第一次判断if(a[i]!=0)时就会运行错误。
while(move<11)
{
if(a[i]!=0)
j++;
if(j==n)
{
a[i]=0;
move++;
j=0;
for(int m=0;m<12;m++)
cout<<setw(3)<<a[m];
cout<<endl;
}
i++;
if(i==12)
i=0;
}
for(i=0;i<12;i++)
{
if(a[i]!=0)
cout<<setw(3)<<a[i];
}
return 0;
}
温馨提示:答案为网友推荐,仅供参考
相似回答