4月21敲一篇猜数字游戏,封装函数,void,无限循环,快去体验体验

今天敲一篇猜数字游戏

目录

今天敲一篇猜数字游戏

1.打开先学goto语句:

2.开干:

首次我们学习随机数:

讲解一下:

改用srand;

加入时间变量:

获取时间:哈​编辑

3.我本来想已近够完美了,又有问题:​编辑

这里还是解释一下。

 4.这里直接借鹏哥的代码

//设置随机数的生成起点(种子)

 ​编辑5.请开始你的表演。

玩游戏嘛。,就是要有等待感,给他啊wait两秒钟,​编辑只不过前面加一个系统睡眠的 head

6. 开始封装函数:

7.这里讲了void:

结尾肯定需要比较强烈的话,哈哈哈

 ​编辑

 O。K了,准备发布​编辑

8.猜数字代码如下,这你都不打算敲一下吗

9. 具体讲解:如下:

头文件包含

函数定义

manu() 函数

game() 函数

main() 函数

注意事项

总结

 如果想要乱搞的话,把猜大猜小全给他颠倒过来,哈哈哈哈哈​编辑


哈哈哈哈

1.打开先学goto语句:

跳过跳过

为啥会出错,哦哦哦原来是我打了;干干干改:OK了

2.开干:

首次我们学习随机数:

rend:

开始你会发现是随机数,所以果断选择再试一次;

讲解一下:

可以用改变的时间来做引资

在C语言中,rand() 函数是一个标准库函数,用于生成一个伪随机数。它返回一个介于 0 和 RAND_MAX 之间的整数值,其中 RAND_MAX 是 rand() 函数可以返回的最大值,通常定义在 <stdlib.h> 头文件中。

要使用 rand() 函数,你需要先包含 <stdlib.h> 头文件。虽然 rand() 函数每次调用时都会返回一个数,但这个数并不是真正的随机数,而是通过一个算法生成的伪随机数。这意味着如果你使用相同的种子(seed)初始化随机数生成器,并且使用相同的算法,那么你会得到相同的随机数序列。

在大多数实现中,随机数生成器的种子默认设置为某个固定值(这取决于具体的实现),所以如果你没有显式地设置种子,每次运行程序时 rand() 函数可能会生成相同的随机数序列。为了避免这种情况,你可以使用 srand() 函数来设置随机数生成器的种子。通常,可以使用当前时间(例如,通过调用 time(NULL))作为种子,以确保每次运行程序时都能得到不同的随机数序列。

下面是一个简单的示例,展示了如何使用 rand() 和 srand() 函数来生成随机数:

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main() {
// 使用当前时间作为种子来初始化随机数生成器
srand((unsigned int)time(NULL));
// 生成并打印10个随机数
for (int i = 0; i < 10; i++) {
int random_number = rand();
printf("%d\n", random_number);
}
return 0;
}

在这个示例中,我们首先使用 srand() 函数和 time(NULL) 来设置随机数生成器的种子。然后,在循环中调用 rand() 函数来生成并打印10个随机数。由于使用了当前时间作为种子,所以每次运行程序时应该都会得到不同的随机数序列。

改用srand;

怎么能少得了666的随机数

加入时间变量:

获取时间:哈

需要包含时间头文件;

3.我本来想已近够完美了,又有问题:

奇怪,好了:

运行成功:

这里还是解释一下。

srand((unsigned int)time(NULL));解释一下

在C语言中,srand() 函数用于设置随机数生成器的种子。当你调用 rand() 函数时,它会根据当前的种子值来生成一个伪随机数。为了得到不同的随机数序列,你通常需要首先调用 srand() 来设置一个新的种子值。

在你提供的代码片段中:

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

这行代码做了以下几件事情:

  1. time(NULL): 这个函数返回从1970年1月1日(称为Unix纪元)到当前时间的秒数。当你传递 NULL 作为参数给 time() 函数时,它会返回当前的时间。由于时间是在不断变化的,所以每次调用 time(NULL) 通常都会得到不同的值。

  2. (unsigned int): 这是一个类型转换,将 time_t 类型的值(这是 time() 函数返回的类型)转换为 unsigned int 类型。这是因为 srand() 函数通常接受一个 unsigned int 类型的参数作为种子。这个转换确保了类型匹配,避免了可能的类型不匹配问题。

  3. srand(...): 这个函数接受转换后的时间值作为参数,并将其设置为随机数生成器的种子。由于时间值在每次程序运行时通常都会不同,因此每次调用 srand() 时都会设置一个新的种子值。

通过将当前时间作为种子传递给 srand(),你可以确保每次运行程序时 rand() 函数都会生成不同的随机数序列。如果不调用 srand() 或者总是使用相同的种子值,那么 rand() 函数将会生成相同的随机数序列,这通常不是我们想要的。

