1. 程式人生 > >C語言陣列方法處理圍圈報數

C語言陣列方法處理圍圈報數

m個人圍成一圈,開始報數,報道n,退出,問最後剩下的是幾號。(從1號開始)

#include <stdio.h>

int main(int argc, const char *argv[])

{

    int a[100];

    int m, n;

    int cnt=0;//統計出局人數

    int k=0;

    int i;

    scanf("%d%d", &m,&n);

    if (m>100) {

        return -1;

    }

    for (i=0; i<m; i++) {

        a[i]=i+1;

    }

    i=0;

    while (cnt<m-1) {

        if (a[i]) {//計數

            k++;

        }

        if (k==n) {//統計出局人數

            k=0;

            a[i]=0;

            cnt++;

        }

        i++;

        if (i==m) {//處理邊界

            i=0;

        }

    }

    i=0;

    while (!a[i++]);

    printf("%d\n", a[i-1]);

    return 0;

}