问题描述: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;
}
本文介绍了一种基于C语言实现的游戏算法,该算法描述了n个小孩围成一圈进行报数淘汰赛的过程,每报到5的孩子将被淘汰,直至最后剩下一名胜者。文章详细展示了算法的实现代码,包括如何记录每个孩子的状态、报数流程及确定最终胜者的逻辑。
1163

被折叠的 条评论
为什么被折叠?



