随笔都是学习笔记
随笔仅供参考,为避免笔记中可能出现的错误误导他人,请勿转载。

题目:

一共100个球,两人轮流拿,每人每次最多拿5个,最后一个拿的人赢;如果我先拿,怎么拿一定会赢?

#include <stdio.h>
#include <stdlib.h>
#include <time.h>

int sc();

int main()
{
    // 设置随机数生成器的种子为当前时间
    srand(time(NULL));
    
    
    int bal = 100;    // 初始化球数量
    int count = 1;    // 计数
    while(1){
        printf("======================【%d】======================\n", count++);
        int choose;    // 玩家选择拿走的球
        //TODO
        int rm = rand() % 5 + 1;    // 模拟人机拿走球的数量
        if(bal<=5){    // 小于最大拿走量则直接拿走全部
            //TODO
            rm = bal;
        }
        bal -= rm;
        printf("【人机】选择拿走【%d】个球,当前剩余【%d】个球\n", rm, bal);
        if(bal <=0){    // 球被拿光后获胜
            //TODO
            printf("【人机】获胜!");
            break;
        }
        printf("【玩家】请选择拿球数量:");
        choose = sc();
        
        bal -= choose;
        printf("【玩家】选择拿走【%d】个球,当前剩余【%d】个球\n",choose, bal);
        if(bal <=0){    // 球被拿光后获胜
            //TODO
            printf("【玩家】获胜!");
            break;
        }
        printf("=================================================\n\n");
    }
    return 0;        
}

int sc(){    // 递归校验玩家拿走数量
    int choose;
    scanf("%d", &choose);
    if(choose>5){
        //TODO
        printf("请输入1-5之间的数字:");
        choose = sc();
    }
    return choose;
}

 

 

 

posted on 2023-10-07 19:26  时间完全不够用啊  阅读(72)  评论(0编辑  收藏  举报