唐伯虎 发表于 2021-7-26 14:18:14

有n个人围成一圈,顺序排号,从第一个开始报数(从1到3报数),凡报到3的人退出圈子求最后留下的人

想了一下午终于做好了 记录一下 嘿嘿
#include<stdio.h>
int main()
{
    int a,flag=0;
    int i,n,count;
    printf("Please input a number:");
    scanf("%d",&n);
    count=n;
    for (i = 1;i <= n;i++)//报数之前所有人为1,为0表示出圈
    {
        a = 1;
    }
    for (i = 1; ;i++)
    {
        if (i == n+1)//到最后一个人时衔接到第一个人
        {
            i=1;
        }
if (a != 0)
        {
            flag++;
        }
        else        //为0时跳过报数
        {
            continue;
        }
if (flag%3 == 0)//每当报数为3时出圈
        {
            a = 0;
            count--;
        }
if (count == 1)//当只剩一个人时循环结束
        {
            break;
        }
    }
    for (i = 1;i <= n;i++) //寻找最后为1的人即是最后留下来的人
    {
        if (a == 1)
        {
            printf("a[%d]\n",i);
        }
    }
    return 0;
}


文档来源:51CTO技术博客https://blog.51cto.com/u_15306866/3177781
页: [1]
查看完整版本: 有n个人围成一圈,顺序排号,从第一个开始报数(从1到3报数),凡报到3的人退出圈子求最后留下的人