报到3的倍数的人退出
题目:
17个人围成圈,编号为1~17,从第1号开始报数,报到3的倍数的人离开,一直数下去,直到最后只剩下1人。求此人的编号。
我的程序:(先试5个人的,正确结果应是:00040,我却得到:02040)
#include <iostream.h>
void output(int a[],int n)
{
int i;
for(i=0;i<n;i++)
cout<<a[i]<<" ";
cout<<endl;
}
void main()
{
const int n=5;
int i,k=0,j=n,a[17];
for(i=0;i<n;i++)
a[i]=i+1;
output(a,n);
while(j>1)
{
for(i=0;i<n;i++)
{
if(a[i]!=0)
{ k++;}
if(k%3==0)
{
a[i]=0;
j--;
cout<<j<<endl;
}
}
}
output(a,n);
for(i=0;i<n;i++)
{
if(a[i]!=0)
{
cout<<"the leave is:"<<i<<endl;
break;
}
}
}