评论

收藏

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

编程语言 编程语言 发布于:2021-07-26 14:18 | 阅读数:585 | 评论:0

想了一下午终于做好了 记录一下 嘿嘿
#include<stdio.h>
int main()
{
    int a[50],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;
}


关注下面的标签,发现更多相似文章