头歌c语言实训项目-综合案例课外练习:火柴游戏

news2025/1/17 17:59:12

 (创作不易,感谢有你,你的支持,就是我前行的最大动力,如果看完对你有帮助,请留下您的足迹)

目录

第1关:火柴游戏1 

题目:

代码思路:

代码表示:

第2关:火柴游戏2 

题目:

代码思路:

代码表示:


第1关:火柴游戏1 

题目:

火柴游戏

23 根火柴游戏。请编写一个简单的 23 根火柴游戏程序,实现人跟计算机玩这个游戏的程序。为了方便程序自动评测,假设计算机移动的火柴数不是随机的,而是将剩余的火柴根数对 3 求余后再加1来作为计算机每次取走的火柴数。如果剩余的火柴数小于 3,则将剩余的火柴数减 1 作为计算机移走的火柴数。计算机不可以不取,剩下的火柴数为1时,必须取走 1 根火柴。假设游戏规则如下:

  1. 两个游戏者开始拥有 23 根火柴;

  2. 每个游戏者轮流移走 1 根、2 根或 3 根火柴;

  3. 谁取走最后一根火柴为失败者。

代码思路:

本题只需要根据题目提示,编程出计算机选择的火柴数和结局判定即可,我们可以利用if语句,将计算机选择火柴的数量分为四种情况

1.剩余火柴数量g>=3时,计算机取走火柴数量为c=g%3+1

2.剩余火柴数量g<3&&g>1时,计算机取走火柴数量为c=g-1;

3.剩余火柴数量g==1时,计算机取走火柴数量为c=1;

4.剩余火柴数量g==0时,玩家输了

代码表示:

#include<stdio.h>
int main(void)
{
    int g = 23;
    int k = 3;
    int b, c;
    printf("这里是23根火柴游戏!!\n");
    printf("注意:最大移动火柴数目为三根\n");
    do{
        printf("请输入您移动的火柴数目:\n");
        scanf("%d", &b);
        /*************** Begin ***************/
        printf("您移动的火柴数目为:%d\n",b);
        g=g-b;
        printf("您移动后剩下的火柴数目为:%d\n",g);
        if(g>=3)
        {
            c=g%3+1;
            printf("计算机移动的火柴数目为:%d\n",c);
            printf("计算机移动后剩下的火柴数目为:%d\n",g-c);
            g=g-c;
        }
        else if (g<3&&g>1)
        {
            c=g-1;
            printf("计算机移动的火柴数目为:%d\n",c);
            printf("计算机移动后剩下的火柴数目为:%d\n",g-c);
            g=g-c;
        }
        else if(g==1)
        {
            c=1;
            printf("计算机移动的火柴数目为:%d\n",c);
            printf("计算机移动后剩下的火柴数目为:%d\n",g-c);
            g=g-c;
            printf("恭喜您!您赢了!");
        }
        else if(g==0)
        {
            printf("对不起!您输了!");
        }
        /*************** End ***************/
    }while (g > 0);
    return 0;
}

第2关:火柴游戏2 

题目:

火柴游戏

21 根火柴游戏。现有 21 根火柴,两人轮流取,每人每次可以取 1 至 4 根,不可多取(假如多取或者取走的数量不在合法的范围内,则要求重新输入),也不能不取,谁取最后一根火柴谁输。请编写一个程序进行人机对弈,要求人先取,计算机后取;请设计一种计算机取走火柴的规则,使得计算机一方为常胜将军。

代码思路:

