|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
有 N 个人围成一圈参加游戏,游戏的规则是: N个人的编号分别为1、2、……、N,以编号为‘1’的人开始报数,报到M时该人跳出圈子,下一人继续重新报数。按此要求依次输出所有跳出圈子人员的编号。
例如:N=6,M=3时,出圈人的序号分别是:3,6,4,2,5
要求:将N定义成符号常量,可以在程序中修改其值。程序允许在键盘上输入M的值,然后将出圈人的序号依次输出。
#include<stdio.h>
#include <stdlib.h>
#define N 6
int main(void)
{ int i,j,m,t=0,a[N],s; // i,j是循环控制变量,s是数组元素个数的变量
scanf("%d",&m);
s=N;
for (i=0;i<s;i++)
a[i]=i+1;
for (i=0;i<s;i++)
{ t++;
if (t==m)
{ printf("%d\t",a[i]);
if (i!=s-1) //如果下标没有指向数组最后一个元素
{ for (j=i;j<s-1;j++)
a[j]=a[j+1]; // 数组元素前移覆盖取出的数
i--;
}
else
i=-1;
s--;
t=0;
}
if (i==s-1) //构建无限循环
i=-1;
if (s==0) //退出无限循环
break;
}
system("pause");
return 0;
}
|
|