按键精灵进阶之路——考级题目001

2023-08-28 15:03:31 浏览数 (1)

这是奔跑的键盘侠的第199篇文章

作者|我是奔跑的键盘侠

来源|奔跑的键盘侠(ID:runningkeyboardhero)

转载请联系授权

三年前,按键精灵板块停更了,读个研还是非常不易的,过程艰辛、结果辛酸。从今天开始,按键精灵相关内容,将开始新一轮的耕耘

与以往不同的是,我们邀请到了chatgpt专家来写代码,毫无疑问,顺应潮流才能与时俱进

废话不多说,直接上题目和代码。

100个人手拉手围成一圈,逢三退一(1到3循环数数,被数到3的人退出),求最后一个被剩下人的编号.请写出代码)

代码语言:javascript复制
// 定义常量
const peopleNum = 100   // 人数
const countNum = 3      // 数到的数字
const exitNum = 1       // 退出的数字

// 初始化参与游戏的人员数组
dim people[peopleNum]
for i = 0 to peopleNum-1 step 1
    people[i] = i 1
next

// 开始游戏
dim currIndex = -1     // 当前人员的索引(初始值为-1,方便计算)
dim exitCount = 0      // 已退出游戏的人数
while exitCount < peopleNum - 1 do
    dim count = 0       // 统计数到的数字
    while true do
        currIndex = (currIndex   1) mod peopleNum   // 循环计算当前人员的索引
        if people[currIndex] > 0 then
            count = count   1
        end if
        if count = countNum then
            exitCount = exitCount   1
            people[currIndex] = -exitCount    // 将退出游戏的人标记为负数,方便后续判断
            print "第" & exitCount & "个退出游戏的人的编号为:" & people[currIndex]
            Exit while
        end if
    end while
wend

// 输出最后一个剩下的人
for i = 0 to peopleNum-1 step 1
    if people[i] > 0 then
        print "最后一个剩下的人的编号为:" & people[i]
        Exit for
    end if
next

补充说明:

  1. 首先定义了题目中所给定的常量,分别代表人数、数到的数字和退出的数字。
  2. 初始化参与游戏的人员数组,以便于后续对游戏进行操作。使用 for 循环遍历人员数组,将数组中每个元素赋值为其索引加 1。
  3. 开始游戏,使用 while 循环来模拟游戏的过程。
    • 定义 currIndex 变量表示当前正在数数的人的索引,初始值为 -1。
    • 定义 exitCount 变量表示已经退出游戏的人数,初始值为 0。
    • 使用 while 循环来循环数数。当当前数到的数字等于 countNum 时,将当前正在数数的人标记为退出游戏,并将其编号输出。退出循环后,将 exitCount 加 1。
    • 当 exitCount 的值达到 peopleNum - 1 时,说明只剩下最后一个人没有退出游戏了,跳出 while 循环。
  4. 输出最后一个剩下的人的编号,遍历人员数组,找到剩下的最后一个人即可。

-END-

© Copyright

奔跑的键盘侠原创作品 | 尽情分享朋友圈 | 转载请联系授权

0 人点赞