兄弟姐妹们帮帮忙吧
将班里的n个人围成一圈,顺序编号,从第一个人开始报数(从1-3报数),凡报到3的人退出圈子,然后从下一个人重新开始,最后留下的那个人被选为班长。请问按这个规则,选出的班长是原来编号为几号的那位。bool[] a = new bool[n]; for(int i= 0 ;i<a.Length;i++) { a[i] = true; } int j = 0; int find= 0; //排除的个数 while (true) { for(int i =0 ;i<a.Length;i++) { if(a[i]==true) { j++; if(j %3 == 0) { a[i]=false; find ++; } } if(find ==n-1) //如果排除了N-1个,就只剩一个班长了 { Console.WrilteLine("班长是第{0}个同学",i); break; } } }代码没有调试。在记事本中写的。自己调试一下
static int n = 40; static void Main(string[] args) { bool[] a = new bool[n]; for (int i = 0; i < a.Length; i++) { a[i] = true; } int j = 0; int find = 0; //排除的个数 while (find != n-1 ) { for (int i = 0; i < a.Length; i++) { if (a[i] == true) { j++; if (j % 3 == 0) { a[i] = false; find++; } } } if (find == n - 1) //如果排除了N-1个,就只剩一个班长了 { for(int i =0;i<a.Length;i++) if (a[i]== true ) { Console.WriteLine("班长是第{0}个同学", i+1); break; } } }这是经过测试了的正确