0042 有15个人围成一圈,顺序从1到15编号。从第一个人开始报数,凡报到n的人退出圈子。
问题描述:
有15个人围成一圈,顺序从1到15编号。从第一个人开始报数,凡报到n的人退出圈子。
输入:
输入n(n>=1)
代码展示:
1 #include<stdio.h> 2 int fun(int num[], int n); 3 int main(){ 4 int i; 5 int n; //用于输入 6 int num[15]; //存储存储15个人 7 int result; 8 for(i=0; i<15; i++){ 9 num[i] = i+1; 10 } 11 printf("请输入n:"); 12 scanf("%d",&n); 13 result = fun(num, n); 14 printf("最后留下的人是编号为:%d\n",result); 15 return 0; 16 } 17 18 int fun(int num[], int n){ 19 int i=0,j; //i用来记录15人数组的下标 20 int count=0; 21 int x=1; //用来标记现在读到的几 22 while(count!=14){ 23 while(x<n){ //进行标号 24 i++; 25 if(i==15-count){ 26 i = 0; 27 } 28 x++; 29 } 30 if(x == n){ 31 for(j=i+1;j<15-count;j++){ 32 num[j-1] = num[j]; 33 } 34 count++; 35 x = 1; 36 } 37 } 38 return num[0]; 39 }
运行截图: