#include <stdio.h>
#include <stdlib.h>
int main(void)
{
int i, n, x;
printf("请输入参加报数的人数:");
scanf("%d", &n);//利用数组与指针之间的关系改变地址,
printf("x:");
scanf("%d", &x);
int p[100];
for (i = 0; i<n; i++)
p[i] = i + 1;
int k = 1;//k为报的数
int m = 0;
while (m<n-1)//注意这里是小于n-1而不是n,因为m=n-2的时候还要退出一个,就只剩一个了
for (i = 0; i<n; i++)
{
if (*(p + i) != 0)//没有退出
{
if (k == x)
{
printf("退出编号为:%d\n", *(p + i));
*(p + i) = 0;//将退出的人标记为0
m++;//退出人数加1
k = 0;
}
k++;
}
}
for (i = 0; i<n; i++)//找出地址非0的那个指针即所找的那个编号
if (*(p + i) != 0)
printf("\n最终剩余为:%d\n", i + 1);
system("pause");
return 0;
free(p);//归还 清除内存;
}