当前位置: 首页 > news >正文

C语言从头学63—学习头文件stdlib.h(二)

6、随机数函数rand()
     功能:产生0~RAND_MAX 之间的随机整数。
     使用格式:rand(); //无参
     返回值:返回随机整数
     说明:
      a.RAND_MAX是一个定义在stdlib.h里面的宏,表示可以产生的最大随机整数;
      b.如需要获得整数 a 到 b 之间的随机数(包括a、b),可以使用下面的公式:
         int r = rand()%(b-a+1)+a;。
      c.使用rand()函数还要配套使用随机数种子函数(下面介绍),否则每次输出的随机数顺序都会相同,失去了随机数的意义。
7、随机数种子函数srand()
     功能:重置随机数种子值
     使用格式:srand(参1);
         参1:使用无符号整数作为种子值,为增加随机性,一般使用随时变化的time(NULL)函数返回的秒数做为种子值
     返回值:无
     说明:种子函数srand要在随机数函数rand()前面调用才会发生作用。
 8、终止程序函数abort()  
     功能:触发SIGABRT信号,终止程序
     使用格式:abort(); //无参
     返回值:无
     说明:abort函数触发信号SIGABRT后,有两种情况:如无自定义信号处理程序,则调用默认信号处理程序,然后结束程序;如有自定义信号处理程序,则在执行默认信号处理程序后,会进入自定义信号处理程序,然后再结束程序。总之,不会再返回主程序,这一点与raise()函数发出信号的结果不同。
9、退出当前执行程序函数 exit()、quick_exit()、_Exit()
     功能:退出当前正在执行的程序
     使用格式: exit(参1);
                        quick_exit(参1);
                        _Exit(参1);
        参1:程序的退出状态:0正常退出,非零发生错误退出;也可使用宏EXIT_SUCCESS和EXIT_FAILURE当作参数
     说明:
      a. 上面三个退出程序函数的区别:exit()是正常退出,系统会做完整的清理;quick_exit() 是快速退出,清理工作少一些;_Exit() 是立即退出,不做清理工作。
      b. 退出程序函数退出的是整个程序,不是某一个具体函数;无论在程序的任何地方,遇到上面三个函数,程序都会立即结束。
10、退出前处理函数 atexit()、at_quick_exit()
     功能:程序退出前需要执行的一些函数通过这两个函数进行登记,以便程序退出前予以调用。
     使用格式:atexit(参1);
                       at_quick_exit(参1);
        参1:要执行的函数地址(函数名)。
      返回值:调用成功时返回0 ,调用失败时返回非零值
      说明:
       a.在函数atexit()中登记的函数,只有调用exit()退出或main()退出时才会执行;同样,在函数at_quick_exit()中登记的函数只有在调用quick_exit()退出时才会执行;也就是说,atexit与exit、at_quick_exit与quick_exit要成对使用。
       b.这些函数要在exit或quick_exit前使用,而且可以多次使用;多次使用时,执行顺序是挨着exit()近的先执行。
       c.要调用的函数必须是无参、无返回值的。
       以上函数的实验程序如下:

#include<stdio.h>
#include<time.h> //随机数种子函数
#include<stdlib.h>
#include<signal.h> 
void handle(int x)
{printf("按回车键lllll继续...\n");getchar();
}
void myPrint()
{printf("myPrint函数被调用了。。。\n");getchar();exit(EXIT_SUCCESS);
}
void myAtexit()
{printf("myAtexit函数被执行了\n");getchar();
}
int main(void)
{
//生成10个0-100间的随机整数srand(time(0));for (int i = 0; i < 10; i++){int r = rand() % (100 - 0 + 1) + 0;//生成0-100之间的10个随机整数printf("%d - %d ",i,r);}//运行结果:0 - 92 1 - 55 2 - 26 3 - 41 4 - 17 5 - 32 6 - 80 7 - 69 8 - 1 9 - 93
//实验abort()函数signal(SIGABRT, handle);//abort(); //注释掉,否则后面的代码无法运行
//实验exit() //myPrint(); //这个函数中有exit()的调用printf("这里是主程序...\n");
//实验atexit()函数atexit(myAtexit);exit(EXIT_FAILURE); //如果仅注释掉这一行,myAtexit仍会被调用,main函数正常退出也调用atexit函数getchar();return 0;
}

