C语言——猜数字小游戏

2023-11-12

 

实现一个猜数字的小游戏>首先要用的c语言的随机生成数,在C语言中,我们一般使用 <stdlib.h> 头文件中的 rand() 函数来生成随机数,它的用法为:a=rand() , rand() 会随机生成一个位于 0 ~ RAND_MAX 之间的整数。

 

#include <stdio.h>
#include <stdlib.h>
int main(){
    int a = rand();
    printf("%d\n",a);
    return 0;
}

如果我们多次运行上面的代码会发现都是一样的结果,这是怎么回事呢?为什么随机数并不随机呢?

实际上,rand() 函数产生的随机数是伪随机数,是根据一个数值按照某个公式推算出来的,这个数值我们称之为“种子”。种子和随机数之间的关系是一种正态分布,如下图所示:

3be3fc7cbdf8fba2339f7038791f2ab3.gif

种子在每次启动计算机时是随机的,但是一旦计算机启动以后它就不再变化了;也就是说,每次启动计算机以后,种子就是定值了,所以根据公式推算出来的结果(也就是生成的随机数)就是固定的。

 

我们可以通过 srand() 函数来重新“播种”,这样种子就会发生改变。srand() 的用法为:

void srand (unsigned int seed);

它需要一个 unsigned int 类型的参数。在实际开发中,我们可以用时间作为参数,只要每次播种的时间不同,那么生成的种子就不同,最终的随机数也就不同。

使用 <time.h> 头文件中的 time() 函数即可得到当前的时间(精确到秒),就像下面这样:

srand((unsigned)time(NULL));

实现代码如下:

#include<stdio.h>
#include<time.h>    //初始化随机需要的头文件
#include<stdlib.h>    //生成随机数要用的头文件        
void print()            //菜单
{
    printf("*************************\n");
    printf("*******0.退出游戏********\n");
    printf("*******1.开始游戏********\n");
    printf("*******************&*****\n");

}
void game()
{
    int put = rand() % 100 + 1;        //随机获取1-100的数
    int b;
    printf("请猜数(0—100)");
    while (1)
    {
        
        scanf("%d", &b);        //接收用户输入的数值
        if (b > put)        
            printf("猜大了\n");
        else if (b < put)            //与随机数比较给出提示
            printf("猜小了\n");
        else
        {
            printf("恭喜你猜对了\n");
            break;        //猜对就退出循环
        }

    
    }

}
int main()
{
    srand((unsigned int)time(NULL));    //随机数初始化
    
    int num;
    
    do
    {
        print();            //打印菜单
        printf("请选择>");
        scanf("%d", &num);
        if (num == 0)            //退出条件
        {
            break;
        
        }
        game();        //游戏实现
    } while (num);
    printf("退出成功\n");
    return 0;
}

运行结果:

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAVVVUTlQ=,size_17,color_FFFFFF,t_70,g_se,x_16

 

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

C语言——猜数字小游戏 的相关文章

  • WSL安装cuda输入nvidia-smi遇到报错

    打算在WSL安装Cuda 但是安装成功后发现输入nvidia smi一直报错 查了很多文章都没法解决 本来都准备放弃了 随手查看了下WSL版本 发现WSL一直是 1 改成 2 之后再次安装CUDA WSL驱动直接成功 1 在powershe
  • SQL SERVER表字段与关键字冲突的解决

    办法很简单 建表的时候 该字段用 包含起来即可 例如 create table test reqid varchar 20 IDENTITY int
  • 使用Tesseract和OpenCV构建自动收据扫描仪

    使用Tesseract和OpenCV构建自动收据扫描仪 这篇博客将介绍如何使用Tesseract和OpenCV构建自动收据扫描仪 将使用OpenCV构建系统的实际图像处理组件 包括 检测图像中的收据 边缘检测 轮廓检测 基于弧长和近似的轮廓
  • 操作系统(一):什么是操作系统

    1内核 1 1概念 操作系统主要关注操作系统的内核 1 2特征 1 2 1并发 计算机系统中同时存在多个运行的程序 需要OS管理调度 并发与并行 并发 一段时间内有多个程序运行 并行 一个时间点上有多个程序可以同时执行 要求系统存在多个CP

