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

news2024/11/28 4:32:48

题目:

通过程序随机一个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.coloradmin.cn/o/1448444.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

猫头虎分享已解决Bug || 任务调度失败(Cron Job Failure):CronJobError, ScheduledTaskFailure

博主猫头虎的技术世界 &#x1f31f; 欢迎来到猫头虎的博客 — 探索技术的无限可能&#xff01; 专栏链接&#xff1a; &#x1f517; 精选专栏&#xff1a; 《面试题大全》 — 面试准备的宝典&#xff01;《IDEA开发秘籍》 — 提升你的IDEA技能&#xff01;《100天精通鸿蒙》 …

炫酷3D按钮

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

URL编码算法:解决特殊字符在URL中的烦恼

引言&#xff1a; URL编码算法是一种将URL中的特殊字符转换为特定格式的编码方式。它在网络传输中起到了保护数据安全与完整性的重要作用。本文将深入探讨URL编码算法的优点与缺点&#xff0c;并介绍它在Web开发、网络安全等方面的应用。 URL编码解码 | 一个覆盖广泛主题工具…

Decian 12.x基于LNMP安装phpIPAM(IP管理系统)

phpipam是一个开源Web IP地址管理应用程序&#xff08;IPAM&#xff09;。其目标是提供轻便&#xff0c;且有用的IP地址管理系统。它是基于PHP的应用程序&#xff0c;具有MySQL数据库后端&#xff0c;使用jQuery库&#xff0c;ajax和HTML5 / CSS3功能。 在Debian 12中&…

20240212请问如何将B站下载的软字幕转换成为SRT格式?

20240212请问如何将B站下载的软字幕转换成为SRT格式&#xff1f; 2024/2/12 12:47 百度搜索&#xff1a;字幕 json 转 srt json srt https://blog.csdn.net/a_wh_white/article/details/120687363?share_token2640663e-f468-4737-9b55-73c808f5dcf0 https://blog.csdn.net/a_w…

PHP开发日志 ━━ 深入理解三元操作与一般条件语句的不同

概况 三元运算符的功能与“if…else”流程语句一致。 在一般情况下&#xff0c;三元操作替换if条件语句可以精简代码&#xff0c;并且更为直观&#xff0c;但是在下面的情况中使用三元操作将会返回警告。 借图&#xff1a; 案例 比如原代码&#xff1a; class classA{publ…

Vue3.0(六):VueX 4.x详解

Vuex4状态管理 什么是状态管理 在开发中&#xff0c;我们的应用程序需要处理各种各样的数据&#xff0c;这些数据需要保存在应用程序的某一个位置&#xff0c;对于这些数据的管理&#xff0c;就是 状态管理目前前端项目越来越复杂&#xff0c;多组件共享同一数据的状态很常见…

高校危化试剂管理:Java与SpringBoot的革新

✍✍计算机编程指导师 ⭐⭐个人介绍&#xff1a;自己非常喜欢研究技术问题&#xff01;专业做Java、Python、微信小程序、安卓、大数据、爬虫、Golang、大屏等实战项目。 ⛽⛽实战项目&#xff1a;有源码或者技术上的问题欢迎在评论区一起讨论交流&#xff01; ⚡⚡ Java实战 |…

机器学习2---逻辑回归(基础准备)

逻辑回归是基于线性回归是直线分的也可以做多分类 ## 数学基础 import numpy as np np.pi # 三角函数 np.sin() np.cos() np.tan() # 指数 y3**x # 对数 np.log10(10) np.log2(2) np.e np.log(np.e) #ln(e)# 对数运算 # log(AB) log(A) logB np.log(3*4)np.log(3)np.log(4) #…

HTML5+CSS3+移动web——HTML 基础

目录 一、标签语法 HTML的基本框架 1. 标题标签 2. 段落标签 3. 换行和水平线 4. 文本格式化标签 5. 图像标签 6. 路径 相对路径 绝对路径 7. 超链接标签 8. 音频 9. 视频 10. 注释 二、标签结构 一、标签语法 HTML 超文本标记语言——HyperText Markup Langua…

【大数据Hive】hive 表设计常用优化策略

