赞
踩
数三出局:有n个学生(给学生用数字编号1----n)围在一起做游戏,从第一个学生开始依次数1,2,3;周而复始,数到3的同学从游戏里面淘汰,请打印最后剩下的学生编号
方案1:给数到3的做标记
- #include <stdio.h>
- #include <string.h>
-
- void main()
- {
- int N;
- scanf("%d",&N);
-
- char student[N];//N个人,1表示未退出,0表示已经退出
- int out[N];//退出的人的号码记录
- int count = 0;//循环计数 0,1,2
- int num_out = 0;//退出号码记录的数组的下标
-
- memset(student, 1, sizeof(student));//将所有人状态置为1(未退出)
-
- //当num_out=N-1的时候代表退出的数组满了,那就是所有人都退出了,则退出循环
- for (int i = 0; i < N && num_out < N ; i = ++i % N)
- {
- if (1 == student[i] && 2 == count++%3)
- {
- //未退出的人计数到2的人标记退出,并将号码保存到out数组中
- student[i] = 0;
- out[num_out++] = i;
- }
- }
-
- //循环输出退出的号码
- for (int i = 0; i < N-1; ++i)
- {
- printf("淘汰%d号\n", ou

Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。