我用数组的方法写了一个,好像有点笨拙。。 #include <stdio.h> #include <conio.h>
#define MONKEY_NUMBER 20
int main() { /* 创建一个猴子列队 */ int monkeys[MONKEY_NUMBER]; /* 在队列中的猴子数目 */ int monkey_in_queue=MONKEY_NUMBER; /* 初始化猴子的编号 */ register int i; int id,counter=1; for(i=0;i<MONKEY_NUMBER;monkeys[i++]=i+1); /* 模拟报数 */ for(i=0;i<MONKEY_NUMBER;i++) { if(counter==1&&monkeys[i]!=-1) { monkeys[i]=-1; monkey_in_queue--; counter++; } else if(monkeys[i]!=-1&&counter<=4) {counter++;} if(counter==4) {counter=1;} if(monkey_in_queue>1&&i+1>=MONKEY_NUMBER) i=-1; } /* 输出结果 */ for(i=0;i<MONKEY_NUMBER;i++) { if(monkeys[i]!=-1) { id=i; printf("@"); } else { printf("-"); } } printf("\nThe %d monkey is the last monkey in the queue.\n",id); getch(); return 1; }