乐乐学编程 发表于 2021-1-1 20:35:11

围成一圈,顺序报数

有n个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后// 留下的是原来第几号的那位

风过无痕1989 发表于 2021-1-1 20:42:17

#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]
查看完整版本: 围成一圈,顺序报数