相关文章:

C语言从头学63—学习头文件stdlib.h(二)

6、随机数函数rand() 功能&#xff1a;产生0~RAND_MAX 之间的随机整数。 使用格式&#xff1a;rand(); //无参 返回值&#xff1a;返回随机整数 说明&#xff1a; a.RAND_MAX是一个定义在stdlib.h里面的宏&#xff0c;表示可以产生的最大随机整数&am…...

js判断一个对象里有没有某个属性

1. 使用in操作符 in操作符可以用来检测属性是否存在于对象或其原型链中。 const obj {a: 1, b: 2}; if (a in obj) { console.log(属性a存在于obj中); } else { console.log(属性a不存在于obj中); } 2. 使用hasOwnProperty()方法 hasOwnProperty()方法用来检测一个…...

Python(爬虫)正则表达式

正则表达式是文本匹配模式&#xff0c;也就是按照固定模式匹配文本 一、导入 re模块是Python环境的内置模块&#xff0c;所以无需手动安装。直接在文件中导入即可&#xff1a; import re 二、正则表达式基础知识 . 匹配除换行符以外的任意字符 ^ 匹配字符串的开始 $ 匹配字…...

Linux:进程(二)

目录 一、cwd的理解 二、fork的理解 1.代码共享 2.各司其职 3.fork的返回值 三、进程状态 1.进程排队 2.进程状态 运行状态 阻塞状态 挂起状态 一、cwd的理解 cwd&#xff08;current working directory&#xff09;。译为当前工作目录。 在C语言中&#xff0c;使用…...

【UE5】将2D切片图渲染为体积纹理,最终实现使用RT实时绘制体积纹理【第二篇-着色器制作】

在上一篇文章中&#xff0c;我们已经理顺了实现流程。 接下来&#xff0c;我们将在UE5中&#xff0c;从头开始一步一步地构建一次流程。 通过这种方法&#xff0c;我们可以借助一个熟悉的开发环境&#xff0c;使那些对着色器不太熟悉的朋友们更好地理解着色器的工作原理。 这篇…...

【OceanBase 诊断调优】—— GC问题根因分析

GC 流程涉及到 RS 的状态切换和 LS 的资源安全回收&#xff0c;流程上较长。且 GC 线程每个租户仅有一个&#xff0c;某个日志流 GC Hang 死时会卡住所有其余日志流的 GC&#xff0c;进而造成更大的影响。 本文档会帮助大家快速定位到 GC 故障的模块&#xff0c;直达问题核心。…...

图像面积计算一般方法及MATLAB实现

一、引言 在数字图像处理中&#xff0c;经常需要获取感兴趣区域的面积属性&#xff0c;下面给出图像处理的一般步骤。 1.读入的彩色图像 2.将彩色图像转化为灰度图像 3.灰度图像转化为二值图像 4.区域标记 5.对每个区域的面积进行计算和显示 二、程序代码 %面积计算 cle…...

指挥平台在应急场所中的主要表现有哪些

在应对自然灾害、公共安全事件等突发危机时&#xff0c;指挥平台作为应急管理体系的核心枢纽&#xff0c;其重要性不言而喻。它不仅承载着信息的快速汇聚、精准分析与高效调度功能&#xff0c;更在应急场所中有一定的关键表现。接下来就跟着北京嘉德立一起了解一下。 一、信息集…...

智能养殖场人机交互检测系统源码分享

智能养殖场人机交互检测检测系统源码分享 [一条龙教学YOLOV8标注好的数据集一键训练_70全套改进创新点发刊_Web前端展示] 1.研究背景与意义 项目参考AAAI Association for the Advancement of Artificial Intelligence 项目来源AACV Association for the Advancement of Co…...

数据集-目标检测系列-海洋鱼类检测数据集 fish>> DataBall

数据集-目标检测系列-海洋鱼类检测数据集 fish>> DataBall 数据集-目标检测系列-海洋鱼类检测数据集 fish 数据量&#xff1a;1W 数据项目地址&#xff1a; gitcode: https://gitcode.com/DataBall/DataBall-detections-100s/overview github: https://github.com/…...

