入门C语言Day19——猜随机数游戏

之前学了分支与循环的很多内容,所以今天可以试着来运用之前的知识来试着写一些有趣的程序——猜随机数游戏。(当然,还有一些知识要补充。)

这个多数人都应该有所耳闻,就是规定一个数字范围,然后去猜数字,根据反馈去调整所猜的数字直到猜对。

所以我们假定电脑生成的随机数为1~100,并且电脑会根据我们猜的数给出大于猜测数或小于猜测数的反馈,直到我们猜对为止。

首先需要生成随机数,函数 rand 就是在C语言中提供的函数,用于生成随机数。

函数原型:(void表示没有参数)

int rand (void);

使用rand函数需要头文件stdlib.h

rand函数会返回一个伪随机数,这个随机数的范围是在0~RAND_MAX之间,这个RAND_MAX的大小是依赖编译器上实现的,但是大部分编译器上是32767。

伪随机数就是指程序生成的随机数,看似随机,实际上是由算法生成的,不完全是随机的。因为真正的随机数是完全不会知道下一个数是什么的。

而且如果多生成几遍随机数,就会发现每次生成的随机数实际上是一样的。rand 函数是对一个叫“种子”的基准值进行运算生成的随机数,每次生成的随机数相同的原因就在于rand函数生成随机数的默认种子是1。

所以我们要让种子变化,才能生成不同的随机数。

而初始化随机数的生成器在C语言中又是一个函数:srand

void srand (unsigned int seed);

程序需要先调用srand函数,再调用 rand ,通过 srand 函数的参数 seed 来设置 rand 函数来成随机数的时候的种子,只要种子在变化,每次生成的随机数序列也就变化了。但这个时候又要给 srand 一个随机的种子。

谈到变化的种子,莫过于时间,时间是在随时在变化的,程序中我们一般是使用程序运行的时间作为种子的。这里就有个函数叫time,就可以获得这个时间。

 time_t time (time_t* timer);

time 函数会返回1970年1月1日0时0分0秒到现在程序运行时间之间的差值,单位是秒。返回的类型是time_t类型的。time_t 类型本质上其实就是32位或者64位的整型类型。

time函数的参数 timer 如果是非NULL的指针的话,函数也会将这个返回的差值放在timer指向的内存中带回去。

如果 timer 是NULL,就只返回这个时间的差值。time函数返回的这个时间差也被叫做:时间戳。

time函数的时候需要包含头文件:time.h

在VS2022 上time_t类型的说明:

#ifndef _CRT_NO_TIME_T#ifdef _USE_32BIT_TIME_Ttypedef __time32_t time_t;#elsetypedef __time64_t time_t;#endif
#endiftypedef long                           __time32_t;
typedef __int64                        __time64_t;

只是让time函数返回时间戳,就可以这样写:

time(NULL);

所以就可以使用time函数的返回值设置种子,且因为 srand 的参数是 unsigned int 类型,需要将 time 函数的返回值强制类型转换

srand((unsigned int)time(NULL));

接下来就可以设置随机数的范围:

如果要生成a~b的随机数,方法如下:

a + rand()%(b-a+1)

然后就自己试试吧....

以下是参考代码:

#include <stdio.h>
#include <stdlib.h>
#include <time.h>void game()
{int r = rand()%100+1;int guess= 0;while(1){printf("请猜数字>:");scanf("%d", &guess);if(guess < r){printf("猜小了\n");}else if(guess > r){printf("猜⼤了\n");}else{printf("恭喜你,猜对了\n");break; }}
}void menu()
{printf("***********************\n");printf("****** 1. play ******\n");printf("****** 0. exit ******\n");printf("***********************\n");
}int main()
{int input = 0;srand((unsigned int)time(NULL));do{menu();printf("请选择:>");scanf("%d", &input);switch(input){case 1:game();break;case 0:printf("游戏结束\n");break;default:printf("选择错误,重新选择\n");break;}}while(input);return 0;
}

也可以加上猜数字的次数限制哦~

今天的内容就这么多啦~下次再见~

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

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

相关文章

C#开机启动秘籍:唤醒沉睡的巨人

