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

#include <stdio.h>

void main() {
    int a[1000], n, t, i, c;
    scanf("%d", &n);
    /*初始化人数*/
    for (i = 0; i < n; i++) {
        a[i] = i + 1;
    }
    /*初始化变量*/
    t = n;
    i = 0;
    c = 0;
    while (n > 1) {
        /* 退圈的不管 */
        if (a[i] != 0)
            c++;
        /* 数到三退圈 */
        if (c == 3) {
            a[i] = 0;
            c = 0;
            n--;
        }
        /* 下个人准备 */
        i++;
        /* 轮完一圈了 */
        if (i == t)
            i = 0;
    }
    for (i = 0; i < t; i++) {
        if (a[i] != 0) {
            printf("%d", a[i]);
        }
    }
}
发布了139 篇原创文章 · 获赞 4 · 访问量 93万+

猜你喜欢

转载自blog.csdn.net/qq_38490457/article/details/104828517
今日推荐