需要注意的是,尽管使用当前时间作为种子可以产生不同的随机数序列,但在某些情况下(例如,如果你的程序在非常短的时间内多次启动),time(NULL) 可能会返回相同的值,从而导致相同的随机数序列。在这种情况下,你可能需要寻找其他方法来生成独特的种子值,例如使用更精确的时间戳或结合其他信息来生成种子。

srand函数是不需要频繁调⽤的,⼀次运⾏的程序中调⽤⼀次就够了。

 4.这里直接借鹏哥的代码

 开始设计随机数的种子,只需要放一次。

上次敲过一次

//设置随机数的生成起点(种子)

%100生成0-99的数字:

1-100的加一就可以:

开始设计。

打破随机数,选择1进行游戏,选择0等退出游戏。

 5.请开始你的表演。

玩游戏嘛。,就是要有等待感,给他啊wait两秒钟,只不过前面加一个系统睡眠的 head

#include <windows.h>

一直持续下去。

先展现一波:

{int input = 0;do{printf("*********--  开始游戏     --********\n");printf("*********--  输入1开始    --********\n");printf("*********--  输入0结束    --********\n");printf("*********-- AWTX550W出品 --********\n");printf("*********--    请选择:   --********\n");scanf("%d", &input);switch (input){case 1:printf("---游戏正在加载中---\n");Sleep(2000);printf("---现在打印内容-----\n");break;case 0:printf("-------结束----------\n");break;default:printf("--选择错误,请重新选择--\n");break;}}while (input);{}}
  1. 变量声明:

int input = 0;

声明了一个整型变量input并初始化为0。这个变量将用于存储用户的输入。
2. do-while循环:
这个循环会一直执行,直到input的值为0。
3. 游戏菜单显示:
在循环内部,首先打印出一个游戏菜单,提示用户输入1开始游戏或输入0结束游戏。
4. 用户输入获取:

scanf("%d", &input);

使用scanf函数从标准输入(通常是键盘)读取一个整数,并存储在input变量中。
5. switch语句:
根据input的值,执行不同的操作:

* **case 1**:
如果用户输入1,程序会打印“游戏正在加载中”,然后调用`Sleep(2000)`函数暂停2秒(注意:`Sleep`是Windows特有的函数,如果你在非Windows系统上编译这段代码,你需要使用其他方法来实现延时)。之后,程序会打印“现在打印内容”。
* **case 0**:
如果用户输入0,程序会打印“结束”,并且由于`input`的值为0,`do-while`循环会结束。
* **default**:
如果用户输入的不是1也不是0,程序会打印“选择错误,请重新选择”。

6. 开始封装函数:

先封装菜单函数。

7.这里讲了void:

先解释一下:

void是一个特殊的类型说明符,就是不返回任何东西。

后面肯定会补充;

开始设计随机数的生成起点。,一个工程用一次就可以。

刚刚换了一次电源。这喵的越冲越少了,给我都看懵了,哈哈哈

结尾肯定需要比较强烈的话,哈哈哈

 

 O。K了,准备发布

8.猜数字代码如下,这你都不打算敲一下吗

#include<stdio.h>
#include<stdlib.h>
#include<time.h>
#include <windows.h>
void manu()
{printf("*********--  开始游戏     --********\n");printf("*********--  输入1开始    --********\n");printf("*********--  输入0结束    --********\n");printf("*********-- AWTX550W出品 --********\n");printf("*********--    请选择:   --********\n");
}
void game()
{int a = rand() % 100 + 1;int guess;while (1){printf("---游戏正在加载中---\n");Sleep(2000);printf("---现在打印内容\n-----\n");Sleep(2000);printf("------请猜数字-----\n");scanf("%d", &guess);if (guess>a){printf("猜大喽\n");}else if (guess<a){printf("猜小喽\n");}else{printf("太强了,竟然猜对了\n");printf("====!!!恭喜恭喜!!!====\n");break;}}
}
int main()
{int input = 0;srand((unsigned int)time(NULL));do{manu();scanf("%d", &input);switch (input){case 1:game();break;case 0:printf("-------结束----------\n");break;default:printf("--选择错误,请重新选择--\n");break;}}while (input);{return 0;}}

9. 具体讲解:如下:

这段代码是一个简单的C语言程序,用于实现一个数字猜测游戏。用户可以选择开始游戏或结束游戏。如果开始游戏,程序会生成一个1到100之间的随机数,然后让用户猜测这个数字。以下是代码的详细解释:

头文件包含

#include<stdio.h>
#include<stdlib.h>
#include<time.h>
#include <windows.h>
  • stdio.h: 用于输入输出函数,如printfscanf
  • stdlib.h: 用于randsrand函数来生成随机数。
  • time.h: 用于time函数,以当前时间作为随机数生成器的种子。
  • windows.h: 用于Sleep函数,实现延时功能(这是Windows特有的)。

