当前位置: 首页 > news >正文

投骰子——(随机游戏的控制)

精华点在于:利用封装,函数之间的良好调用,从而清晰明了的解决问题。

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
# include<stdlib.h>
# include<time.h>
# include"math.h"
# define ARR_LEN 10
# define MAX_NUM 1000
# define _NUM 6
/*
* 第一次掷的时候:如果点数之和为 7 或 11 则获胜;
如果点数之和为2、3或12则落败;
其他情况下的点数之和称为“目标”,继续投掷两个骰子。
在后续的投掷中:如果玩家再次掷出“目标”点数则获胜;
如果掷出7则落败;
其他情况都忽略,继续投掷两个骰子。
在每一局游戏结束时,程序都要询问用户是否再玩一次,如果用户输入的回答不是 y 或 Y ,那么就结束游戏,程序此时要打印显示胜败的次数。
* 
* 
*/
/*
两个筛子的和 作为一个随机数,
区别在于 第一次和其他几次的输赢规律是不一样的
第一次 结果的和如果是7/11则是获胜  =》结束
如果是2、3、12则识别 =》结束
其他 情况则记录目标  =》第二次投掷其他次数:再次投掷 
若是第二次是目标数 =》胜利 结束:
如果是7 =>失败 是否结束
其他情况忽略继续rand确定赢的条件,第一次赢是7/11, 2/3/12是输 其他都是继续投掷并且存储其他的值,直达再次投掷出该和,而且如果和是7是失败。
封装一个计算两次投掷的和控制在2~12之间
再封装一个是用于判断是否赢得游戏 包含第一次投掷和接下来几次投掷,知道此轮游戏结束
在一轮游戏结束之后 在看是否继续执行游戏,相应的需要统计赢和输的次数
*/
# include<stdbool.h>
//游戏开始
bool play() {//游戏的输赢 由bool值来得知int sum = roll_play();printf("You rolled: %d\n", sum);if (sum == 7 || sum == 11) {printf("You win!\n");return true;//赢了游戏就直接退出 由主函数来得知该玩家是否进行下一轮}if (sum == 2 || sum == 3 || sum == 12) {printf("You lose!\n"); //输了游戏就直接退出 由主函数来得知该玩家是否进行下一轮return false;} //只要没退出函数 执行到了这一步 就是进入其他情况 其他情况由循环进行//进行之前记录之前的点数,其他情况的循环 保证一点就是找到一样的目标就是赢得游戏//否则继续投掷int target = sum;printf("Your point is: %d\n", sum);while (true) {//否则继续投掷sum = roll_play();printf("You rolled: %d\n", sum);if (sum == target) {printf("You win!\n");return true;}if (sum == 7) {printf("You lose!\n");return false;}}
}
//两次投掷的和 结果
int roll_play(void) {int num1 = rand() % 6 + 1;int num2 = rand() % 6 + 1;int sum = num1 + num2;return sum;}
//主函数只需要保证是否需要继续游戏 另外两个函数分别是进行骰子的投掷,以及按照游戏规则的进行。
int main(void) {char play_;int win = 0, lose = 0;srand(time(NULL));//产生一个序列的数就可以do {play() ? win++ : lose++;printf("Play again? (y/n)\n");scanf(" %c", &play_);//为了保证空格y的情况依旧可以正常运行 在%c前面加一个空格来读走空格while (getchar() != '\n');//清空输入缓存 防止多个yyy在缓冲区内} while (play_ == 'y' || play_ == 'Y');printf("You win: %d, lose: %d\n", win, lose);return 0;
}       

在这里插入图片描述

相关文章:

投骰子——(随机游戏的控制)

精华点在于&#xff1a;利用封装&#xff0c;函数之间的良好调用&#xff0c;从而清晰明了的解决问题。 #define _CRT_SECURE_NO_WARNINGS #include <stdio.h> # include<stdlib.h> # include<time.h> # include"math.h" # define ARR_LEN 10 # d…...

找出最长等值子数组

