解题思路和注意事项:
本题我的思路是用数组来做,初始值为1,当其退出的时候将其置为0,下面讲解:
1、首先定义一个数组,将值都置为1;
2、开始循环,因为要到只剩一个人为止,则该循环在最后退出人数为n-1的时候结束;
3、首先判断a[i]是否等于0,是0则判断是否是数组最后一个数,如果是就需要从头再开始循环,所以如代码所示。不是0则计数加1,即报数;
4、当报数为3时退出一个数,即置为0;
5、当循环到最后一个数时,置i=-1,因为要i++;
6、当退出数量k=n-1时,结束循环。
参考代码:
#include<stdio.h> int main() { int a[1000],n,i,count,k = 0; scanf("%d",&n); for(i=0; i<n; i++) a[i] = 1; i = 0; count = 0; while(1){ if(a[i] == 0){ if(i == n-1) i = -1; i++; continue; //结束本次循环,开始下次循环 } else count++; //报数加1,注意这里初始值为0 if(count == 3){ a[i] = 0; k++; //k表示退出人数,当count=3时,加1 count = 0; //重新开始新一轮报数 } if(k == n-1) //当退出人数为n-1时,结束整个循环 break; if(i == n-1) //当报数到最后一人时,从第一人开始再来一次循环 i = -1; i++; } for(i=0; i<n; i++){ if(a[i] == 1){ //输出最后剩下的一人的位置,i+1 printf("%d\n",i+1); break; } } return 0; }
0.0分
0 人评分
【偶数求和】 (C语言代码)浏览:674 |
C语言程序设计教程(第三版)课后习题6.10 (C语言代码)浏览:588 |
C语言程序设计教程(第三版)课后习题5.7 (C语言代码)浏览:1015 |
C语言训练-求1+2!+3!+...+N!的和 (C语言代码)万恶的long long浏览:906 |
wu-理财计划 (C++代码)浏览:907 |
C语言程序设计教程(第三版)课后习题4.9 (C语言代码)浏览:648 |
C语言程序设计教程(第三版)课后习题6.6 (C语言代码)浏览:366 |
简单的a+b (C语言代码)浏览:878 |
数组与指针的问题浏览:760 |
C语言程序设计教程(第三版)课后习题9.6 (C语言代码)浏览:627 |