当前位置:   article > 正文

数三出局:有n个学生(给学生用数字编号1----n)围在一起做游戏,从第一个学生开始依次数1,2,3;周而复始,数到3的同学从游戏里面淘汰,请打印最后剩下的学生编号

数三出局

数三出局:有n个学生(给学生用数字编号1----n)围在一起做游戏,从第一个学生开始依次数1,2,3;周而复始,数到3的同学从游戏里面淘汰,请打印最后剩下的学生编号

方案1:给数到3的做标记

  1. #include <stdio.h>
  2. #include <string.h>
  3. void main()
  4. {
  5. int N;
  6. scanf("%d",&N);
  7. char student[N];//N个人,1表示未退出,0表示已经退出
  8. int out[N];//退出的人的号码记录
  9. int count = 0;//循环计数 012
  10. int num_out = 0;//退出号码记录的数组的下标
  11. memset(student, 1, sizeof(student));//将所有人状态置为1(未退出)
  12. //当num_out=N-1的时候代表退出的数组满了,那就是所有人都退出了,则退出循环
  13. for (int i = 0; i < N && num_out < N ; i = ++i % N)
  14. {
  15. if (1 == student[i] && 2 == count++%3)
  16. {
  17. //未退出的人计数到2的人标记退出,并将号码保存到out数组中
  18. student[i] = 0;
  19. out[num_out++] = i;
  20. }
  21. }
  22. //循环输出退出的号码
  23. for (int i = 0; i < N-1; ++i)
  24. {
  25. printf("淘汰%d号\n", ou
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/IT小白/article/detail/543724
推荐阅读
相关标签
  

闽ICP备14008679号