开机启动简介 在软件开发的世界里&#xff0c;有些程序需要在电脑启动时即刻唤醒&#xff0c;执行它们的关键任务。这就像是唤醒一位沉睡的巨人&#xff0c;确保它在第一时间内守护我们的数字世界。但是&#xff0c;如何使用C#实现这一功能呢&#xff1f;让我们一起探索这个技术…

文件解析的终极工具:Apache Tika

文件解析的终极工具&#xff1a;Apache Tika Apache Tika 简介 Apache Tika 是一个开源的、跨平台的库&#xff0c;用于检测、提取和解析各种类型文件的元数据。 它支持多种文件格式&#xff0c;包括文档、图片、音频和视频。 Tika是一个底层库&#xff0c;经常用于搜索引擎…

Android 列表或网格形式展示大量数据:RecyclerView

目录 RecyclerView是什么如何使用RecyclerView 涉及到的类LayoutManager为Item设置不同的布局样式制作拖动的RecyclerView 一、RecyclerView是什么 RecyclerView是Android支持库中的一个控件&#xff0c;用于在列表或网格形式展示大量数据。它是ListView的升级版&#xff0c…

《梦醒蝶飞:释放Excel函数与公式的力量》18.1 图表类型与设计

第18章&#xff1a;创建图表和数据可视化 18.1 图表类型与设计 Excel提供了多种图表类型&#xff0c;帮助用户以直观的方式展示数据。选择合适的图表类型和设计可以显著提高数据的可读性和理解度。以下将介绍常见的图表类型及其应用&#xff0c;并通过具体案例进行说明。 18.…

如何利用Jenkins自动化管理、部署数百个应用

目录 1. Jenkins 安装与部署步骤 1.1 系统要求 1.2 安装步骤 1.2.1 Windows 系统 1.2.2 CentOS 系统 1.3 初次配置 2. Gradle 详细配置方式 2.1 安装 Gradle 2.1.1 Windows 系统 2.1.2 CentOS 系统 2.2 配置 Jenkins 中的 Gradle 3. JDK 详细配置方式 3.1 安装 JD…

Java:防止输入输出超时

一、防止输入超时 当我们直接使用Scanner进行输入操作的时候&#xff0c;每次读取输入的数据都会进行一次硬盘的IO操作&#xff0c;这个操作是很慢的&#xff0c;如果要读取的数据过多&#xff0c;那么我们在刷题网站上就很有可能因为多次的数据读取操作产生超时&#xff01;那…

渠道查问卷调查个人怎么做?

大家好&#xff0c;我是橙河老师&#xff0c;今天讲一讲渠道查问卷调查个人怎么做&#xff1f; 对海外问卷项目有过一些了解的人呢&#xff0c;都应该知道一些渠道查的优势&#xff0c;首先是省去了注册账号、养号一系列的繁琐操作&#xff0c;那通过测题、做题&#xff0c;然…

vscode调试nextjs前端后端程序、nextjs api接口

最近有一个项目使用了nextjs框架&#xff0c;并且使用nextjs同时实现了前后端&#xff0c;由于之前前后端都是分离的&#xff0c;前端的调试可以通过在代码种添加debugger或者直接在浏览器中打断点实现&#xff0c;现在想调试后端接口&#xff0c;前面的方式就不适用了。故研究…

CMA软件实验室评审如何做好人员技术能力的评价?

人员作为实验室的一个重要质量因素&#xff0c;其技术能力和素质水平体现了实验室水平的高低。人员能力是随着时间动态变化的&#xff0c;有效地评价实验室人员的技术能力&#xff0c;是保证实验室活动的必要条件。CMA软件实验室评审也要求实验室要注意对人员能力的监督&#x…

Spring Data Redis 报错 WRONGPASS invalid username-password pair问题解决

Spring Data Redis 报错 WRONGPASS invalid username-password pair问题解决 缘起 spring data redis版本&#xff1a;3.2.5 redis server版本&#xff1a;社区版6.0.2 新项目引入了redis&#xff0c;我就把原来的redis代码拷贝过来&#xff0c;但使用时报错&#xff1a; Cau…

