C语言学习day13:for循环练习(生成随机数)

题目:

通过程序随机一个1-100的数,用户通过键盘输入数字  看是否匹配,匹配成功则跳出循环,失败则继续循环。

思路:

  • 然后生成一个随机数
  • 需要写成死循环,同时需要有其他的出口
  • 可以写一个提示,比如输入的数字较大/较小

涉及知识:rand()、srand()函数和time()函数

time()函数:

        会返回系统的当前日历时间,自 1970 年 1 月 1 日以来的秒数。如果系统没有时间,则返回         -1。该返回值也被称为 Unix 时间戳。

time(NULL):

        获取当前时间,以秒为单位,从1970年1月1日(即UNIX纪元)开始计算。

区别:

        如果你传递一个指针,那么time()函数会把当前的时间戳写入这个指针指向的内存位置,并            且返回这个时间戳。

        如果你传递NULL,那么time()函数不会尝试写入任何东西,只会返回当前的时间戳。

如果非要形象的解释:可以想象成time()time(NULL)都是时间的魔术师。他们都可以告诉你从1970年1月1日到现在已经过去了多少秒。他们的区别在于,time()喜欢与人互动,他希望你给他一个空间,他可以在那里写下他的答案。你可以把这个空间想象成一个空白的纸条,你把纸条给time(),然后time()会在纸条上写下答案,并把纸条还给你。而time(NULL)则更喜欢单独工 作,他不需要你给他任何东西,他只是静静地告诉你答案,就像一个神秘的预言家。这就是  time()time(NULL)的区别,他们都是时间的魔术师,只是他们的表演方式略有不同。

        

 srand()函数:

         是一个随机数种子,如果不使用srand()函数,而直接使用rand()函数,那么,每次生             成的随机数都会是一样的

        同时,srand()函数中不能给一个固定的值,否则 rand()函数中的随机数会一直是同一个         数

rand()函数:

        rand()函数会根据随机数种子(srand()函数 )来获取一个随机数

代码:

int main() {/**产生随机数1.导入头文件 time.h  stdlib.h时间的开始是从1970/01/01 00:00:00 开始 和现在当前时间的一个差值2.添加随机数种子若不添加随机数种子,那么每次生成的随机数都会是一样的3.获取随机数**/srand((unsigned int)time(NULL));//先将time函数的返回类型转换成无符号类型,在生成一个随机数        种子,使每次随机数不一样/**for (int i = 0; i < 10; i++) {会生成10个随机数int value = rand() % 10;//生成一个0-9的随机数,赋值给value 取余的值不会大于除的值printf("%d\n", value);}**/int value = rand() % 100;int num;for (;;) {printf("请输入数字\n");scanf("%d", &num);if (num>value) {printf("输入的数字较大\n");}else if(num < value) {printf("输入的数字较小\n");}else {printf("正确");break;}}return 0;
}

解释:

srand((unsigned int)time(NULL))

        现在我们开始拆解:

  • time(NULL):用于获取当前的系统时间,表示为从 1970 年 1 月 1 日(即 UNIX 纪元)以来的秒数。
  • (unsigned int):将time_t类型(time()的返回值类型)转换成一个无符号整型
  • srand():用以生成一个随机数种子
  • 所以srand((unsigned int)time(NULL)):这行代码的作用是用当前的系统时间作为种子来设置随机数生成器。由于系统时间是持续变化的,所以每次运行程序时,种子都会不同,生成的随机数序列也就会不同。

结果:

第一次运行:

 第二次运行:

第三次运行

 这篇的重点在于随机数和随机数种子,如果有不懂可以留言或评论,看见了会回

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

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

相关文章

java的面向对象编程(oop)——认识泛型

前言&#xff1a; 打好基础&#xff0c;daydayup! 泛型 1&#xff0c;认识泛型&#xff1a; 定义类&#xff0c;接口&#xff0c;方法时&#xff0c;同时声明了一个或多个类型变量&#xff08;例&#xff1a;<E>&#xff09;,称为泛型&#xff0c;泛型接口&#xff0c;泛…

炫酷3D按钮

一.预览 该样式有一种3D变换的高级感&#xff0c;大家可以合理利用这些样式到自己的按钮上 二.代码 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice…

