【C语言】猜数字小游戏

😂个人主页: 起名字真南
🤣个人专栏:【数据结构初阶】 【C语言】 【C++】

请添加图片描述

目录

  • 1 随机数的生成
    • 1.1 rand
    • 1.2 srand
    • 1.3 time
    • 1.4 设置随机数范围
  • 2 猜数字游戏实现

前言:我们学习完前面的循环以后可以写一个猜数字小游戏

1 随机数的生成

想要完成猜数字游戏,首先要产生随机数,那么怎么生成随机数呢?

1.1 rand

C语言提供了一个rand函数,这是可以随机生成随机数的,函数原型如下

int rand(void

rand函数会生成一个伪随机数,这个随机数的范围是在0~RAND_MAX之间,这个RAND_MAX的大小是依赖编译器上实现的,但是大部分编译器是32767.
rand函数的使用需要包含<stdlib.h>的头文件

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

结果展示:
在这里插入图片描述
再次调用:
在这里插入图片描述
可以看到调用两次的结果都是一样的,这里就是我们提到的伪随机数,虽然这几个数字都是随机的但是每次运行的结果却都是一样的,如果我们深入了解就会发现rand函数生成随机数是依靠一个种子作为基准值来计算并生成随机数,而之所以运行生成的随机数都是一样的是因为默认情况下默认种子是1。

1.2 srand

C语言中又提供了一个函数叫做srand,用来初始化随机数的生成器,代码如下

void srand (unsigned int seed);

程序中在调用rand函数之前要先调用srand函数,通过srand函数的参数来改变rand函数种子的大小,只要种子在变化那么随机数就会发生变化
代码展示:

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

结果展示:
在这里插入图片描述
可以看到将种子改为2就会生成另一组新的伪随机数。但是如果我们一直需要不同的随机数就需要一直改变种子的值,有没有什么办法呢?

1.3 time

在程序中我们一般使用程序运行的时间在作为种子,因为时间一直都在发生变化,在C语言中有一个函数叫做time函数,就可以获得这个时间,time函数原型如下

time_t time(time_t* timer);

time函数会返回当前的日历时间,其实返回的是1970年1月1日0时0分0秒到现在程序运行时间的差值,单位是秒,返回类型是time_t(实质上就是32位或64位的整形类型),time函数的参数timer如果是非NULL指针的话,函数也会将这个返回的差值放入到timer指向的内存中。
如果timer是NULL那么将只返回当前程序运行的时间差,也被叫做“时间戳”,time函数使用时需要包含头文件time.h

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

第一次运行结果:
在这里插入图片描述
第二次运行结果:
在这里插入图片描述

1.4 设置随机数范围

#include<stdio.h>
#include<stdlib.h>
#include<time.h>int main()
{srand((unsigned)time(NULL));printf("%d", rand() % 100);  //余数的范围是 0~99printf("%d", rand() % 100 + 1);  //余数的范围是 1~100printf("%d", 100 + rand() % 101);  //余数的范围是 100~200return 0;
}

2 猜数字游戏实现

代码实现:

#include<stdio.h>
#include<stdlib.h>
#include<time.h>void menu()
{//system("cls");printf("***********************\n");printf("******  1. play  ******\n");printf("******  0. exit  ******\n");printf("***********************\n");
}
void game()
{//生成0~100的随机数srand((unsigned int)time(NULL));int x = rand() % 101;int input = 0;int count = 5;while (count){printf("你还有%d次机会\n", count);printf("请输入数字大小>");scanf("%d", &input);if (input < x){printf("猜小了\n");count--;}else if (input > x){printf("猜大了\n");count--;}else{printf("猜对了!!!\n");break;}if (count == 0){printf("游戏结束数字是%d\n", x);}}}
int main()
{int choose = 0;do{menu();printf("请输入>>");scanf("%d", &choose);switch (choose){case 1:game();break;case 0:printf("游戏结束");break;defult:printf("选择错误,请重新选择0/1");break;}} while (choose);return 0;
}

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

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

相关文章

新生培训 day1 C语言基础 顺序 分支 循环 数组 字符串 函数

比赛地址 b牛客竞赛_ACM/NOI/CSP/CCPC/ICPC算法编程高难度练习赛_牛客竞赛OJ C语言数据类型 字符 整型数 int 2e9 long long 9e18 浮点数 代码示例 /** Author: Dduo * Date: 2024-10-8* Description: 新生培训day1 */ #include <stdio.h>int main() {// 定义变量in…

QT-空窗口主窗口对话框

1. QMainWindow QMainWindow 用来创建主窗口 主窗口包含&#xff1a; 标题栏&#xff08;Window title&#xff09;、菜单栏&#xff08;MenuBar&#xff09;、工具栏&#xff08;ToolBar&#xff09;、状态栏&#xff08;StatusBar&#xff09;、停靠部件&#xff08;DockWid…

Ansible学习之ansible-pull命令

想要知道ansible-pull是用来做什么的&#xff0c;就需要了解Ansible的工作模&#xff0c;Ansible的工作模式有两种&#xff1a; push模式 push推送&#xff0c;这是Ansible的默认模式&#xff0c;在主控机上编排好playbook文件&#xff0c;push到远程主机上来执行。pull模式 p…

RISC-V知识点目录

分支预测 分支预测概述https://blog.csdn.net/zhangshangjie1/article/details/136947089?sharetypeblogdetail&sharerId136947089&sharereferPC&sharesourcezhangshangjie1&spm1011.2480.3001.8118分支指令的方向预测https://blog.csdn.net/zhangshangjie1/a…

如何革新源代码保密?七大方法教你应对!

在数字化时代&#xff0c;源代码的安全保密对于企业而言至关重要&#xff0c;它不仅关系到企业的核心竞争力&#xff0c;还涉及到知识产权的保护。源代码一旦泄露&#xff0c;可能会给企业带来无法估量的损失。因此&#xff0c;采取有效的源代码保密措施&#xff0c;是每个企业…

【电路】1.3 电功率和能量

1.3 电功率和能量 电是一种能量存在形式。 1.3.1 电压的定义 将单位正电荷由A点移动至B点&#xff0c;电场力所做的功是 w w w&#xff0c;则 u A B d w d q u_{AB}\frac{dw}{dq} uAB​dqdw​&#xff0c; w w w是功&#xff0c; q q q是电荷量从A到B&#xff0c;沿着任意路…

D3.js中国地图可视化

1、项目介绍 该项目来自Github&#xff0c;基于D3.js中国地图可视化。 D3.js is a JavaScript library for manipulating documents based on data. It uses HTML, SVG, and CSS to display data. The full name of D3 is "Data-Driven Documents," which means it a…

C++11--列表初始化和声明

统一的列表初始化 { } 初始化 C11引入了统一的 列表初始化&#xff08;Uniform Initialization&#xff09;&#xff0c;这是一种使用大括号 { } 初始化变量和对象的新语法&#xff0c;旨在简化初始化过程并提高代码的可读性和一致性。 这种初始化方式适用于几乎所有类型&am…

轻松掌握IP代理服务器设置方法,网络冲浪更自如

在数字化时代&#xff0c;互联网就像是一片浩瀚的海洋&#xff0c;而IP代理服务器就如同我们在这片海洋中航行的指南针。通过使用代理IP&#xff0c;我们可以更方便地访问全球网络资源&#xff0c;提升网络安全性。本文将为您详细介绍IP代理服务器的设置方法&#xff0c;让您在…

Library介绍(四)

标准单元描述 标准单元主要由以下几个部分构成&#xff0c;分别是引脚电容、power、timing组成。其中引脚电容主要包含input/output pin的电容值。 power主要包含每个pin的leakage power和internal power。 timing主要包括cell的input pin到output pin的rise delay和fall del…

人才画像系统是什么?有哪些功能和作用?

人才画像系统是一种先进的人力资源管理工具&#xff0c;它运用大数据和人工智能技术对员工的多方面特征进行深度分析。系统通过汇聚个人的教育背景、工作经验、技能掌握、性格特质及行为数据等信息&#xff0c;结合数据挖掘和机器学习算法&#xff0c;构建出每位员工的数字化“…

Spring Boot:打造下一代医院管理系统

3系统分析 3.1可行性分析 通过对本医院管理系统实行的目的初步调查和分析&#xff0c;提出可行性方案并对其一一进行论证。我们在这里主要从技术可行性、经济可行性、操作可行性等方面进行分析。 3.1.1技术可行性 本医院管理系统采用JAVA作为开发语言&#xff0c;Spring Boot框…

【漏洞复现】网动统一通信平台/网动统一通信平台ActiveUC存在任意文件下载

》》》产品描述《《《 网动统一通信平台是采用统一的通信界面&#xff0c;将VoIP电话系统、电子邮件等多种沟通方式融合的企业IT平台。 》》》漏洞描述《《《 网动统一通信平台是采用统一的通信界面&#xff0c;将VoIP电话系统、电子邮件等多种沟通方式融合的企业IT平台。网动统…

原生input实现时间选择器用法

2024.10.08今天我学习了如何用原生的input&#xff0c;实现时间选择器用法&#xff0c;效果如下&#xff1a; 代码如下&#xff1a; <div><input id"yf_start" type"text"> </div><script>$(#yf_start).datepicker({language: zh…

【Maven】依赖管理,Maven仓库,Maven核心功能

Maven 是一个项目管理工具&#xff0c;基于 POM&#xff08;Project Object Model&#xff0c;项目对象模型&#xff09;的概念&#xff0c;Maven 可以通过一小段描述信息来管理项目的构建&#xff0c;报告和文档的项目管理工具软件 大白话&#xff1a;Maven 是一个项目管理工…

初始爬虫12(反爬与反反爬)

学到这里&#xff0c;已经可以开始实战项目了&#xff0c;多去爬虫&#xff0c;了解熟悉反爬&#xff0c;然后自己总结出一套方法怎么做。 1.服务器反爬的原因 服务器反爬的原因 总结&#xff1a; 1.爬虫占总PV较高&#xff0c;浪费资源 2.资源被批量抓走&#xff0c;丧失竞争力…

MySQL从0到1基础语法笔记(上)

博客主页&#xff1a;誓则盟约系列专栏&#xff1a;Java Web关注博主&#xff0c;后期持续更新系列文章如果有错误感谢请大家批评指出&#xff0c;及时修改感谢大家点赞&#x1f44d;收藏⭐评论✍ 目录 MySQL笔记&#xff1a; 一、注释&#xff1a; 二、SQL四大类&#xff…

《贪吃蛇小游戏 1.0》源码

好久不见&#xff01; 终于搞好了简易版贪吃蛇小游戏&#xff08;C语言版&#xff09;&#xff0c;邀请你来玩一下~ 目录 Snake.h Snake.c test.c Snake.h #include<stdio.h> #include<windows.h> #include<stdbool.h> #include<stdlib.h> #inclu…

LeetCode 11 Container with Most Water 解题思路和python代码

题目&#xff1a; You are given an integer array height of length n. There are n vertical lines drawn such that the two endpoints of the ith line are (i, 0) and (i, height[i]). Find two lines that together with the x-axis form a container, such that the co…

基于comsol模拟微穿孔板和卷曲通道的混合吸声器低频吸声

研究背景&#xff1a; 具有深亚波长厚度&#xff08;5cm&#xff09;的吸收器对低频声音&#xff08;<500Hz&#xff09;的衰减在噪声控制工程中引起了极大的兴趣。然而&#xff0c;由于低频声音的强穿透性和普通材料的弱固有分散性&#xff0c;这是一项具有挑战性的任务。…