重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
请用指针实现程序:n个人围成一圈,顺序排号。从第1个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下来的是原来的第几号的那位
成都创新互联公司坚持“要么做到,要么别承诺”的工作理念,服务领域包括:成都做网站、网站建设、企业官网、英文网站、手机端网站、网站推广等服务,满足客户于互联网时代的吉隆网站设计、移动媒体设计的需求,帮助企业找到有效的互联网解决方案。努力成为您成熟可靠的网络建设合作伙伴!#includeint main()
{int n;
scanf("%d", &n);
int ren[100000] = {0 };//用一维数组存人数//初始化为0定义为没有人
int i;
for (i = 1; i<= n; i++)
{ren[i] = i;//对n个人进行编号
}
int *p = ren+1;//取出编号为1的地址
int k = 0;//用来对报数的的控制
int j = 0;//游历编号中所有数
int m = 0;//计数退出的人
while (m< n - 1)
{if (*(p + j) != 0)//对有编号的人进行报数
{ k++;//一个人报,报数自增1
}
if (k == 3)//当p+j个人报数为三的时候进入
{ *(p + j) = 0;//退出的人编号为0
k = 0;//报数重新开始
m++;//退出一个人,k自增1
}
j++;//一个人报完数到下一个人
if (j == n)//当最后一个人报完数的时候,从头开始报数
{ j = 0;
}
}
while (*p == 0)//但只剩下一个人的时候,整个序列只有剩下那个人的编号不为0,从而找到那个人
{p++;
}
printf("最后留下来的是第%d号\n",*p);
return 0;
}
你是否还在寻找稳定的海外服务器提供商?创新互联www.cdcxhl.cn海外机房具备T级流量清洗系统配攻击溯源,准确流量调度确保服务器高可用性,企业级服务器适合批量采购,新人活动首月15元起,快前往官网查看详情吧