美文网首页
趣味C语言之杀人游戏

趣味C语言之杀人游戏

作者: 凌云struggle | 来源:发表于2019-08-02 21:18 被阅读0次
    • 游戏简述

      终端输入参与的人数:7,依次编号为1,2,3,4,5,6,7,大家围成一圈,输入死亡编号:3,凡是报到3的人死亡,剩下的人继续报数,问最后活着的人的编号是多少?
    • 程序运行效果

    杀人游戏.png
    • 解题思路

      首先对参与人数依次进行编号,并且储存在数组中,然后再进行报数,报到死亡号码时对应元素的值变为-1(表示死亡),记录总的死亡人数,当死亡人数与参与人数之差为1时,游戏结束,数组中不为-1的元素值即为最后活着的人的编号。
    • 代码实现

    #include <stdio.h>
    
    //利用宏定义给死亡状态赋值
    #define KILLED -1
    
    int main(int argc, const char * argv[]) {
        /*
         杀人游戏/数字游戏
         终端输入参与的人数:7
         1 2 3 4 5 6 7
         大家围成一圈
         请输入死亡编号:3
         凡是报道3的人都死亡 后面的人继续数数
         输出最后一个活着的人的编号
         */
        
        int total = 0;  //总人数
        int killNumber;  //被杀死的人的编号
        int number[100] = {}; //存放每个人的编号
        int totalKillNumber = 0;//记录被杀掉的人数
        int count = 0;   //用来报数
        
        
        
        
        printf("请输入参与游戏的人数:\n");
        scanf("%d",&total);
        printf("请输入被杀掉的人的编号:\n");
        scanf("%d",&killNumber);
        
        
        //给每个人编号
        for (int i = 0; i < total; i++) {
            number[i] = i + 1;
        }
        
        //游戏开始
        for (int i = 0; i < total; i ++) {
            if (number[i] != KILLED) {
                //开始报数
                count++;
            }
            //判断当前号码是否到了死亡号码
            if (count == killNumber) {
                //报到杀死编号的赋值为KILLED
                number[i] = KILLED;
                
                //杀死人数+1
                totalKillNumber++;
                
                //count还原
                count = 0;
                
                //当总杀人数为total-1时跳出循环
                if (totalKillNumber == total-1) {
                    break;
                }
            }
            
            //当i为最后一个时,i还原
            if (i == total - 1) {
                //最后执行i++,因此i=-1
                i = -1;
            }
        }
        
        
        //输出最后一个活着的人的编号
        for (int i = 0; i < total; i++) {
            if (number[i] != KILLED) {
                printf("最后一个人的编号为:%d\n",number[i]);
            }
        }
        return 0;
    }
    
    

    注意:

    1. 在合适的条件下对count与i的值进行还原
    2. 跳出循环的条件的判断
    • 心得体会

    虽然是一个挺简单的小demo,却也学到了很多,在一些细节方面有了更好的把握 ,尤其是for循环和while循环的运用,以及对跳出循环条件的判断。总的来说,收获满满,革命尚未成功,同志仍需努力!!

    相关文章

      网友评论

          本文标题:趣味C语言之杀人游戏

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