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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Redis 逻辑过期策略设计思路

引言&#xff1a; 当我们平常使用Redis缓存的时候&#xff0c;会出现一种场景&#xff0c; redis的key到过期时间了&#xff0c;总是需要到数据库里面去查一遍数据再set回redis&#xff0c;这个时候如果数据库响应比较慢&#xff0c;那么就会造成用户等待&#xff0c;如果刚好…

rancher-rke2 修改--service-cluster-ip-range

一、场景 因为需要部署新版本的ingress-nginx&#xff0c;而部署ingress-nginx的时候需要使用hostnetowrk以及nodeport的端口为80和443&#xff0c;service-node-port-range 默认为30000开始,部署会报错。 二、产生修改的需求 1、api-servier的配置文件位置 默认是没有的&…

【C++】双指针算法:移动零

学完了数据结构和C的STL库&#xff0c;我们需要开始学习算法了。有了前面的基础知识储备&#xff0c;再好好学习算法&#xff0c;有系统&#xff0c;有规律的刷题&#xff0c;总结&#xff0c;咱们的编程能力就会有质的飞跃&#xff01; 1.题目 我们用一个例题来讲解这个算法。…

Docker - 简介

原文地址&#xff0c;使用效果更佳&#xff01; Docker - 简介 | CoderMast编程桅杆https://www.codermast.com/dev-tools/docker/docker-introduce.html Docker是什么&#xff1f; Docker 是一个开源的应用容器引擎&#xff0c;基于 Go 语言 并遵从 Apache2.0 协议开源。 D…

AtCoder Beginner Contest 340

前面两道阅读理解直接跳过 C - Divide and Divide 大意 黑板上有一个数。 执行下列操作&#xff0c;直到黑板上的数全为1: 选择一个不小于2的整数&#xff0c;擦掉。写下和。需要的代价。 当不能继续操作时&#xff0c;总代价是多少&#xff1f; 思路 定义表示黑板上初…

nacos配置mysql(windows)

nacos默认是使用的内置数据库derby ,可通过配置修改成mysql,修改成mysql之后&#xff0c;之前配置在derby的数据会丢失 本文使用mysql版本为8.0.22 nacos版本为2.3.1 在mysql里面先创建一个数据库test(名称自定义&#xff0c;和后面配置文件里面的一样就好了) 在上面创建的数据…

6.SpringBoot 日志文件

文章目录 1.日志概述2.日志作用3.使用和观察日志3.1如何观察日志3.2使用日志3.3日志级别3.4日志持久化3.5日志分割 4.日志框架4.1门面模式(外观模式)4.2 SLF4J框架介绍4.3 日志格式的说明4.3.1日志名称 5.日志颜色设置6.总结 大家好&#xff0c;我是晓星航。今天为大家带来的是…

C# 开源SDK 工业相机库 调用海康相机 大恒相机

C# MG.CamCtrl 工业相机库 介绍一、使用案例二、使用介绍1、工厂模式创建实例2、枚举设备&#xff0c;初始化3、启动相机4、取图5、注销相机 三、接口1、相机操作2、启动方式3、取图4、设置/获取参数 介绍 c# 相机库&#xff0c;含海康、大恒品牌2D相机的常用功能。 底层采用回…

去除图像周围的0像素,调整大小

在做分割任务时&#xff0c;经常需要处理图像&#xff0c;如果图像周围有一圈0像素&#xff0c;需要去除掉&#xff0c;重新调整大小 数组的处理 如果图像的最外一圈为0&#xff0c;我们将图像最外圈的图像0去除掉。 import numpy as npdef remove_outer_zeros(arr):# 获取数…

电脑缺失d3dcompiler_43.dll如何修复?多种修复dll问题的有效方法分享

当用户尝试在个人计算机上运行特定的软件游戏时&#xff0c;系统弹出了一条错误提示信息&#xff0c;明确指出“d3dcompiler_43.dll”文件缺失。这个动态链接库文件(dll)是Direct3D编译器的重要组成部分&#xff0c;对于许多基于Windows操作系统的应用程序&#xff0c;尤其是那…

