围成一圈,顺序报数
有n个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后// 留下的是原来第几号的那位 #include<stdio.h>#define nmax 50
main()
{
int i, k, m, n, num, *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) // 报数为3的置0出局
{
*(p + i) = 0;
k = 0;
m++; // 出局人数
}
i++; // 数组的下标
if (i == n)
i = 0; // 一轮报数完成,重新开始报数
}
while (*p == 0) p++;
printf("The last one is %d\n", *p);
}
页:
[1]