美文网首页
C语言杀人小游戏--n个人围成一圈,依次报数(1到3),报到3的

C语言杀人小游戏--n个人围成一圈,依次报数(1到3),报到3的

作者: 發財大力 | 来源:发表于2019-08-01 23:28 被阅读0次

1.问题:n个人围成一圈,顺序排号,从第1个人开始报数(1到3报数),凡报到3的人退出圈子,问最后留下的是原来几号?

2.程序运行效果 数字游戏.gif

3.解题思路

先从键盘获取用户输入人数,用while循环来寻找报数号码为3号的人,在一开始时给每个人赋值为1(1为存活,0为死亡),每循环一次num值加1,直到num值为3时,说明此时这个人报的数为3,需要淘汰,则将原来的赋值变为0,此时再用sum记录淘汰的人数,最后跟总人数比较,直到剩下一个人为止。

4.代码实现

// 数字游戏.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。


#include <iostream>

int main()
{
    int k, i;
    int num = 0;//用来记录循环次数,当num=3是说明报数报到3了
    int sum = 0;//用来记录一共淘汰了几个人
    int people[100];
    bool key = true;//用来确定循环是否执行
    printf("请输入参与游戏人数:");
    scanf("%d", &k);

    for (int i = 0; i < k;i++) {
        people[i] = 1;
        //printf("参与游戏人数:%d",people[i]);
    }
    while (key)
    {
        i = 0;//初次循环时数组的下标
        while (i<k)
        {
            if (people[i]==1)
            {
                num = num + 1;//每个人报数
            }
            if (num==3)
            {
                people[i] = 0;
                sum = sum + 1;//记录淘汰人数
                num = 0;
            }
            i++;//循环一次下标加1
        }
        if (sum==k-1)//用来确定是否只剩下一个人,如果是就不执行while循环
        {
            key = false;
        }
    }
    for (int i= 0;i < k; i++)
    {
        if (people[i]==1){
            printf("余下人的号码为:%d\n\n", i + 1);
            break;
        }
    }
    return 0;
}

5.感悟

今天学习了关于数组的一些知识点,数组这种东西看似简单,实则不然,要想灵活的运用就得对各个知识点融会贯通,今天这个题目起初一看我就一脸懵逼,除了定义几个变量以为我不知从何下手,只能找来本子跟个小学生一样一个一个掰指头来算,不过最后还是勉勉强强的写了出来,如果有什么不对的地方,请指正!

相关文章

  • C语言杀人小游戏--n个人围成一圈,依次报数(1到3),报到3的

    1.问题:n个人围成一圈,顺序排号,从第1个人开始报数(1到3报数),凡报到3的人退出圈子,问最后留下的是原来几号...

  • 算法笔记_06:蓝桥杯练习 筛选号码

    1. 问题描述 问题描述有n个人围成一圈,顺序排号(编号为1到n)。从第1个人开始报数(从1到3报数),凡报到3的...

  • 蓝桥杯算法训练-筛选号码问题(Java语言)

    描述 有n个人围成一圈,顺序排号(编号为1到n)。从第1个人开始报数(从1到3报数),凡报到3的人退出圈子。从下一...

  • Rust语言编程实例100题-069

    Rust语言编程实例100题-069 题目:有n个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数),凡报到...

  • 数 3 游戏 2

    题目 有 n 个人围成一圈,顺序排号。从第一个人开始报数(从 1 到 3 报数),凡报到 3 的人退出圈子,问最后...

  • 数 3 游戏 1

    题目 有 n 个人围成一圈,顺序排号。从第一个人开始报数(从 1 到 3 报数),凡报到 3 的人退出圈子,问最后...

  • 题解:报数问题(C++描述)

    题目相关 题目描述 有n人围成一圈,顺序排号。从第1个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下...

  • 3个月熟练使用python--Day2打卡

    1、约瑟夫环问题 问题:有n个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数),凡报到3的人退出圈子,问最...

  • 【习题37】

    【程序37】题目:有n个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下...

  • 7.29打卡

    题目:有n个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是原来第几...

网友评论

      本文标题:C语言杀人小游戏--n个人围成一圈,依次报数(1到3),报到3的

      本文链接:https://www.haomeiwen.com/subject/mbuhdctx.html