随笔都是学习笔记
随笔仅供参考,为避免笔记中可能出现的错误误导他人,请勿转载。
posts - 398,comments - 0,views - 13万

题目:

一共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   时间完全不够用啊  阅读(113)  评论(0编辑  收藏  举报
(评论功能已被禁用)
相关博文:
阅读排行:
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

点击右上角即可分享
微信分享提示