本题难点在于创建随机函数(http://t.csdn.cn/UQ2t7),和上一题一样,可以将剩余火柴数分为两种情况

1.玩家拿完后剩余火柴数a==0,电脑赢

2.电脑拿完后剩余火柴数a==0,玩家赢

代码表示:

#include<stdio.h>
#include<stdlib.h>
int main(void)
{
    int a = 21, i,k;
    printf("Game begin:\n");
    while (a > 0)
    {
        do{
            printf("How many sticks do you wish to take (1~%d)?",a > 4 ? 4 : a);
            scanf("%d", &i);
        }while (i>4 || i<1 || i>a);
        /*************** Begin ***************/
        a = a-i;
        if(a==0)
        {
            printf("You have taken the last sticks.\n");
            printf("***You lose!\n");
            break;
        }
        printf("%d sticks left in the pile.\n",a);
        srand(0);
        k=rand()%4-1;
        printf("Computer take %d sticks.\n",k);
        a=a-k;
        if(a==0)
        {
            printf("Computer have taken the last sticks.\n");
            printf("***You win!\n");
            break;
        }        
        /*************** End ***************/
        printf("%d sticks left in the pile.\n", a);
    }
    printf("Game Over.");
    return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/443439.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

winform电影售票系统

一、前言 C#winform电影售票系统sqlserver数据库 主要技术&#xff1a; 基于C#winform架构和sql server数据库的电影售票系统 随着互联网高速发展&#xff0c;人们的娱乐生活也逐渐丰富&#xff0c;最普遍的娱乐休闲方式之一就是到电影院看电影&#xff0c;那么传统的电影订票…

数智化招采平台系统中智能用印解决方案,从细节上降本增效

随着现代市场的发展&#xff0c;企业规模的不断扩大&#xff0c;分支机构众多 &#xff0c;用印管理在异地使用 、签字时带来了不便。在招标采购领域中&#xff0c;用印的智慧化管理模式已逐渐成为企业缩短信息传递时间、提高采购工作效率、实现降本增效的重要手段之一 。 经过…

JFrog Artifactory的数据备份与恢复教程

ps&#xff1a;码字&#xff0c;截图不容易&#xff0c;如果对您有帮助&#xff0c;请点个赞&#xff0c;评论下&#xff0c;谢谢 目录 一、数据备份 1、使用管理员账号登录JFrog的后台&#xff0c;点击“Backups”选项 2、查看备份规则 3、修改备份规则 4、测试备份规则是否…

管理后台项目-03-SPU列表-增删改SPU-获取SKU

目录 1-spu模块分析 2-spu三级分类和列表页面 3-添加修改spu 3.1-点击新增和修改逻辑分析和功能实现 3.2-图片上传逻辑分析 3.3-销售属性逻辑分析 3.4-保存spu信息 1-spu模块分析 我们看到spu组件模块&#xff0c;上面是三级联动&#xff0c;这个我们已经在上一篇属性那…

vue+oss实现服务端签名后直传的图片上传功能

vueoss实现服务端签名后直传的图片上传功能 vueoss实现服务端签名后直传的图片上传功能 vueoss实现服务端签名后直传的图片上传功能前言一、java服务端签名接口设计二、Vue element UI的upload图片上传三、前端直传oss可能出现跨域问题四、服务端签名流程总结 前言 基于Post …

Java基层卫生健康云源码 医院HIS信息管理系统源码

近年来&#xff0c;随着互联网技术的快速发展&#xff0c;云计算技术也得到了广泛的应用。云计算技术不仅可以提高计算效率&#xff0c;还可以实现资源的共享和协同&#xff0c;为基层卫生健康事业的发展提供了新的思路和机遇。 基层卫生健康云系统是指利用云计算技术&#xf…

【Java|golang】1026. 节点与其祖先之间的最大差值---避坑,注意:golang中同一个包下的全局变量只加载一次。

给定二叉树的根节点 root&#xff0c;找出存在于 不同 节点 A 和 B 之间的最大值 V&#xff0c;其中 V |A.val - B.val|&#xff0c;且 A 是 B 的祖先。 &#xff08;如果 A 的任何子节点之一为 B&#xff0c;或者 A 的任何子节点是 B 的祖先&#xff0c;那么我们认为 A 是 B…

环境变量的初始

目录 &#xff1a; 1.引出环境变量 2. 简单使用一下环境变量 3.环境变量的概念 4.本地变量 5.环境变量的相关命令 6.环境变量获取和操作的方式 7. getenv&#xff08;最常用的程序获取环境变量的方式&#xff09; 8.环境变量的全局属性 -------------------------------------…

擎创动态 | 二等奖!擎创携手国家电网喜获“浪潮信息杯”绝佳成绩

近日&#xff0c;2022电力行业信息化年会于湖南省长沙市圆满落下帷幕。据悉&#xff0c;今年是电力行业信息化年会举办的第二十周年&#xff0c;年会的主题为“低碳数字新动力 电力转型新发展”&#xff0c;紧密围绕“十四五”数据经济发展&#xff0c;“双碳”战略、新型电力系…

10分钟学会使用Jmeter工具做接口自动化测试

Jmeter接口自动化测试项目实战视频教程地址&#xff1a;https://www.bilibili.com/video/BV1e44y1X78S/? 目录&#xff1a;导读 引言 一、软件下载 二、软件安装及设置环境变量 三、Jmeter做接口自动化测试的步骤 四、接口依赖的解决 引言 大家好&#xff01;我是不二。…

《Linux基础》08. 日志管理 · 备份与恢复

Linux基础 - 08 1&#xff1a;日志管理1.1&#xff1a;系统常用日志1.2&#xff1a;日志管理1.2.1&#xff1a;日志服务1.2.2&#xff1a;配置文件1.2.3&#xff1a;自定义日志管理 1.3&#xff1a;日志轮替1.3.1&#xff1a;轮替服务1.3.2&#xff1a;配置文件1.3.3&#xff1…

顺序表(更新版)——“数据结构与算法”

各位CSDN的uu们你们好呀&#xff0c;今天小雅兰又来更新新专栏啦&#xff0c;其实之前我就已经写过了顺序表的内容&#xff0c;只是之前的内容不是最新版的顺序表&#xff0c;现在&#xff0c;我来更新一下最新版的顺序表&#xff0c;下面&#xff0c;就让我们进入更新版的顺序…

开发常用的 Linux 命令1(文件和目录)

开发常用的 Linux 命令汇总1&#xff08;文件和目录&#xff09; 作为开发者&#xff0c;Linux是我们必须掌握的操作系统之一。因此&#xff0c;在编写代码和部署应用程序时&#xff0c;熟练使用Linux命令非常重要。这些常用命令不得不会&#xff0c;掌握这些命令&#xff0c;…

小项目发布:TLC_Browers--一个开源的基于vb6基于Webview2 Runtime支持html5和多标签的浏览器

项目名称:TLC浏览器(TLC_NLP机器人的附属产品) 技术架构:webview2 runtime,可参考链接WebView2 - Microsoft Edge Developer 目录介绍: kernel:控制webview2内核的代码 client:主程序代码&#xff0c;将kernel变为自己的子窗体&#xff0c; 进程通信方式:共享文件 release:正…

Jenkins 在linux安装配置

下载Jenkins 安装包 官网地址&#xff1a;https://www.jenkins.io/index.html 因为我的是centos&#xff0c;所以我选择redhat的长期支持版本 linux上执行&#xff1a; wget https://get.jenkins.io/redhat-stable/jenkins-2.222.1-1.1.noarch.rpm安装 使用rpm安装&#xf…

【Linunx报错】程序在运行时无法找到一个名为 “libctemplate.so.3“ 的共享库文件

第一个报错&#xff1a; error while loading shared libraries: libctemplate.so.3: cannot open shared object file: No such file or directory 解决方法&#xff1a; 这个错误信息提示你的程序在运行时无法找到一个名为 “libctemplate.so.3” 的共享库文件&#xff0c;因…

GAMES302等几何分析(IGA)---- 课程简介及等几何分析的介绍

文章目录 前言提纲产品数字化设计\仿真\优化全流程介绍计算机辅助设计&#xff08;CAD&#xff09;NURBS理论基础计算机辅助工程&#xff08;CAE&#xff09;什么是CAE为什么用CAECAE典型应用CAE解决问题的一般过程CAE方法体系及软件 结构优化创成式设计设计仿真类工业软件国产…

mybatis注解的详解和开发(增、删、改、查以及一对一、一对多/多对一、多对多的关系联查)

mybatis注解的基本理解和开发(增、删、改、查以及一对一、一对多/多对一、多对多的关系联查) 使用mybatis注解开发的原因&#xff1f; 注解提供了一种简单的方式来实现简单映射语句&#xff0c;而不会引入大量的开销。能够读懂别人写的代码&#xff0c;特别是框架相关的代码。…

Java——反转链表

题目链接 牛客在线oj题——反转链表 题目描述 给定一个单链表的头结点pHead(该头节点是有值的&#xff0c;比如在下图&#xff0c;它的val是1)&#xff0c;长度为n&#xff0c;反转该链表后&#xff0c;返回新链表的表头。 数据范围&#xff1a; 0≤n≤1000 要求&#xff1…

OpenAI最新官方ChatGPT聊天插件接口《插件示例demo》全网最详细中英文实用指南和教程,助你零基础快速轻松掌握全新技术(四)(附源码)

Example plugins 插件示例demo 前言Introduction 导言Learn how to build a simple todo list plugin with no auth 了解如何构建一个简单的待办事项列表插件&#xff0c;无需授权Learn how to build a simple todo list plugin with service level auth 了解如何构建一个简单的…