函数定义

manu() 函数
void manu()
{
// 打印游戏菜单
}

这个函数打印出游戏的菜单,提示用户输入1开始游戏或0结束游戏。

game() 函数
void game()
{
// 生成随机数并让用户猜测
}

这个函数首先生成一个1到100之间的随机数,然后在一个循环中让用户输入猜测的数字,并告诉用户他们的猜测是太大、太小还是正确。

main() 函数

int main()
{
// 程序的主入口点
}
  • 初始化变量input为0,用于存储用户的输入。
  • 使用srandtime函数初始化随机数生成器。
  • 使用do-while循环来显示菜单并等待用户输入。
    • 如果用户输入1,调用game()函数开始游戏。
    • 如果用户输入0,打印结束信息并退出循环。
    • 如果用户输入其他值,打印错误消息。

注意事项

  1. srand((unsigned int)time(NULL)); 语句末尾有一个多余的),应该去掉。
  2. while (input); 之后的 { return 0; } 是多余的,应该直接写 return 0;
  3. Sleep 函数是Windows特有的,如果你打算在非Windows系统上运行这段代码,你需要使用其他方法来实现延时。

总结

这是一个简单的C语言数字猜测游戏。用户可以通过输入1或0来选择开始游戏或结束游戏。如果选择开始游戏,程序会生成一个随机数,然后让用户猜测这个数字,直到猜对为止。

 如果想要乱搞的话,把猜大猜小全给他颠倒过来,哈哈哈哈哈

其实还可以加一点设置,猜的次数。,没猜出来就被他结束了这篇字太多了,就先不写了。

下一篇见bro

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

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

相关文章

Flink学习(七)-单词统计

前言 Flink是流批一体的框架。因此既可以处理以流的方式处理&#xff0c;也可以按批次处理。 一、代码基础格式 //1st 设置执行环境 xxxEnvironment env xxxEnvironment.getEnvironment;//2nd 设置流 DataSource xxxDSenv.xxxx();//3rd 设置转换 Xxx transformation xxxDS.…

Spring Boot中接收各种各样的参数

一、接收json参数&#xff0c;封装为Map 1.1、核心代码 /*** 接收json参数&#xff0c;封装为Map* param servletRequest* return* throws Exception*/ PostMapping("/getParam") public R getParam(HttpServletRequest servletRequest) throws Exception {Map<…

Bootstrap 5 保姆级教程(十二):弹出框 消息弹窗

一、弹出框 1.1 创建弹出框 通过向元素添加 data-bs-toggle"popover" 来来创建弹出框。 title 属性的内容为弹出框的标题&#xff0c;data-bs-content 属性显示了弹出框的文本内容&#xff1a; 注意: 弹出框要写在 JavaScript 的初始化代码里。 以下实例可以在文…

NLP 文本表征方式

在自然语言处理&#xff08;NLP&#xff09;领域&#xff0c;将文本转换成计算机能够理解和处理的格式是一个基本的步骤。这个过程通常被称为文本表征或文本向量化。下面&#xff0c;我将详细介绍几种常见的文本表征方法&#xff0c;并提供一些例子来说明这些技术是如何应用的。…

投入产出表的分析要点有哪些

投入产出分析是利用投入产出表、投入产出系数和投入产出模型&#xff0c;对国民经济各部门之间的技术经济联系和影响进行分析的一种经济数据分析方法。 一、什么是投入产出表 我国的投入产出表是描述国民经济中各种产品的来源与使用去向的棋盘式平衡表 , 是产品部门 产品部门…

【已解决】电脑设置notepad++默认打开txt

1、以管理员的方式打开notepad 步骤&#xff1a;打开设置 -> 首选项 -> 文件关联 2、 设置Notepad默认打开 按照以下步骤将Notepad设置为默认打开.txt文件&#xff1a; 右键单击任何一个.txt文件。选择“属性”。在“常规”选项卡中&#xff0c;找到“打开方式”&#…

【Interconnection Networks 互连网络】Dragonfly Topology 蜻蜓网络拓扑

蜻蜓拓扑 Dragonfly Topology 1. 拓扑参数2. Topology Description 拓扑描述3. Topology Variations 拓扑变体 蜻蜓拓扑 Dragonfly Topology 1. 拓扑参数 Dragonfly拓扑参数&#xff1a; N N N: 网络中终端(terminal)的总数量 p p p: 连接到每个路由器的终端数量 a a a: 每…

VR全景:为户外游玩体验插上科技翅膀