问题 给你一个下标从 0 开始的整数数组 nums 和一个整数 k 。 如果子数组中所有元素都相等&#xff0c;则认为子数组是一个 等值子数组 。注意&#xff0c;空数组是 等值子数组 。 从 nums 中删除最多 k 个元素后&#xff0c;返回可能的最长等值子数组的长度。 子数组 是数…...

Go 切片常用操作与使用技巧

1.什么是切片 在 Go 语言中的切片&#xff08;slice&#xff09;是一种灵活的动态数组&#xff0c;它可以自动扩展和收缩&#xff0c;是 Go 语言中非常重要的数据结构之一。切片是基于数组实现的&#xff0c;它的底层是数组&#xff0c;可以理解为对底层数组的抽象。它会生成一…...

2024 中青杯高校数学建模竞赛(A题)数学建模完整思路+完整代码全解全析

你是否在寻找数学建模比赛的突破点&#xff1f;数学建模进阶思路&#xff01; 作为经验丰富的数学建模团队&#xff0c;我们将为你带来2024 长三角高校数学建模竞赛&#xff08;A题&#xff09;的全面解析。这个解决方案包不仅包括完整的代码实现&#xff0c;还有详尽的建模过…...

开源与闭源:AI模型发展的双重路径之争

前言 随着人工智能&#xff08;AI&#xff09;技术的飞速发展&#xff0c;AI模型的应用已经渗透到各行各业&#xff0c;从医疗、金融到制造、教育&#xff0c;无不受到AI技术的深刻影响。在讨论一个AI模型“好不好”“有没有发展”时&#xff0c;绕不过“开源”和“闭源”两条…...

微信小程序---小程序文档配置(2)

一、小程序文档配置 1、小程序的目录结构 1.1、目录结构 小程序包含一个描述整体程序的 app 和多个描述各自页面的 page 一个小程序主体部分由三个文件组成&#xff0c;必须放在项目的根目录 比如当前我们的《第一个小程序》项目根目录下就存在这三个文件&#xff1a; 1…...

15:00面试,15:08就出来了,问的问题有点变态。。。

从小厂出来&#xff0c;没想到在另一家公司又寄了。 到这家公司开始上班&#xff0c;加班是每天必不可少的&#xff0c;看在钱给的比较多的份上&#xff0c;就不太计较了。没想到8月一纸通知&#xff0c;所有人不准加班&#xff0c;加班费不仅没有了&#xff0c;薪资还要降40%…...

电磁兼容(EMC):去耦电容设计详解

目录 1. 概念 2. 去耦电容工作机理 3. 去耦电容大小选择 4. 去耦电容PCB布局 电容在电路中不同作用有不同的称呼去耦电容、旁路电容、储能电容&#xff0c;而这些作用又可以统称为滤波。本文将详细解读一下三者之间的差别&#xff0c;并着重说明一下去耦电容的设计方法。 …...

《数组逆序输出》

描述 编写程序&#xff0c;输入10个整数n存入&#xff0c;再按逆序重新存放后再输出。 输入描述 输入共10个数。 输出描述 输出共1行&#xff0c;每个数字用空格隔开。 样例输入 1 -5 -4 -3 -2 -1 0 1 2 3 4 样例输出 1 4 3 2 1 0 -1 -2 -3 -4 -5 提示 对于100%的数据…...

必应崩了?

目录 今天使用必应发现出现了不能搜索&#xff0c;弹出乱码的情况。 搜了一下&#xff0c;发现其他人也出现了同样的问题。 使用Edge浏览器的话&#xff0c;可以试着改一下DNS&#xff0c;有可能会恢复正常&#xff08;等官方修复了记得改回来&#xff09; 使用谷歌浏览器打开…...

Elasticsearch集群和Logstash、Kibana部署

1、 Elasticsearch集群部署 服务器 安装软件主机名IP地址系统版本配置ElasticsearchElk10.3.145.14centos7.5.18042核4GElasticsearchEs110.3.145.56centos7.5.18042核3GElasticsearchEs210.3.145.57centos7.5.18042核3G 软件版本&#xff1a;elasticsearch-7.13.2.tar.gz 示…...