目录 一、前言 二、hive 普通表查询原理 2.1 操作演示说明 2.1.1 创建一张表&#xff0c;并加载数据 2.1.2 统计3月24号的登录人数 2.1.3 查询原理过程总结 2.2 普通表结构带来的问题 三、hive分区表设计 3.1 区表结构 - 分区设计思想 3.2 操作演示 3.2.1 创建分区表…

如何使用六图一表七种武器

六图一表七种武器用于质量管理&#xff1a; 描述当遇到问题时应该用那张图来解决&#xff1a; 一、如果题目说出了质量问题需要找原因&#xff1f; 解&#xff1a;用因果图&#xff0c;因果图也称石川图或鱼骨图 二、如果要判断过程是否稳定受控&#xff1f; 解&#xff1a…

谷歌浏览器,如何将常用打开的网站创建快捷方式到电脑桌面?

打开谷歌浏览器&#xff0c;打开想要创建的快捷方式的网页 点击浏览器右上角的三个点&#xff1a; 点击选择【更多工具】 选择【创建快捷方式】 然后&#xff0c;在浏览器上方会弹出一个框&#xff0c;让命名此创建的快捷方式的名称 命名好之后&#xff0c;再点击【创…

Python-web自动化-Playwright的学习

Python-web自动化-Playwright的学习 1. 安装playwright2. 界面等待3. 自动化代码助手4. 定位元素1. css selector定位2. xpath定位3. get_by_XXX定位 5. 操作元素1. 单选框、复选框2. select下拉框3. 网页操作4. 框架页 frame5. 窗口切换6. 截屏 1. 安装playwright pip命令 pi…

【Windows】常用快捷键

文章目录 文本编辑相关快捷键窗口管理和操作系统快捷键浏览器快捷键其他常用快捷键系统无响应快捷键 快捷键&#xff1a;shortcut key、keyboard shortcuts。 文本编辑相关快捷键 这部分是非常常用的内容&#xff0c;在很多编辑器中都适用的&#xff0c;比如csdn的markdown和t…

Python 数据分析库之polars使用详解

概要 数据分析是现代应用程序和业务决策的关键组成部分。Python 作为一门强大的编程语言,拥有丰富的数据处理库和工具,其中之一就是 Polars。Polars 是一个现代化的数据操作和分析库,它提供了高性能的数据操作功能,支持链式方法调用,并且兼容 Pandas 和 Arrow 格式。本文…

每日一练——月落乌啼算钱

题目&#xff1a; 举例&#xff1a; 输入&#xff1a;6&#xff0c;输出&#xff1a;8.00 最开始看到这道题还有点蒙&#xff0c;但是看到他的公式想起了斐波那契数列 1,1,2,3,5,8...... 由前两个数相加得到第三个数&#xff0c;为An2An1An。 可以得出这个题目中所给的通项就…

Hive的Join连接、谓词下推

前言 Hive-3.1.2版本支持6种join语法。分别是&#xff1a;inner join&#xff08;内连接&#xff09;、left join&#xff08;左连接&#xff09;、right join&#xff08;右连接&#xff09;、full outer join&#xff08;全外连接&#xff09;、left semi join&#xff08;左…

猫头虎分享:localhost和127.0.0.1的区别是什么?

博主猫头虎的技术世界 &#x1f31f; 欢迎来到猫头虎的博客 — 探索技术的无限可能&#xff01; 专栏链接&#xff1a; &#x1f517; 精选专栏&#xff1a; 《面试题大全》 — 面试准备的宝典&#xff01;《IDEA开发秘籍》 — 提升你的IDEA技能&#xff01;《100天精通鸿蒙》 …

Java+SpringBoot构建智能捐赠管理平台

✍✍计算机编程指导师 ⭐⭐个人介绍&#xff1a;自己非常喜欢研究技术问题&#xff01;专业做Java、Python、微信小程序、安卓、大数据、爬虫、Golang、大屏等实战项目。 ⛽⛽实战项目&#xff1a;有源码或者技术上的问题欢迎在评论区一起讨论交流&#xff01; ⚡⚡ Java实战 |…