随着VR全景技术的愈发成熟&#xff0c;无数人感到惊艳&#xff0c;也让各行各业看到了一片光明的发展前景。尤其是越来越多的文旅景区开始引入VR全景技术&#xff0c;相较于以往的静态风景图&#xff0c;显然现在的VR全景结合了动态图像和声音更加吸引人。 VR全景技术正在逐步改…

密码学 | 承诺:Pedersen 承诺 + ZKP

​ &#x1f951;原文&#xff1a;Toward Achieving Anonymous NFT Trading &#x1f951;写在前面&#xff1a;看了篇 22 年 SCI 3 区论文&#xff0c;里面提到在 Pedersen 承诺的揭示阶段可以使用零知识证明&#xff0c;而不必揭示消息明文和随机数。姑且记录一下这个方法。…

Dijkstra算法求最短路

Dijkstra算法可以在图中寻找一个节点&#xff08;称为“源节点”&#xff09;到所有其它节点的最短路径。 文章目录 前言 一、Dijkstra算法是什么&#xff1f; 二、问题介绍 三、朴素版Dijkstra算法 1.图的存储 2.算法实现 四、使用步骤 1.代码如下&#xff08;示例&#xff09…

使用 hiredis 客户端库封装一个简单的 Redis 类

目录 思考一下redis编程的整个过程。 我们作为redis客户端。需要跟redis服务器交互。 封装 Redis 的 C 类的过程可以分为以下几个步骤&#xff1a; 一个完成发布订阅功能的 Redis 类 思考一下redis编程的整个过程。 我们作为redis客户端。需要跟redis服务器交互。 那说白了…

Linux的UDEV机制

udev 机制引入&#xff1a; 手机接入Linux热拔插相关 a. 把手机接入开发板 b. 安装adb工具&#xff0c;在终端输入adb安装指令&#xff1a; sudo apt-get install adb c. dmeg能查看到手机接入的信息&#xff0c;但是输入adb devices会出现提醒 dinsufficient permissions for …

【Java】HashMap、HashTable和ConcurrentHashMap的区别

文章目录 区别一、HashMap1.1基本定义与特性1.2工作原理与实现1.3常用方法1.4性能与优化 二、HashTable三、ConcurrentHashMap3.1基本特点3.2实现原理3.3常用方法3.4适用场景3.5性能优化 HashTable、HashMap和ConcurrentHashMap之间的区别主要体现在线程安全、继承关系与实现接…

Mysql 和 PostgreSQL 到底选啥?

当我深入探讨MySQL和PostgreSQL这两个著名的开源数据库时&#xff0c;我们不仅发现它们在功能、性能和用例方面存在明显的差异&#xff0c;同时也能看出它们各自在特定场景下的独特优势。选择哪一个往往取决于项目的具体需求、团队的熟悉度以及未来的扩展计划。 在这篇文章中&…

kaggle 泰坦尼克号2 得分0.7799

流程 导入所要使用的包引入kaggle的数据集csv文件查看数据集有无空值填充这些空值提取特征分离训练集和测试集调用模型 导入需要的包 import pandas as pd import numpy as np import matplotlib.pyplot as plt import seaborn as sns import warnings warnings.filterwarni…

Vue3: 获取元素DOM的方法

Vue3中获取dom的方法有两种 : ref模板引用和传统方法 1.ref模板引用 模板引用是官方提出的方法&#xff0c;请看下面的例子&#xff1a; <template><canvas ref"solarCanvas" id"solar" width"1300" height"900"></…

K8S 污点和容忍度(Taint,Toleration)

介绍 在 Kubernetes 中&#xff0c;污点&#xff08;Taints&#xff09;和容忍度&#xff08;Tolerations&#xff09;是用于节点调度的一种机制&#xff0c;它们允许你控制哪些 Pod 能够调度到哪些节点上。 污点&#xff08;Taints&#xff09; 污点是节点上的一种属性&…

从C到JAVA之学习JAVA的第一周笔记

文章目录 java语言概述JDK与JRE编写执行过程第一份java代码解读编写编译运行其他 注释三种注释方法 java API文档关键字标识符数据类型基本数据类型自动类型提升规则引用数据类型 string概述String与基本数据类型的变量间的运算 运算符键盘录入运行控制语句数组定义与静态初始化…

springboot no mapping for.....解决办法

这个问题是由于没有加入对应的GET,POST注解&#xff0c;导致映射失败&#xff0c;加入对应注解就ok了

JDK 11下载、安装、配置

下载 到Oracle管网下载JDK 11&#xff0c;下载前需要登录&#xff0c;否则直接点下载会出现502 bad gateway。 下载页面链接 https://www.oracle.com/hk/java/technologies/downloads/#java11-windows 登录 有些人可能没有Oracle账号&#xff0c;注册也比较慢&#xff0c;有需…