问题描述:n个小孩围成一圈,顺序排号,从第一个人开始报数(从1报到5),凡是报到5的都要出局,求最后留下的人的号码。
#include<stdio.h>
void Game(int n)
{
int arr[n] = {0}; // 记录第n号孩子是否已出局,“0”表示未出局
int out = 0; // 当前出局人数统计
int call = 0; // 当前报数
int i = 0;
while (n-out != 1){ //直到剩下1个孩子才终止
if(!arr[i]){
call++;
printf("第%d号报数:%d\n",i,call);
if(call == 5){
call = 0;
arr[i] = 1;
printf("第%d号 out!!! \n",i);
out++;
}
}
i++;
if(i == n)
i = 0;
}
for(i = 0;i < n;i++) //查找最后剩下的孩子的编号 ,并打印出来
if(!arr[i]){
printf("第%d号获胜!",i);
break;
}
}
int main()
{
int n;
printf("输入参加游戏的人数n :");
scanf("%d",&n);
Game(n);
return 0;
}