有N个人围成一圈,顺序排号。
从第一个人开始报数,凡是报数中的尾数为3,或能被3整除,就退出圈子。
问最后留下的是原来第几号的人,最后报数报到多少?
比如:N=3,3个人,从第1号开始,从1开始报数
报数:1 2 3 4 5 6 7
编号:1 2 3(退出) 1 2 1(退出) 2(只剩最后一个人)
最后报数最高是7,剩下的人编号是2
编写代码,要求:
1)用数组保存游戏参加人列表(最多不超过N)
int LOOP[N];
2)数组取值为1或0,其中1代表参加报数,0代表被淘汰(1 TRUE / 0 FALSE)
3)键盘输入参加人数(人数<N)
4)编写函数处理游戏逻辑,输入指针(数组名)和参加人数(实际参加人数),输出报数最高值和最终胜利人编号
int loops(int* p, int nums, int* top, int* id);
p为输入指针,nums为输入人数,top为返回的最高值,id为返回的最终剩下的人编号
5)打印输出最高值和胜利者编号
其中:
1)函数内用 指针++ 操作遍历参加人
2)函数内用 指针赋值 操作完成从队尾到对头的循环
示例:
input: 3
output: id=2, top=7