网络的基础理解

文章目录 网络的基础认识 网络协议协议分层OSI七层模型TCP/IP 五层/四层 模型 网络的基础认识 先来看下面几个问题 什么是网络&#xff1f; 网络就是有许多台设备包括计算机单不仅限于计算机&#xff0c;这些设备通过相互通信所组成起来系统&#xff0c;我们称之为网络所以如…...

Android Studio 与 Gradle 及插件版本兼容性

Android Studio 开始新项目时&#xff0c;会自动创建其中部分文件&#xff0c;并为其填充合理的默认值。 项目文件结构布局&#xff1a; 一、Android Gradle 及插件作用&#xff1a; Android Studio 构建系统以 Gradle 为基础&#xff0c;并且 Android Gradle 插件 (AGP) 添加…...

【BUG】Edge|联想电脑 Bing 搜索报错“Ref A: 乱码、 Ref B:乱码、Ref C: 日期” 的解决办法

文章目录 省流版前言解决办法 详细解释版前言问题描述与排查过程解决办法与总结 省流版 我原以为我解决了&#xff0c;才发的博客&#xff0c;晚上用了一下其他设备发现还是会出现这个问题… 这篇博客并未解决该问题&#xff0c;如果评论里有人解决了这个问题不胜感激&#x…...

深度学习小车操作手册全

深度学习小车_操作手册_全 资源链接 分享文件&#xff1a;深度学习小车_操作手册_全.pdf 链接&#xff1a;https://pan.xunlei.com/s/VNy-KXPDZw64RqQGXiWVEDMRA1?pwdymu4# 复制这段内容后打开手机迅雷App&#xff0c;查看更方便智能车简介 2019 年的特斯拉自动驾驶开放日上…...

Python实现天气数据采集

Python实现天气数据采集 一、需求介绍二、完整代码一、需求介绍 本次天气数据采集的需求是获取每日的最高温、最低温、风力、风向、天气状况、AQI指数,如图所示,完整代码附后: 本次采集的目标网址是2345天气网: 上图的URL中,beijing是城市名称的缩写,54511即为城市代码…...

05 JavaSE-- 异常、IOStream、多线程、反射、Annotation、泛型、序列化

Exception 异常 异常也是对象&#xff0c;也有自己的体系&#xff0c;在这个体系中&#xff0c;所有异常对象的根类是 throwable 接口。异常和 error 错误是不同的概念。 错误是严重的 JVM 系统问题&#xff0c;一般不期待程序员去捕获、处理这些错误&#xff0c;同时&#xf…...

c++/c语法基础【2】

目录 1.memset 数组批量赋值 2.字符数组 ​编辑输入输出: 字符数组直接输入输出%s: gets! string.h 1.strlen:字符串去掉末尾\0的长度...

python 庆余年2收视率数据分析与可视化

为了对《庆余年2》的收视率进行数据分析与可视化&#xff0c;我们首先需要假设有一组收视率数据。由于实际数据可能无法直接获取&#xff0c;这里我们将使用模拟数据来演示整个过程。 以下是一个简单的步骤&#xff0c;展示如何使用Python&#xff08;特别是pandas和matplotli…...

yolov8训练自己数据集时出现loss值为nan。

具体原因目前暂未寻找到。 解决办法 将参数amp改成False即可。 相关资料&#xff1a; https://zhuanlan.zhihu.com/p/165152789 https://github.com/ultralytics/ultralytics/issues/1148...

通过配置驱动前端页面的实现方法

通过配置驱动前端页面的实现方法 配置驱动开发&#xff08;Configuration-Driven Development, CDD&#xff09;是一种通过外部配置而非硬编码来控制应用行为的开发模式。在前端领域&#xff0c;这种模式可以显著提升页面灵活性和可维护性。以下是具体实现方案&#xff1a; 理解…...

