问题描述
N个人在一起做游戏,他们制定了一下规则:
1、首先,所有参加游戏的人按顺序编号为1、2、3…N; 2、接下来每个人心里产生一个数字,这个数字称为序号为 N的人的密码P; 3、所有参加游戏的人按照编号站成一个圈,为游戏设置初始密码K,从编
号为 1的人这里开始报数,报到 K的人退出队伍,然后将自己心中的密码 K2说出
来,由下一个人继续从 1开始报数,报到 K2的人退出队伍,以此类推;
4、当只剩下一个人时,游戏结束。
在用户输入了人数N、每个人的密码P和初始
密码K的情况下,自动完成上面的游戏过程,输出先后离开队伍的人的序号序列,最后输出剩下的人的编号
采用数组实现
问题描述
输入:
人数N(规定最大人数为100)
每个人的密码key
初始密码K
输出:
先后离去的人的编号numNo
最后剩下的人的编号numNo
处理过程:
提示并存储用户输入的人的总数N
提示并存储用户输入的初始密码K
提示并存储用户输入的每一个人的密码key
遍历用户存储的人的密码的同时计数器自增
满足条件时进行相关操作,输出离开的人的编号
循环退出后输出最后剩下的人的编号
退出程序
流程设计
模块介绍
存储:
采用int类型的值存储人数N,初始密码K
采用结构体数组存储每个人的编号personNo、密码
personKey和未离开的人数personNum
实现:
循环遍历数组的每个元素,符合条件的元素输出,直
至数组中只有一个有效元素,再输出这个元素
源代码
1 | #include <iostream> |
测试样例
1.personNum最小值:
2.Illegal input:
3.用例1:
)
用例2:
用例3:
采用链表实现
由于篇幅的原因,此处只粘贴源代码读者可自行测试(笔者亲测可行,如果发现问题请在评论区指出或者私信笔者,笔者将感激不尽)
源代码
1 | #include <iostream> |