专栏首页用户画像C++解决常胜将军问题

C++解决常胜将军问题

现有21根火柴,两人轮流取,每人每次可以取走1至4根,不可多取,也不能不取,谁取最后一根火柴谁输。请编写一个程序进行人机对弈,要求人先取,计算机后取;计算机一方为“常胜将军”。

#include<stdio.h>

void main()
{
    int s=21;
    int n;
    printf("比赛开始!\n");
    do
    {
        if(s==1)
        {
            printf("你必须拿最后一根火柴!\n");
            break;
        }
        printf("你想要拿几根火柴(1~4)?");
        scanf("%d",&n);
        while(1)
        {
            if(n>=1&&n<=4)
            {
                break;
            }
            printf("只能取1~4根火柴哦!\n请重新输入:");
            scanf("%d",&n);
        }
        s=s-n;
        if(s==0)
        {
            break;
        }
        printf("还剩%d根火柴\n",s);
        printf("电脑拿了%d根火柴\n",5-n);
        s=s-(5-n);
        printf("还剩%d根火柴\n",s);
    }while(s);
    printf("电脑获胜!\n");
}

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 潘石屹用Python解决100个问题 | 企业根据利润提成发奖金

    今天跟朋友们一起学习“企业根据利润提成发奖金”的问题。当利润(I)低于或等于10万元时,奖金可提10%;当利润高于10万元,低于20万元时,低于10万元的部分按...

    week
  • 软件测试之 控制流图 圈复杂度 独立路径 测试用例

    例题:void Sort ( int  iRecordNum, int iType)

    week
  • Leetcode No.4 寻找两个正序数组的中位数

    请你找出这两个正序数组的中位数,并且要求算法的时间复杂度为 O(log(m + n))。

    week
  • 打印两棵松树

    汐楓
  • 基础知识 | 每日一练(110)

    士人有百折不回之真心,才有万变不穷之妙用。立业建功,事事要从实地着脚,若少慕声闻,便成伪果;讲道修德,念念要从虚处立基,若稍计功效,便落尘情。 ...

    C语言入门到精通
  • 打印法老的金字塔-c语言

    汐楓
  • 什么是真正的程序员

    这篇文章的原文来自:A Little Printf Story 作者仿照《小王子》中的情节,通过小printf遇见的不同类型的程序员,最后悟出什么才是真正的程序...

    用户1667431
  • 打印矩阵、机器人、菜单

    int main(void) { printf("n"); printf("1 2 3 4n5 6 7 8n9 10 11 12n13 14 15 16n...

    汐楓
  • C语言 第四章 分支结构练习

    一、输入语文,数学成绩,根据平均分分3档 #include "stdio.h" void main() { //接受用户输入 float chi...

    张果
  • 基础知识 | 每日一练(109)

    学生:我如何在 printf 的格式串中输出一个 ’%’?我试过 \%, 但是不 行。

    C语言入门到精通

扫码关注云+社区

领取腾讯云代金券