问题描述:
有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 }
运行截图: