
题目
解决代码及点评
/* 16.有17个人围成一圈(编号为0~16),从第 0号的人开始从 1报数, 凡报到 3的倍数的人离开圈子,然后再数下去,直到最后只剩下一个人为止。 问此人原来的位置是多少号? */ #include <stdio.h> #include <stdlib.h> void main() { int total = 17,need = 17,k = 3; int index = 0,count = 0,i = 0; int a[100] = {0}; for (;;) { index = index % total + 1; // 取得第一个index if(a[index] == 0) // 如果上面有人 { i = (i + 1) % k; // 找到报数3的人 if(i == 0) { count++; // 退出 a[index] = 1; } } if(count == need) break; // 退出的人够多时,整个循环退出 } printf("index = %d\n",index); system("pause"); }
代码编译以及运行
由于资源上传太多,资源频道经常被锁定无法上传资源,同学们可以打开VS2013自己创建工程,步骤如下:
1)新建工程
2)选择工程
3)创建完工程如下图:
4)增加文件,右键点击项目
5)在弹出菜单里做以下选择
6)添加文件
7)拷贝代码与运行
程序运行结果