数字孪生+AI:某国家级技术科研机构:耦合仿真评估部件性能,长期运维监测承压状态

部件仿真&#xff5c;设备安全&#xff5c;能源装备&#xff5c;风险评估 某国家级技术科研机构长期服务于国家级重点工程与大型产业体系&#xff0c;在复杂系统运行保障、风险评估与技术支撑等方面承担着关键角色。其业务覆盖多类型基础设施与工程场景&#xff0c;具备完善的…...

在wsl中利用快马平台五分钟搭建flask博客后端原型

最近在Windows系统下折腾WSL&#xff08;Windows Subsystem for Linux&#xff09;时&#xff0c;发现结合InsCode(快马)平台可以快速搭建项目原型&#xff0c;特别适合需要Linux环境特性的开发验证。就拿搭建一个Flask博客后端来说&#xff0c;传统方式从零开始配置环境、编写…...

一步步教你:星图平台部署Qwen3-VL:30B完整流程,Clawdbot飞书集成实战

一步步教你&#xff1a;星图平台部署Qwen3-VL:30B完整流程&#xff0c;Clawdbot飞书集成实战 想象一下这个场景&#xff1a;你的团队在飞书群里讨论产品设计&#xff0c;有人发了一张UI截图问“这个按钮位置是不是太靠下了&#xff1f;”&#xff1b;财务同事上传了一张发票照…...

STM32F407ZGT6最小系统:从原理图到PCB的实战设计解析

1. STM32F407ZGT6最小系统设计入门 第一次接触STM32F407ZGT6最小系统设计时&#xff0c;我也被各种专业术语和复杂的电路图搞得晕头转向。但经过几个项目的实战后&#xff0c;我发现只要掌握几个关键模块&#xff0c;设计一个稳定可靠的最小系统其实并不难。STM32F407ZGT6是STM…...

代码重构的艺术:在业务狂奔中如何优雅地还技术债

业务压力下的质量困局在快节奏的软件开发世界中&#xff0c;业务需求如同永不停歇的浪潮&#xff0c;推动着团队高速前行。为了抢占市场先机、快速响应变化&#xff0c;“先上线&#xff0c;再优化”几乎成了许多项目的默认模式。然而&#xff0c;这种模式背后&#xff0c;是以…...

从CVE-2025-65112到NPM投毒:手把手教你搭建安全的私有包仓库(以PubNet为例)

从CVE-2025-65112到NPM投毒&#xff1a;手把手教你搭建安全的私有包仓库&#xff08;以PubNet为例&#xff09; 最近几年&#xff0c;软件供应链攻击事件频发&#xff0c;从SolarWinds事件到Log4j漏洞&#xff0c;再到最近的NPM投毒事件&#xff0c;每一次都让开发者们心惊胆战…...

Linux进程调度机制与性能优化实践

1. Linux进程调度概述在Linux操作系统中&#xff0c;进程调度是内核最核心的功能之一。作为一个多任务操作系统&#xff0c;Linux需要合理地分配有限的CPU资源给众多进程&#xff0c;使它们能够高效、公平地运行。理解Linux的调度机制&#xff0c;对于系统性能调优、应用开发以…...

别再用Delay了!用GD32的TIMER5实现精准1ms定时,让你的嵌入式程序更高效

告别阻塞式延时&#xff1a;用GD32 TIMER5构建高效嵌入式系统心跳 在嵌入式开发中&#xff0c;时间管理如同系统的心跳&#xff0c;决定了整个应用的响应速度和执行效率。许多开发者习惯使用delay_ms()这类阻塞式延时函数&#xff0c;却不知这会让CPU陷入无意义的等待状态&…...

理解usearch的动态内存调整:实现高效向量搜索的终极指南

理解usearch的动态内存调整&#xff1a;实现高效向量搜索的终极指南 【免费下载链接】usearch Fast Open-Source Search & Clustering engine for Vectors & Arbitrary Objects in C, C, Python, JavaScript, Rust, Java, Objective-C, Swift, C#, GoLang, and Wolfr…...