网络威慑战略带来的影响

文章目录 前言一、网络威慑的出现1、人工智能带来的机遇二、网络空间的威慑困境1、威慑概念的提出2、网络威慑的限度3、人类对网络威胁的认知变化4、网络空间的脆弱性总结前言 网络威慑是国家为应对网络空间风险和威胁而采取的战略。冷战时期核威慑路径难以有效复制至网络空间…...

决策树算法在机器学习中的应用

决策树算法在机器学习中的应用 决策树&#xff08;Decision Tree&#xff09;算法是一种基本的分类与回归方法&#xff0c;它通过树状结构对数据进行建模&#xff0c;以解决分类和回归问题。决策树算法在机器学习中具有广泛的应用&#xff0c;其直观性、易于理解和实现的特点使…...

Leetcode面试经典150题-39.组合总数进阶:40.组合总和II

本题是扩展题&#xff0c;真实考过&#xff0c;看这个题之前先看一下39题 Leetcode面试经典150题-39.组合总数-CSDN博客 给定一个候选人编号的集合 candidates 和一个目标数 target &#xff0c;找出 candidates 中所有可以使数字和为 target 的组合。 candidates 中的每个数…...

ProcessOn为什么导出有水印!!!(利用SVG转PNG)

processon-svg2png ProcessOn 一个非常好用的思维导图网站&#xff0c;但是为什么导出有水印&#xff01;&#xff01;&#xff01;。 功能 支持按钮拖拽支持将流程图svg 转成 png下载支持修改自定义文字下载svg&#xff08;开发中&#xff09; 安装/使用方法 安装并使用…...

插入、更新与删除MySQL记录

在现代应用开发中,数据库操作是非常重要的一环。作为程序员,熟练掌握数据库的增删改功能,能够更有效地管理数据并提高开发效率。 本课程将围绕插入、更新与删除记录这三个操作展开,涵盖SQL中的常见语句:INSERT INTO、UPDATE 和 DELETE,并结合实际应用中的常见问题讨论如…...

【ARM】armv8的虚拟化深度解读

Type-1 hypervisor Type-1虚拟化也叫做Bare metal, standalone, Type1 Type2 hypervisor Type-2虚拟化也叫做hosted, Type-2 VM和vCPU(虚拟机和虚拟cpu) 在一个VM&#xff08;虚拟机&#xff09;中有多个vCPU&#xff0c;多个vCPU可能属于同一个Vritual Processor。 EL2…...

9/24作业

1. 分文件编译 分什么要分文件编译&#xff1f; 防止主文件过大&#xff0c;不好修改&#xff0c;简化编译流程 1) 分那些文件 头文件&#xff1a;所有需要提前导入的库文件&#xff0c;函数声明 功能函数&#xff1a;所有功能函数的定义 主函数&#xff1a;main函数&…...

Leetcode 106. 从中序与后序遍历序列构造二叉树

给定两个整数数组 inorder 和 postorder &#xff0c;其中 inorder 是二叉树的中序遍历&#xff0c; postorder 是同一棵树的后序遍历&#xff0c;请你构造并返回这颗 二叉树 。 示例 1: 输入&#xff1a;inorder [9,3,15,20,7], postorder [9,15,7,20,3] 输出&#xff1a;[3…...

针对考研的C语言学习(定制化快速掌握重点1)

1.printf函数的几个要点 printf函数中所有的输出都是右对齐的&#xff0c;除非在%后面添加负号&#xff0c;则表示左对齐 #include<stdio.h> int main() {int num 10;int nums 100;float f 1000.2333333333;printf("%3d\n", nums);//%3d表示输出的总宽度至…...

【大数据入门 | Hive】DDL数据定义语言(数据库DataBase)

1. 数据库(DataBase) 1.1 创建数据库 语法&#xff1a; CREATE DATABASE [IF NOT EXISTS] database_name [COMMENT database_comment] [LOCATION hdfs_path] [WITH DBPROPERTIES (property_nameproperty_value, ...)]; 案例&#xff1a; &#xff08;1&#xff09;创建一个…...

