C语言习题

【C语言】 有n个人(人数可自定义)玩一场死亡游戏,从第一个人开始报数,依次数到第3人就会被处死,然后接着报数直到最后一个人活着,求这个人是几号位?有n个人(人数可自定义)玩一场死亡游戏,从第一个人开始报数,依次数到第3人就会被处死,然后接着报数直到最后一个人活着,求这个人是几号位?

#include<stdio.h>
#define c 1000
int main()
{
	int n;
	int a[c];
	int* p = a;
	int i;
	int k = 0, m = 0;
	scanf("%d", &n);//输入参与人数
	for (i = 0; i < n; i++)
	{
		*(p + i) = i + 1;//依次对每个人的位置进行标记
	}
	i = 0;
	while (m < n - 1) //m是表示被杀的人数,党m=n-1时表示剩下最后一个人,所以结束循环
	{
		if (*(p + i) != 0)
			k++;//如果没有遇到要被杀的人k就加一
		if (k == 3)
		{
			*(p + i) = 0;//数到第三个人是就赋值为0
			k = 0;//令k=0,然后重新报数
			m++;//每次杀死一个人就统计加一
		}
		i++;
		if (i == n)
			i = 0;//如果一轮报数完后就重新开始新的一轮

	}
	while (*p == 0)//如果遇到0(被杀了的人),就接着往下走一个,直到遇到不是0,也就是或者的人,
		p++;
	printf("%d", *p);
}

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Fitz&

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值