AJAXJSON入门篇

AJAX&JSON 概念&#xff1a;AJAX(Asynchronous JavaScript And XML):异步的JavaScript和XML AJAX作用&#xff1a; 与服务器进行数据交换&#xff1a;通过AJAX可以给服务器发送请求&#xff0c;并获取服务器响应的数据 使用了AJAX和服务器进行通信&#xff0c;就可以使用H…

Netty应用(十二) 之 Netty相关参数 Http协议 IO多路复用回顾

目录 28.netty的相关参数 29.HTTP1.0、HTTP1.1 和 HTTP2.0 的区别 30.如何理解IO多路复用&#xff1f; 28.netty的相关参数 1.netty的参数设置体系 客户端&#xff1a; bootstrap.option(); //在这里配置客户端一些配置信息 服务端&#xff1a; serverBootstrap.option(…

JavaScript中的Symbol:加密与安全性

JavaScript中的Symbol是一种唯一且不可变的数据类型&#xff0c;引入了一种新的基本数据类型&#xff0c;用于表示独一无二的标识符。在本文中&#xff0c;我们将深入介绍JavaScript中的Symbol&#xff0c;讨论如何将其应用于JS加密中&#xff0c;提供案例代码&#xff0c;并说…

【git】.gitignore 的匹配规则

每行一个规则&#xff1a;每行只能包含一个规则&#xff0c;多个规则需要分别写在不同的行上。 示例&#xff1a; # 忽略日志文件 logs/ # 忽略临时文件 temp.txt种类匹配&#xff1a; 文件&#xff1a;在规则的开头指定文件名或路径&#xff0c;如 file.txt。 示例&#xff1a…

Java17之使用Lambda表达式对对象集合中指定的字段进行排序

Java17之使用Lambda表达式对对象集合中指定的字段进行排序 文章目录 Java17之使用Lambda表达式对对象集合中指定的字段进行排序1. 集合对象排序1. Java实体类2. 正序排序3.倒序排序 1. 集合对象排序 Java8起可用 List 的 sort 方法进行排序&#xff0c;形参为函数式接口Compara…

Hive on Spark配置

前提条件 1、安装好Hive&#xff0c;参考&#xff1a;Hive安装部署-CSDN博客 2、下载好Spark安装包&#xff0c;链接&#xff1a;https://pan.baidu.com/s/1plIBKPUAv79WJxBSbdPODw?pwd6666 3、将Spark安装包通过xftp上传到/opt/software 安装部署Spark 1、解压spark-3.3…

第二部分阶段总结

第二部分阶段总结 1.知识补充1.1 nolocal关键字1.2 yield from1.3 深浅拷贝 2.阶段总结3.考试题 1.知识补充 1.1 nolocal关键字 在之前的课程中&#xff0c;我们学过global关键字。 name rootdef outer():name "武沛齐"def inner():global namename 123inner()…

Web安全研究(六)

文章目录 HideNoSeek: Camouflaging(隐藏) Malicious JavaScript in Benign ASTs文章结构Introjs obfuscationmethodologyExample HideNoSeek: Camouflaging(隐藏) Malicious JavaScript in Benign ASTs CCS 2019 CISPA 恶意软件领域&#xff0c;基于学习的系统已经非常流行&am…

AI论文速读 | 2024【综述】图神经网络在智能交通系统中的应用

论文标题&#xff1a;A Survey on Graph Neural Networks in Intelligent Transportation Systems 链接&#xff1a;https://arxiv.org/abs/2401.00713 作者&#xff1a;Hourun Li, Yusheng Zhao, Zhengyang Mao, Yifang Qin, Zhiping Xiao, Jiaqi Feng, Yiyang Gu, Wei Ju, …

Linux命令行全景指南:从入门到实践,掌握命令行的力量

目录 知识梳理思维导图&#xff1a; linux命令入门 为什么要学Linux命令 什么是终端 什么是命令 关于Linux命令的语法 tab键补全 关于命令提示符 特殊目录 常见重要目录 /opt /home /root /etc /var/log/ man命令 shutdown命令 history命令 which命令 bash…