在软件开发中正确使用MySQL日期时间类型的深度解析

在日常软件开发场景中&#xff0c;时间信息的存储是底层且核心的需求。从金融交易的精确记账时间、用户操作的行为日志&#xff0c;到供应链系统的物流节点时间戳&#xff0c;时间数据的准确性直接决定业务逻辑的可靠性。MySQL作为主流关系型数据库&#xff0c;其日期时间类型的…...

Leetcode 3576. Transform Array to All Equal Elements

Leetcode 3576. Transform Array to All Equal Elements 1. 解题思路2. 代码实现 题目链接&#xff1a;3576. Transform Array to All Equal Elements 1. 解题思路 这一题思路上就是分别考察一下是否能将其转化为全1或者全-1数组即可。 至于每一种情况是否可以达到&#xf…...

在鸿蒙HarmonyOS 5中实现抖音风格的点赞功能

下面我将详细介绍如何使用HarmonyOS SDK在HarmonyOS 5中实现类似抖音的点赞功能&#xff0c;包括动画效果、数据同步和交互优化。 1. 基础点赞功能实现 1.1 创建数据模型 // VideoModel.ets export class VideoModel {id: string "";title: string ""…...

MFC内存泄露

1、泄露代码示例 void X::SetApplicationBtn() {CMFCRibbonApplicationButton* pBtn GetApplicationButton();// 获取 Ribbon Bar 指针// 创建自定义按钮CCustomRibbonAppButton* pCustomButton new CCustomRibbonAppButton();pCustomButton->SetImage(IDB_BITMAP_Jdp26)…...

智能在线客服平台:数字化时代企业连接用户的 AI 中枢

随着互联网技术的飞速发展&#xff0c;消费者期望能够随时随地与企业进行交流。在线客服平台作为连接企业与客户的重要桥梁&#xff0c;不仅优化了客户体验&#xff0c;还提升了企业的服务效率和市场竞争力。本文将探讨在线客服平台的重要性、技术进展、实际应用&#xff0c;并…...

在QWebEngineView上实现鼠标、触摸等事件捕获的解决方案

这个问题我看其他博主也写了&#xff0c;要么要会员、要么写的乱七八糟。这里我整理一下&#xff0c;把问题说清楚并且给出代码&#xff0c;拿去用就行&#xff0c;照着葫芦画瓢。 问题 在继承QWebEngineView后&#xff0c;重写mousePressEvent或event函数无法捕获鼠标按下事…...

视觉slam十四讲实践部分记录——ch2、ch3

ch2 一、使用g++编译.cpp为可执行文件并运行(P30) g++ helloSLAM.cpp ./a.out运行 二、使用cmake编译 mkdir build cd build cmake .. makeCMakeCache.txt 文件仍然指向旧的目录。这表明在源代码目录中可能还存在旧的 CMakeCache.txt 文件,或者在构建过程中仍然引用了旧的路…...

C/C++ 中附加包含目录、附加库目录与附加依赖项详解

在 C/C 编程的编译和链接过程中&#xff0c;附加包含目录、附加库目录和附加依赖项是三个至关重要的设置&#xff0c;它们相互配合&#xff0c;确保程序能够正确引用外部资源并顺利构建。虽然在学习过程中&#xff0c;这些概念容易让人混淆&#xff0c;但深入理解它们的作用和联…...

Spring AOP代理对象生成原理

代理对象生成的关键类是【AnnotationAwareAspectJAutoProxyCreator】&#xff0c;这个类继承了【BeanPostProcessor】是一个后置处理器 在bean对象生命周期中初始化时执行【org.springframework.beans.factory.config.BeanPostProcessor#postProcessAfterInitialization】方法时…...

前端调试HTTP状态码

1xx&#xff08;信息类状态码&#xff09; 这类状态码表示临时响应&#xff0c;需要客户端继续处理请求。 100 Continue 服务器已收到请求的初始部分&#xff0c;客户端应继续发送剩余部分。 2xx&#xff08;成功类状态码&#xff09; 表示请求已成功被服务器接收、理解并处…...