13個小朋友圍成一圈,從1開始報數,報到5的就出圈,然後從下乙個小朋友接著從1開始報,如此迴圈,直到所有人出圈。一般會問最後乙個出來的是圈裡第幾個小朋友,或者每個小朋友出圈的順序。
這樣的題目一般都會用鍊錶做。寫乙個鍊錶,然後把末節點的next指向頭結點。但是今天被問到用陣列做。於是我想了一段時間。總算有了眉目。
報到5的出圈,其實也相當於報到5的倍數的出圈(如果接下去報的話),那麼我可以用乙個計數器n來進行判斷,如果n能被5整除,讓這個小朋友出圈,同時另乙個計數器count++。因為最後肯定有13個小朋友要出圈的,所以可以用這個作為遍歷陣列的條件。比如while(count!=13)那麼在遍歷這個陣列中需要注意的問題還有以下幾點:
已經報到5的小朋友在報到5之後應該不參與n的統計。我用的辦法是a[5] = 0;然後在遍歷這個a[i]的時候,如果a[i]=0,就不參與統計。另外還要考慮的是如果遍歷到了陣列的最後,應該把下標i重新賦值為1,從頭開始。
詳細**如下:
#include#includeintmain()
;
int count = 0
;
int n = 0
;
while(count != 13
)
i++;
if(i>13
)
}}
多人圍成一圈報數問題!
題目 摘自譚浩強的c語言 有n個人圍成一圈,順序排號。從第乙個人開始報數 從1到3報數 凡報到3的人退出圈子,問最後留下的是原來第幾號的那個人。解法思路 首先不要將思維侷限在一圈人,可以先將n個人看做一排,即作為乙個陣列,為這個陣列的每乙個元素 即人 編號,第0個人就編號1,以此類推。有了編號之後可...
n人圍成一圈報數問題
題目 有n個人圍成一圈,順序排號。從第乙個人開始報數 從1到3報數 凡報到3的人退出圈子,問最後留下的是原來第幾號的那位。思路 假如是8人,則需要乙個陣列將8個人的從1到8依次記下每人位數,還需要乙個模擬報數口令的變數該變數最初為0,從1到2在到3,當該變數為3時,此時對應編號的人就要退出 那麼第一...
助教c c n個人圍成一圈報數問題
以下三個問題都屬於同型別的問題,其中兩道題目是助教時的實驗題,還有一道是華為在成都招聘時的機試題目。在這三個問題中,問題1考慮的最簡單,用指標實現 問題2考慮最全面,用結構體實現 問題3用到了函式。問題1 有n個人圍成一圈,順序排號。從第乙個人開始報數,凡報到3的人退出圈子,問最後留下的是幾號?源程...