【C语言】——n人围成一圈从第1个人开始按1~3报数,报3的人退出圈子,问最后留下的是第几号
程序员文章站
2022-03-10 22:13:38
...
**本题是利用count++的形式解决了第一个人接着最后一个人报数的问题 **
/*
时间:2020/08/04
目的:n人围成一圈从第1个人开始按1~3报数,报3的人退出圈子,问最后留下的是第几号
功能:经典题目实践
*/
#include<stdio.h>
int main()
{
int i,count=0,n,t;
printf("输入游戏人数:");
scanf("%d",&n);
t=n;
int a[n];
for(i=0;i<n;i++)
a[i]=i+1;//对游戏人员进行编号
i=0;
while(t>1)//筛选到只剩最后一人
{
if(a[i]!=0)
count++;
if(count==3)
{
a[i]=0;//a[i]=0表示被淘汰
count=0;//重新开始从一报数
t--;//游戏人数减少一个
}
i++;
if(i==n)//遍历完整个数组后还会i++,此时i就会等于n
//所以将i==n作为遍历结束的标志
i=0;//进行再一轮的遍历
}
for(i=0;i<n;i++)
{
if(a[i]!=0)
printf("\n最后留下的人是%d号",a[i]);
}
return 0;
}
上一篇: PHP Ajax中文乱码问题解决方法
下一篇: python 浅拷贝 深拷贝
推荐阅读
-
【学习笔记】C语言习题:有n个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是原来第几号的那位。
-
小练习题(69)有n个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是原来第几号的那位
-
约瑟夫环问题:有n个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是原来第几号的那位。
-
有n个人围成一圈,顺序排号。从第1个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下来的是原来第几号的那位
-
13个人围成一圈,从第1个人开始顺序报号1,2,3.凡报到3者退出圈子。找出最后留在圈子中的人原来的序号。要求用链表实现。
-
(C语言)13个人围成一圈,从第1个人开始顺序报号1,2,3.凡报到3者退出圈子.找出最后留在圈子中的人原来的序号,要求用链表实现
-
每日一题· 有10个队员围成一圈,顺序排号,从第一个开始报数(从1到3报数), 凡报到3的人退出圈子,编程实现最后留下的是原来第几号队员?
-
有n个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数),凡是报到3的人退出圈子,问最后留下来的是原来的第几位(指针方法处理)。
-
有n个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数), 凡报到3的人退出圈子,问最后留下的是原来第几号的那位。(*)
-
n个小孩围成一圈,顺序报号,从第一个人开始报数(从1报到5),凡是报到5的人退出圈子,问最后留下的小孩原来是几号