n人圍成一圈報數


題目:有n個人圍成一圈,順序排號。從第一個人開始報數(從1到3報數),凡報到3的人退出圈子,問最后留下的是原來的第幾號的那位

思路:用一個數組存這n個人,里面的初始狀態全設為1,表示都還在圈子里面。

然后用q來記錄報的號,因為每次報號報到3的人就得退出圈子,用j來表示圈子內剩余的人數。

每當有人報到3時,j-1,同時將數組中該元素的值標記為0,q清0。

這樣while循環結束后,數組中就只會剩下一個人的值為1,輸出那個人的序號+1即可(數組是從0開始,所以+1)

 

 1 #include<stdio.h>
 2 int main(){
 3     int a[100];
 4     int n;
 5     int i,j;
 6     printf("請輸入有多少人參加該游戲:"); 
 7     scanf("%d",&n);
 8     j=n;
 9     for(i=0;i<n;i++)
10       a[i]=1;
11     int q=0;  //記錄步數 
12     while(j>1){
13         for(i=0;i<n;i++){
14             if(a[i]!=0) q++; 
15             if(q==3) {
16                 a[i]=0;
17                 j--;
18                 q=0;
19                 printf("第  %d  位玩家出圈\n",i+1); 
20             }
21         }
22     }
23     printf("\n");
24     for(i=0;i<n;i++){
25         if(a[i]==1) printf("最后在圈內的是第   %d   位玩家",i+1);
26     }
27 }

 

 運行截圖:

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



猜您在找 C語言——N個人圍成一圈報數淘汰問題 有n人圍成一圈,順序排號。從第1個人開始報數(從1到3報數),凡報到3的人退出圈子,問最后留下的是原來的第幾號的那位。 有n個人圍成一圈,順序排號。從第1個人開始報數(從1到3報數),凡報到3的人退出圈子,問最后留下的是原來第幾號的那位 有n個人圍成一圈,順序排號。從第一個人開始報數(從1到3報數),凡報到3的人退出圈子,問最后留下的是原來第幾號的那位。 有n個人圍成一圈,順序排號。從第一個人開始報數(從1到3報數),凡報到3的人退出圈子,問最后留下的是原來第幾號的那位。 有n個人圍成一圈,順序排號。從第一個人開始報數(從1到3報數),凡報到3的人退出圈子,問最后留下的是原來第幾號的那位。 【JAVA習題二十七】有n個人圍成一圈,順序排號。從第一個人開始報數(從1到3報數),凡報到3的人退出圈子,問最后留下 有n個人圍成一圈,順序排號。從第1個人開始報數(從1到3報數),凡報到3的人退出圈子,問最后留下的是原來第幾號的那位 有n個人圍成一圈,順序排號。從第1個人開始報數(從1到3報數),凡報到3的人退出圈子,問最后留下的是原來第幾號的那位 有n個人圍成一圈,順序排號。從第一個人開始報數(從1到3報數),凡報到3的人退出圈子,問最后留下的是原來第幾號的那位。
 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM