n个学生围成圈,报到3的学生被淘汰,最后剩下的学生编号是几号?

2023-11-18

#include <stdio.h>
#include <stdlib.h>

void main(){
	int a[100];
	int n,i,*p,sum = 0,num,k;
	
	printf("有多少个人围成了圈?");
	scanf("%d",&n);
	k = n;
	
	for(i=0;i<n;i++)
	  a[i]=i+1;   //赋编号值
	a[i]=-1;//后面判断指针回到开头的判断标志 
	p = a;
	while(k != 1)
	{
	    if(*p!=0)//指针所指的同学不为0的意思是没有被淘汰,才能对其进行操作 
	    { 
		  sum++;
	      if(sum % 3 == 0)//报到3的同学淘汰 
		  {
		  	*p = 0;
		  	k--;
		  }
		}
		p++;
		if(*p == -1)
		   p = a;	
	
	 } 
	for(i=0;i<n;i++)
	{
		if(a[i] != 0)
		{
		 printf("剩下的是%d号",a[i]);
		 return;
			}
	}
}

运行结果
在这里插入图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

n个学生围成圈,报到3的学生被淘汰,最后剩下的学生编号是几号? 的相关文章

随机推荐