1. 程式人生 > >圍圈報數遊戲(C程式設計第四版第八章第5題)

圍圈報數遊戲(C程式設計第四版第八章第5題)

題目描述:有n個人圍成一圈,順序排號,從第一個人開始報數,從1到3報數,凡報到3的人退出圈子,問最後留下來的幸運者是原來的幾號。

#include<stdio.h> #include<stdlib.h> #include<assert.h> #include<math.h>

#define DANGER_NUM 3 int CyclicGame(int n) {  int *arr=(int*)malloc(n*sizeof(int));//建立陣列存放參與者資訊  int count=0;//記錄報數  int i;  int num=n;//幸運者數量  assert(arr!=NULL);  for(i=0;i<n;i++)//初始化為活動狀態  {   *(arr+i)=1;  }  while(num>1)//幸運者為1時結束遊戲  {   for(i=0;i<n;i++)   {    if(*(arr+i)==1)    {     count++;     if(count==DANGER_NUM)     {      *(arr+i)=0;      num--;      count=0;     }    }   }  }  for(i=0;i<n;i++)  {   if(*(arr+i)==1)   {    return i;   }  }  return -1;//查詢失敗,程式出錯 } int main() {  printf("%d\n",CyclicGame(11));  return 0; }