zoukankan      html  css  js  c++  java
  • 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  位玩家出圈
    ",i+1); 
    20             }
    21         }
    22     }
    23     printf("
    ");
    24     for(i=0;i<n;i++){
    25         if(a[i]==1) printf("最后在圈内的是第   %d   位玩家",i+1);
    26     }
    27 }

     运行截图:

    务实,说实话!
  • 相关阅读:
    ios数据存储方式FMDB
    ios中的coredata
    编程岗位电话面试问答Top 50[转]
    活动图
    时序图
    用例图
    类图
    Movie
    EasyMock
    cglib应用
  • 原文地址:https://www.cnblogs.com/xtuxiongda/p/8295690.html
Copyright © 2011-2022 走看看