【C语言】——n人围成一圈从第1个人开始按1~3报数,报3的人退出圈子,问最后留下的是第几号(采取指针作为函数参数的方法)
程序员文章站
2022-03-10 22:18:51
...
有非指针方法的思路其实很简单,非指针的方法可以参考这个程序
/*
时间:2020/08/04
目的:n人围成一圈从第1个人开始按1~3报数,报3的人退出圈子,问最后留下的是第几号
功能:指针作为函数参数的一个实践
*/
#include <stdio.h>
void sx(int*,int);//定义筛选函数
int main()
{
int n,i;
printf("输入游戏人数:");
scanf("%d",&n);
int a[n];
for(i=0;i<n;i++)
a[i]=i+1;//对游戏人员进行编号
sx(a,n);
}
void sx(int *p,int n)
{
int t=n,i=0,count=0;
while(t>1)//筛选到只剩最后一人
{
if(*(p+i)!=0)
count++;
if(count==3)
{
*(p+i)=0;//*(p+i)=0表示被淘汰
count=0;//重新开始从一报数
t--;//游戏人数减少一个
}
i++;
if(i==n)//遍历完整个数组后还会i++,此时i就会等于n
//所以将i==n作为遍历结束的标志
i=0;//进行再一轮的遍历
}
for(i=0;i<n;i++)
{
if(p[i]!=0)
printf("\n最后留下来的是%d号",p[i]);
}
}
上一篇: 微信小程序获取手机号授权用户登录功能
下一篇: 文本框输入限制 [大全]
推荐阅读
-
【学习笔记】C语言习题:有n个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是原来第几号的那位。
-
小练习题(69)有n个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是原来第几号的那位
-
约瑟夫环问题:有n个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是原来第几号的那位。
-
有n个人围成一圈,顺序排号。从第1个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下来的是原来第几号的那位
-
有n个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数),凡是报到3的人退出圈子,问最后留下来的是原来的第几位(指针方法处理)。
-
有n个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数), 凡报到3的人退出圈子,问最后留下的是原来第几号的那位。(*)
-
【学习笔记】C语言习题:有n个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是原来第几号的那位。
-
小练习题(69)有n个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是原来第几号的那位
-
约瑟夫环问题:有n个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是原来第几号的那位。
-
【C语言】——n人围成一圈从第1个人开始按1~3报数,报3的人退出圈子,问最后留下的是第几号(采取指针作为函数参数的方法)