数据库mysql提权四种烧姿势--UDF反弹启动项MOF

免责声明:本问仅做技术交流与学习,请知法守法,不要乱搞等等 目录 前提条件 如何获取最高权限的密码? 一.UDF提权 利用条件: 信息收集 1-看有无plugin目录 2-开启外链 3-开启外连后,MSF启动~ 4-navicat--利用导出的.dll执行命令 利用原理: 执行命令: 二.反弹提权 …

B2024 输出浮点数 洛谷题单

首选需要进行了解的就是%a.bf所代表的含义就行了&#xff0c;直接莽了&#xff0c;没啥解释的笑脸&#x1f644; 在 Python 中&#xff0c;%a.bf 中的参数 a 和 b 是用来格式化浮点数的输出的&#xff0c;具体含义如下&#xff1a; a 表示总输出宽度&#xff0c;包括小数点、…

Pytorch入门实战: 06-VGG-16算法-Pytorch实现人脸识别

第P6周&#xff1a;VGG-16算法-Pytorch实现人脸识别 &#x1f368; 本文为&#x1f517;365天深度学习训练营 中的学习记录博客 &#x1f356; 原作者&#xff1a;K同学啊 &#x1f3e1; 我的环境&#xff1a; 语言环境&#xff1a;Python3.8 编译器&#xff1a;Jupyter La…

​​​​​​​iOS配置隐私清单文件App Privacy Configuration

推送到TestFlight后邮件收到警告信息如下&#xff0c;主要关于新的隐私政策需要补充&#xff1a; Hello, We noticed one or more issues with a recent submission for TestFlight review for the following app: AABBCC Version 10.10.10 Build 10 Although submission for …

堆的概念、堆的向下调整算法、堆的向上调整算法、堆的基本功能实现

目录 堆的介绍 堆的概念 堆的性质 堆的结构 堆的向下调整算法 基本思想&#xff08;以建小堆为例&#xff09; 代码 堆的向上调整算法 基本思想&#xff08;以建小堆为例&#xff09; 代码 堆功能的实现 堆的初始化 HeapInit 销毁堆 HeapDestroy 打印堆 HeapPrint …

Linux配置腾讯云yum源(保姆级教学)

1. 备份原有的 yum 源配置文件 例如&#xff1a; mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup 2. 下载腾讯云的 yum 源配置文件 例如&#xff1a; wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.cloud.tencent.com/repo/…

28.组件事件配合v-model使用

组件事件配合v-model使用 如果是用户输入&#xff0c;我们希望在获取数据的同时发送数据配合v-model来使用 <template><div><h3>ComponentA</h3><ComponentB some-event"getHandle" /><p>ComponentA接受的数据&#xff1a;{{ m…

【Linux文件系统开发】认知篇

【Linux文件系统开发】认知篇 文章目录 【Linux文件系统开发】认知篇一、文件系统的概念二、文件系统的种类&#xff08;文件管理系统的方法&#xff09;三、分区四、文件系统目录结构五、虚拟文件系统&#xff08;Virtual File System&#xff09;1.概念2.原因3.作用4.总结 一…

排序 “叁” 之交换排序

目录 1. 基本思想 2.冒泡排序 2.1 基本思想 2.2 代码示例 2.3 冒泡排序的特性总结 3.快速排序 3.1 基本思想 &#x1f335;hoare版本 &#x1f335;挖坑法 ​编辑 &#x1f335;前后指针版本 ​编辑 3.2 快速排序优化 &#x1f33b;三数取中法选key 3.4 快速排序…

HAL STM32 SSI/SPI方式读取MT6701磁编码器获取角度例程

HAL STM32 SSI/SPI方式读取MT6701磁编码器获取角度例程 &#x1f4cd;相关篇《HAL STM32 I2C方式读取MT6701磁编码器获取角度例程》&#x1f4cc;当前最新MT6701数据手册&#xff1a;https://www.magntek.com.cn/upload/MT6701_Rev.1.8.pdf&#x1f4dc;SSI协议读角度&#xff…