实验十(2)-4

有n个人围成一圈,按顺序从1到n编号。从第一个人开始报数,报数3的人退出圈子,下一个人从1开始重新报数,报数3的人退出圈子。如此循环,直到留下最后一个人。

     要求:

  • n大于30;
  • 输出每次退出人的编号
  • 输出最后留下人的编号
#include<stdio.h>
#define MAXLINE 200
int main()
{
    int a[MAXLINE];
    int i,n,count=0,index;
    
    printf("Input a number:");
    scanf("%d",&n);
    index=n;
    for(i=0;i<n;i++){
        a[i]=0;
    }
    i=0;
    while(n>1){
        if(a[i]==0){
            count++;
            if(count==3){
                a[i]=1;
                printf("%d号退出\n",i);
                n--;
                count=0;
            }
        }
        i++;
        if(i==index)
            i=0;
    }
    for(i=0;i<index;i++){
        if(a[i]==0)
            printf("最后留下人的编号:%d",i);
    }
    return 0;
}

 

posted @ 2013-11-20 22:33  dihuanting  阅读(149)  评论(0编辑  收藏  举报