第九周項目1---猴子選大王(數組版)

/*   
*煙臺大學計控學院    
*作    者:鄒曉琳   
*完成日期:2015年10月23日
*問題描述:一羣猴子,編號是1,2,3 …m,這羣猴子(m個)按照1-m的順序圍坐一圈。從第1只開始數,每數到第n個,該猴子就要離開此圈,這樣依次下來,最後一隻出圈的猴子爲大王。輸入m和n,輸出猴子離開圈子的順序,從中也可以看出最後爲大王是幾號猴子。 
         要求採用數組作爲存儲結構完成。


*/

#include <stdio.h>
#define MaxSize 8
void king(int m,int n)
{
    int p[MaxSize];
    int i,j,t;
    for(i=0;i<m;i++)
        p[i]=1;
    t=-1;
     printf("出列順序:");
     for(i=1;i<=m;i++)
     {
         j=1;
         while(j<=n)
         {
             t=(t+1)%m;
             if(p[t]==1)
                j++;
         }
         p[t]=0;
          printf("%d ",t+1);


     }




    printf("\n");




}
int main()
{
    int m,n;
    scanf("%d %d", &m, &n);
    king(m,n);




    return 0;
}

運行結果:

知識點總結:

在一個數組中,數組中用1表示猴子在圈中,用0表示猴子已經出圈,數組下標對應與猴子編號對應(例如數組元素p[0]值爲1,表示第1只猴子尚在圈中,即p[i]代表編號爲i+1的猴子是否在圈中)。 一隻猴子出圈,則將對應的數組值置爲0;在報數過程中,要跨過值爲0的猴子。數到最後一隻猴子時需要折回到下標爲0的位置,猴子出圈後,還將對應元素的值置爲0。  

學習心得:

一開始不明白意思,多敲幾遍就懂了。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章