基于web的物流配送管理系统/基于客户时间窗变化的物流配送管理系统/快递配送管理系统

摘 要 随着信息技术和网络技术的飞速发展&#xff0c;人类已进入全新信息化时代&#xff0c;传统管理技术已无法高效&#xff0c;便捷地管理信息。为了迎合时代需求&#xff0c;优化管理效率&#xff0c;各种各样的管理系统应运而生&#xff0c;各行各业相继进入信息管理时代&a…

性能测试工具、负载测试工具、缺陷跟踪工具推荐

负载测试工具 - 有助于对站点或应用程序进行性能/负载测试 1&#xff09;WebLOAD WebLOAD 是一款出色的测试工具&#xff0c;提供了许多强大的脚本功能&#xff0c;有助于测试复杂场景。该工具支持从 Selenium 到移动端、从企业应用到网络协议的数百种技术。使用这款工具可以…

JAVA.包、final、权限

包 final 权限 代码块 1.构造代码块 创建这个本类的对象的时候会先指向构造代码块再执行构造方法 作用&#xff1a;把构造方法重复的部分抽取出来 2.静态代码块 static 随着类的加载而加载&#xff0c;只执行一次。 作用&#xff1a;数据初始化&#xff0c;比如在学生管…

CSS学习笔记[Web开发]

CSS学习 本文为学习笔记&#xff0c;参考菜鸟和w3c 文章目录 CSS 简介CSS 插入外部 CSS内部 CSS行内 CSS多个样式表层叠顺序 CSS 语法例子解释 CSS 选择器CSS 元素选择器CSS id 选择器实例CSS 类选择器实例CSS 通用选择器实例CSS 分组选择器CSS 后代选择器CSS 子元素选择器CSS …

docker容器的自启动策略

1 Docker自启动策略设置 Docker容器的自启动模式主要由--restart策略控制&#xff0c;这个策略定义了在什么情况下容器应该自动重启。以下是Docker中可用的几种自启动模式&#xff1a; no&#xff1a; 这是默认值。容器不会在任何情况下自动重启。如果容器停止&#xff0c;无论…

数据结构:数据类型与抽象数据类型

数据类型与抽象数据类型 数据类型基本数据类型构造数据类型指针类型枚举类型 抽象数据类型&#xff08;ADT&#xff09;抽象数据类型的组成部分常见的抽象数据类型示例 数据类型与抽象数据类型的区别实现抽象数据类型的具体方式用数组实现栈用链表实现栈 总结 数据类型 数据类…

018、从父组件向子组件传递参数

文章目录 Vue 中 props子组件自定义组件的定义完整的单文件组件 举例 父组件引用子组件并声明自定义属性 Vue 中 props 在 Vue 中&#xff0c;props 是用于定义组件接收的数据属性。 子组件 自定义组件的定义 比如下面&#xff0c;定义了三个自定义组件变量 props:["c…

OnlyOffice社区版部署及前端嵌入使用实现office的docx、xlsx等在线协同编辑预览

一、OnlyOffice介绍 ONLYOFFICE 是一款功能丰富的在线办公软件。它由 Ascensio System SIA 公司开发&#xff0c;有社区版、企业版和开发版等版本。本教程介绍开源社区版的安装使用&#xff0c;实现查看、编辑并协作处理文档、工作表、幻灯片&#xff0c;多人实时协同编辑&…

「树形结构」基于 Antd 实现一个动态增加子节点+可拖拽的树

效果 如图所示 实现 import { createRoot } from react-dom/client; import React, { useState } from react; import { Tree, Input, Button } from antd; import { PlusOutlined } from ant-design/icons;const { TreeNode } Tree; const { Search } Input;const ini…

视频怎么加密?常见的四种视频加密方法和软件

视频加密是一种重要的技术手段&#xff0c;用于保护视频内容不被未经授权的用户获取、复制、修改或传播。在加密过程中&#xff0c;安企神软件作为一种专业的加密工具&#xff0c;可以发挥重要作用。 以下将详细介绍如何使用安企神软件对视频进行加密&#xff0c;并探讨视频加密…