随机推荐

  • Python为什么叫爬虫?

    因为python的脚本特性和易于配置 对字符的处理也非常灵活 加上python有丰富的网络抓取模块 所以叫爬虫 1 网络爬虫是指一种按照一定的规则 自动地抓取万维网信息的程序或者脚本 另外一些不常使用的名字还有蚂蚁 自动索引 模拟程序或者蠕
  • Excel分类统计数量

    Excel分类统计数量 方法一 1 打开需要分类的excel表格 2 选中 事项类型 的列表信息 对其进行排序 升序 降序 3 排序结束后 选择需要进行分计数的列 点击 数据 分类汇总 4 选择需要的 分类字段 汇总方式 汇总项 5 选择后
  • Mac平面设计师必备软件,懂word就会设计,内置海量模板。

    Swift Publisher是Mac平面设计师必备软件 内置了丰富的彩色传单 折页 海报 画册 展架等模版 点击即可直接编辑并快速完稿 相比于其他的设计软件 Swift Publisher更简单 不需要花时间去学习软件就可以独立完成一些定
  • 声音合成与克隆——制作用于训练的声音数据集

    前言 1 PaddleSpeech 是一个简单易用的all in one 的语音工具箱 支持语音处理的相关操作 如语音知别 语音合成 声纹识别 声音分类 语音翻译 语音唤醒等多个方向的应用开发 这里只使用到语音合成与声音克隆 主要由文本前端
  • 计算机网络数据吞吐量,计算机网络的性能指标

    计算机网络的性能一般是指它的几个重要的性能指标 但除了这些重要的性能指标外 还有一些非性能特征 nonperformance characteristics 也对计算机网络的性能有很大的影响 一 计算机网络性能指标 1 速率 比特 bit
  • 每日一问—01如何在指定目录下的文件名前面加上“0”+序号

    import os path C i 1 for filename in os listdir path try new name 0 str i filename os rename os path join path filename
  • 基于opencv下的双目视觉三维重建与重投影残差计算

    一 重投影残差 1 1基本概念 重投影残差 按照字面意思解释就是在第二次重新投影的二维像素点与第一次投影得到的像素点之间的残差 欧式距离 大小 残差的大小反映的就是测量仪器的精度以及外界因素对测量结果的干扰 即测量误差的大小 如下图所示 假
  • HikariCP连接池

    什么是HikariCP HikariCP是由日本程序员开源的一个数据库连接池组件 代码非常轻量 并且速度非常的快 根据官方提供的数据 在i7 开启32个线程32个连接的情况下 进行随机数据库读写操作 HikariCP的速度是现在常用的C3P
  • "[WinError 10061] 由于目标计算机积极拒绝,无法连接"错误解决办法

    爬虫的时候会经常出现 WinError 10061 由于目标计算机积极拒绝 无法连接 错误这种情况 有可能是LAN口设置不正确 我是在爬取全国天气情况的时候出现的这种错误 后面调了以后可以了 1 控制面板 网络和 Internet Inte
  • 蓝桥杯小白必看 —— Python

    蓝桥杯小白必看 Python 文章目录 蓝桥杯小白必看 Python 一 Python比赛规则 二 Python3 8 6的IDLE环境 1 官网下载地址 2 让编译器显示行数 3 设置自动保存 4 设置页面字体大小 5 快捷键的使用 三
  • 操作系统王道考研复习——第二章(进程管理) 上

    操作系统王道考研复习 第二章 进程管理 上 2 进程管理 2 1 程序执行 2 1 1 程序顺序执行的特征 2 1 2 程序并行执行的特征 2 2 进程与线程 2 2 1 进程的概念和特征 1 程序和进程的区别 2 进程的组成 PCB 程序
  • java删除指定路径下的全部内容

    1 使用过程当中有时会用到清空文件夹的操作 首先传入指定文件夹地址 利用递归的方式清空该文件夹下的全部文件 以及子文件夹 public static void deleteFile File file 判断文件不为null或文件目录存在 i
  • 《Unity Shader入门精要》自学笔记(七)第九章 更复杂的光照 ——光照衰减

    帧调试器FrameDebugger 又是一个好玩的小玩具好用的小工具呢 可以通过Window Analysis Frame Debugger打开 然后点击左上角的Enable 就可以查看了 点击1打开或关闭Frame Debugger 滑动
  • springboot实现ApplicationContextAware接口、使用ThreadLocal获得当前上下文请求的HttpServletRequest

    前端请求的参数可以用requestparam requestbody获得 也可以用HttpServletRequest来获得参数 这里讲用HttpServletRequest来获取前端参数的办法 举例 GetMapping index do
  • 全国计算机等级考试题库二级C操作题100套(第75套)

    第75套 给定程序中 函数fun的功能是 对形参ss所指字符串数组中的M个字符串按长度由短到长进行排序 ss所指字符串数组中共有M个字符串 且串长
  • 从python入门到机器学习的心得贴(持续更新ing

    仅代表个人看法 大学的编程是C语言入的门 专业上的使用也是C语言为主 非码农 但个人觉得 作为21世纪的新新人类 python的工程的各个领域都有融合的价值 于是抽空就把python入了门 一 入门之路 开始也不知道该从哪儿开始 之后看到一
  • 行列式与矩阵的区别

    1 行列式的本质是线性变换的放大率 而矩阵的本质就是个数表 2 行列式行数 列数 矩阵不一定 行数列数都等于n的叫n阶方阵 二者的表示方式亦有区别 3 行列式与矩阵的运算明显不同 1 相等 只有两个同型的矩阵才有可能相等 并且要求对应元素都
  • PyTorch深度学习——Anaconda和PyTorch安装

    一 Anaconda安装 前言 安装anaconda后主要有一下3点好处 1 包含环境管理器conda 2 大量安装基于python的工具包 3 可以创建使用和管理不同的python版本 附上百度百科的解释 下载步骤 1 官网下载anaco
  • Linux部署Nginx并配置https

    1 下载nginx安装包 wget http nginx org download nginx 1 21 6 tar gz 2 解压压缩包 tar zvxf nginx 1 21 6 tar gz 3 初始化configure 配置conf
  • C语言——猜数字小游戏

    实现一个猜数字的小游戏 gt 首先要用的c语言的随机生成数 在C语言中 我们一般使用