报数退圈程序题

来源:互联网 发布:python算法 pdf下载 编辑:程序博客网 时间:2024/05/07 13:46

 有n个人围成一圈,顺序排号,从第一个开始报数(从1到3报数),凡报到3的人退出圈子,问最后最后留下的是原来第几号的那位.

#include <stdio.h>int baoshu(int n) //定义一个报数的函数{int a[n];int i,count,num,flag;//i为循环变量,count为1~n人次循环,num为3人循环 ,flag为标记原来位    count = 0;num = 0;    for(i = 0;i < n;i++)//给每个人编号    {a[i] = i+1;    }while(count != n - 1) //退出n-1个人时退出循环{for(i = 0;i < n;i++)    {if(a[i] == 0)//报到为3的人退出    {continue;    }    num++;if(num == 3)    {num = 0;a[i] = 0;count++;}     }     }     for(i = 0;i < n;i++) { if(a[i] == 0)//不为0的为最终留下的人 { continue; } flag = a[i]; break;}printf("留下的是原来的%d号\n",flag);}int main(){int n;printf("输入人数:");scanf("%d",&n);baoshu(n);return 0;}


0 0
原创粉丝点击