有n个人围成一圈,顺序排号。

来源:百度知道 编辑:UC知道 时间:2024/09/28 08:00:36
用C语言编写:有n个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数),凡报到3的人退出圈子,请输出报数出列圈及最后留下的数据和在原来位置的第几号。

#include <stdio.h>
#define n 100
void main()
{int a[n],i,quit_num,k;
for(i=0;i<n;i++)/*数组a存放原始编号*/
a[i]=i+1;
quit_num=0;/*出圈人数*/
i=0;
k=0;
while(quit_num<n-1)/*直到只剩下1人时*/
{if(a[i]!=0)k++;
if(k==3)
{a[i]=0;
quit_num++;
k=0;
}
i++;
if(i==n)i=0;
}
for(i=0;i<n;i++)
if(a[i]!=0)printf("%d",a[i]);
}

题目:有n个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数),凡报到3的人退出
圈子,问最后留下的是原来第几号的那位。
1. 程序分析:
2.程序源代码:
#define nmax 50
main()
{
int i,k,m,n,num[nmax],*p;
printf("please input the total of numbers:");
scanf("%d",&n);
p=num;
for(i=0;i<n;i++)
*(p+i)=i+1;
i=0;
k=0;
m=0;
while(m<n-1)
{
if(*(p+i)!=0) k++;
if(k==3)
{ *(p+i)=0;
k=0;
m++;
}
i++;
if(i==n) i=0;
}
while(*p==0) p++;
printf(

有n个人围成一圈,顺序排号。 2:有n个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数),凡报到3的人退出圈子, 有 N 个人围成一圈参加游戏,游戏的规则是: n个人围成一圈,从第m个人开始顺序报号,凡报到p的人退出圈子,输出依次退出圈子的人来的序号 N个人围成一圈,甲乙之间巧有R个人的概率是多少,只考虑甲到乙顺时钟方向. n个人围成一圈和排成一列的排列方法分别怎么计算? 20. n个人围成一圈,1,2,3循环报数,报到3的人退出 有M个人围成一圈,每人一个的编号(1. 有知道K28次火车(丹东到北京)硬坐车厢内的排号顺序? 13个人围成一圈,从第一个人开始顺序报号1、2、3。凡报到3者退出圈子。找出最后留在圈子的人原来的号码