今天敲一篇猜数字游戏
目录
玩游戏嘛。,就是要有等待感,给他啊wait两秒钟,编辑只不过前面加一个系统睡眠的 head
如果想要乱搞的话,把猜大猜小全给他颠倒过来,哈哈哈哈哈编辑
哈哈哈哈
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的随机数
加入时间变量:
获取时间:哈![](https://i-blog.csdnimg.cn/blog_migrate/70d674de7c6dce6d750d8ee6b66efe75.jpeg)
需要包含时间头文件;
3.我本来想已近够完美了,又有问题:![](https://i-blog.csdnimg.cn/blog_migrate/8bce9f6c38fd42154dbe54f060914712.png)
奇怪,好了:
运行成功:
这里还是解释一下。
srand((unsigned int)time(NULL));解释一下
在C语言中,
srand()
函数用于设置随机数生成器的种子。当你调用rand()
函数时,它会根据当前的种子值来生成一个伪随机数。为了得到不同的随机数序列,你通常需要首先调用srand()
来设置一个新的种子值。在你提供的代码片段中:
srand((unsigned int)time(NULL));
这行代码做了以下几件事情:
time(NULL)
: 这个函数返回从1970年1月1日(称为Unix纪元)到当前时间的秒数。当你传递NULL
作为参数给time()
函数时,它会返回当前的时间。由于时间是在不断变化的,所以每次调用time(NULL)
通常都会得到不同的值。
(unsigned int)
: 这是一个类型转换,将time_t
类型的值(这是time()
函数返回的类型)转换为unsigned int
类型。这是因为srand()
函数通常接受一个unsigned int
类型的参数作为种子。这个转换确保了类型匹配,避免了可能的类型不匹配问题。
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);
{
}
}
变量声明:
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了,准备发布![](https://i-blog.csdnimg.cn/blog_migrate/624513872901c5916519c79088df43f0.gif)
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
: 用于输入输出函数,如printf
和scanf
。stdlib.h
: 用于rand
和srand
函数来生成随机数。time.h
: 用于time
函数,以当前时间作为随机数生成器的种子。windows.h
: 用于Sleep
函数,实现延时功能(这是Windows特有的)。函数定义
manu()
函数
void manu()
{
// 打印游戏菜单
}
这个函数打印出游戏的菜单,提示用户输入1开始游戏或0结束游戏。
game()
函数
void game()
{
// 生成随机数并让用户猜测
}
这个函数首先生成一个1到100之间的随机数,然后在一个循环中让用户输入猜测的数字,并告诉用户他们的猜测是太大、太小还是正确。
main()
函数
int main()
{
// 程序的主入口点
}
- 初始化变量
input
为0,用于存储用户的输入。- 使用
srand
和time
函数初始化随机数生成器。- 使用
do-while
循环来显示菜单并等待用户输入。
- 如果用户输入1,调用
game()
函数开始游戏。- 如果用户输入0,打印结束信息并退出循环。
- 如果用户输入其他值,打印错误消息。
注意事项
srand((unsigned int)time(NULL));
语句末尾有一个多余的)
,应该去掉。while (input);
之后的{ return 0; }
是多余的,应该直接写return 0;
。Sleep
函数是Windows特有的,如果你打算在非Windows系统上运行这段代码,你需要使用其他方法来实现延时。总结
这是一个简单的C语言数字猜测游戏。用户可以通过输入1或0来选择开始游戏或结束游戏。如果选择开始游戏,程序会生成一个随机数,然后让用户猜测这个数字,直到猜对为止。
如果想要乱搞的话,把猜大猜小全给他颠倒过来,哈哈哈哈哈![](https://i-blog.csdnimg.cn/blog_migrate/b24e4e9783d8127d6db2503f9a60ddc3.gif)
其实还可以加一点设置,猜的次数。,没猜出来就被他结束了这篇字太多了,就先不写了。
下一篇见bro