- #include <stdio.h>
- #include <stdlib.h>
- #define TOTAL 6
- struct person {
- char name[10];
- int count;
- };
- int main()
- {
- struct person p[TOTAL] = {
- {"A", 4},
- {"B", 2},
- {"C", 3},
- {"D", 5},
- {"E", 1},
- {"F", 2},
- };
- int current = 0;
- int count = 0;
- int alive = TOTAL;
- int r = 0;
- int i, j;
- r = random() % TOTAL;
- printf("random number: %d\\n", r);
- current = (current + r -1) % TOTAL;
- while(alive > 0)
- {
- printf("begin with %s, count: %d\\n", p[current].name, p[current].count);
- //out = (current + p[current].count) % TOTAL;
- count = p[current].count;
- for(j=0; j<count-1; ++j)
- {
- current = (current + 1) % TOTAL;
- while(p[current].count == 0)
- current = (current + 1) % TOTAL;
- }
- printf("%s is out\\n", p[current].name);
- p[current].count = 0;
- --alive;
- if(alive > 0)
- {
- current = (current + 1) % TOTAL;
- while(p[current].count == 0)
- current = (current + 1) % TOTAL;
- }
- }
- return 0;
- }
- //该片段来自于http://www.codesnippet.cn/detail/010820134903.html
来源: http://www.codesnippet.cn/detail/010820134903.html