C语言——库函数

常用的函数

https://cplusplus.com/reference/ 没事儿多看看

1 数学函数

#include <math.h>
#include <stdio.h>
int main() 
{printf("%lf\n", sqrt(4));//开平方根——>double类型printf("%lf\n", pow(2, 10));//求几次方的——>double类型printf("%d\n", abs(-1));//整数绝对值printf("%lf\n", fabs(-1.11));//浮点数的绝对值//三角函数...//对数函数...return 0;
}

2 时间函数

可以做游戏用

#include <time.h>
#include <stdlib.h>
#include <string.h>
#include <stdio.h>
#include <stdbool.h>
#include <windows.h>
void test_time_type() 
{clock_t t1;	//其实就是long类型time_t t2;	//int64类型size_t t3;			struct tm t4;//右击查看定义就能知道详细/*struct tm{int tm_sec;   // seconds after the minute - [0, 60] including leap secondint tm_min;   // minutes after the hour - [0, 59]int tm_hour;  // hours since midnight - [0, 23]int tm_mday;  // day of the month - [1, 31]int tm_mon;   // months since January - [0, 11]int tm_year;  // years since 1900——>从1900年开始int tm_wday;  // days since Sunday - [0, 6]int tm_yday;  // days since January 1 - [0, 365]int tm_isdst; // daylight savings time flag};*/
}//1 获取当前时间
void get_cur_time() 
{//1.使用time函数获取时间戳 time_t t = time(NULL);//2.直接用ctime转换为字符串打印出来puts(ctime(&t));//3.时间戳转换为struct tm 自己去访问年月日时分秒struct tm* pt = localtime(&t);printf("%d年%d月%d日\n", pt->tm_year + 1900, pt->tm_mon + 1, pt->tm_mday);printf("%02d:%02d:%02d\n", pt->tm_hour, pt->tm_min, pt->tm_sec);//4.struct tm* 转换为字符串,内部有很多转换函数puts(asctime(pt));//5.格式化字符串char buffer[50] = "";strftime(buffer,50, "%Y-%m-%d %H:%M:%S", pt);puts(buffer);strftime(buffer, 50, "%F %T", pt);puts(buffer);
}-----------------------------------------------------------------------------------------// 2 !!!挺有用的,可以测自己写的算法运行时间间隔
void test_clock() 
{clock_t begin = clock();for (int i = 0; i < 1000000; i++) {int a = i + 1;int b = i + a;int c = a + b + i;}clock_t end = clock();printf("duration:%ld", end - begin);
}-----------------------------------------------------------------------------------------//3 !!!定时器——>和sleep函数(会影响程序主循环)有区别的
bool on_timer(int duration, int id) 
{static int start_time[20] = { 0 };//静态变量,初始化代码只执行一次。普通变量每次都执行if (start_time[id] == 0) {start_time[id] = clock();}int end_time = clock();if (end_time - start_time[id] >= duration) {start_time[id] = end_time;return true;}return false;
}-----------------------------------------------------------------------------------------//4 记录时间
void count_time(int duration) 
{time_t start_time, end_time;int  old_time = 0;start_time = time(NULL);while (1) {end_time = time(NULL);int etime = (int)difftime(end_time, start_time);if (old_time != etime) {printf("过去了 %d 秒\n", etime);}old_time = etime;if(etime>=duration){break;}}
}-----------------------------------------------------------------------------------------int main() 
{//get_cur_time();//test_clock();count_time(10);//while (true) //{//	printf("11111111\n");//	//Sleep(2000);//	if(on_timer(2000,0))//		printf("22222222\n");//}return 0;
}

3 随机函数

通常结合时间函数来做

#include <time.h>
#include <stdlib.h>
#include <stdio.h>
#include <stdbool.h>//1 rand 和 srand
void test_rand() 
{//rand()——>伪随机数//srand(100);//生成的随机树的最小值是100,随机函数种子,但也是伪随机数,可以与时间建立联系,就可以					 真正随机了//srand((unsigned int)time(NULL));printf("%d\n", rand());
}-----------------------------------------------------------------------------------------//2 设置随机数范围
void set_rand() 
{//1.取余数  n%x  [0,x-1]printf("取余固定范围:%d\n", rand() % 10);//2.n%x+a   [a,x-1+a];printf("最小值限定:%d\n", rand() % 10 + 5);//3.某一个数字的整数倍 printf("整数倍:%d\n", rand() % 100 * 10);
}-----------------------------------------------------------------------------------------//与定时器结合(下面场景用)
bool on_timer(int duration, int id)
{static int start_time[20] = { 0 };if (start_time[id] == 0){start_time[id] = clock();}int end_time = clock();if (end_time - start_time[id] >= duration){start_time[id] = end_time;return true;}return false;
}-----------------------------------------------------------------------------------------//3 随机数两种应用场景
void  test_use_rand() 
{	//抽奖int count = 1;while (1) {int result = rand() % 1000;printf("第%03d次抽奖结果:", count);if (count>=100&&result == 0) //最少抽100次{printf("特等奖\n");break;}else if (result >= 10 && result < 20) {printf("一等奖\n");}else if (result >= 100 && result <= 199) {printf("二等奖\n");}else if (result >= 300 && result <= 500) {printf("三等奖\n");}else {printf("安慰奖\n");}count++;}//游戏int direct = 0;while (1) {printf("怪物:");//用上定时器if (on_timer(1000, 0)) {direct = rand() % 4;}switch (direct) {case 0:printf("往上走!\n");break;case 1:printf("往下走\n");break;case 2:printf("往左走\n");break;case 3:printf("往右走\n");break;}}}int main() 
{test_rand();set_rand();test_use_rand();return 0;
}

4 可增长函数

#include <stdarg.h>
#include <stdio.h>
/*
va_list
va_start
va_arg
va_end
...缺省符
*/int sum(unsigned int count, int arg1, ...) 
{//创建参数列表,初始化int result = arg1;va_list start;va_start(start, arg1);for (int i = 1; i < count; i++) {result += va_arg(start, int);}va_end(start);return result;
}-----------------------------------------------------------------------------------------//模拟自己写一个printf函数
//为什么要用'%d'之类的格式控制字符
void my_printf(const char* str, ...) 
{	//做2种数据的解析int inum = 0;double dnum = 1.0;va_list start;va_start(start, str);while (*str){if (*str == '%') {str++;switch (*str) {case 'd':inum = va_arg(start, int);printf("%d", inum);break;case 'f':dnum = va_arg(start, double);printf("%f", dnum);break;}}else {printf("%c", *str);}str++;}
}int main() 
{printf("sd\n");printf("%d\n", sum(2, 1,2));printf("%d\n", sum(3, 1,2,3));printf("%d\n", sum(4, 1,2,3,4));my_printf("整数 %d\t,小数%f", 12, 1.11f);return 0;
}

5 其他头文件

在这里插入图片描述

有的函数很简单,可以自己封装

#include<ctype.h>//检查字符各种功能
#include <stdlib.h>//字符串转换,伪随机,动态内存,搜索,qsort....
#include <stdio.h>//输入输出,文件操作
#include <stdbool.h>//true和false
#include <iso646.h>//逻辑运算符用单词表示
#include <limits.h>//里面有最大最小正整数之类的宏
#include <string.h>//字符串操作bool is_digit(char num) 
{//return num >= '0' && num <= '9';return num >= '0' and num <= '9';
}//qsort函数
int compare(const void* a, const void* b)
{return (*(int*)a - *(int*)b);
}int main() 
{isdigit('1');printf("%d\n", INT_MAX);printf("%d\n", INT_MIN);----------------------------------------------------------------------------//qsort函数 int values[] = { 40, 10, 100, 90, 20, 25 };int n;qsort(values, 6, sizeof(int), compare);for (n = 0; n < 6; n++)printf("%d ", values[n]);----------------------------------------------------------------------------//分割字符串char str[] = "- This, a sample string.";char* pch;printf("Splitting string \"%s\" into tokens:\n", str);pch = strtok(str, " ,.-");while (pch != NULL){printf("%s\n", pch);pch = strtok(NULL, " ,.-");}return 0;
}

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

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

相关文章

纯Go语言开发人脸检测、瞳孔/眼睛定位与面部特征检测插件-助力GoFly快速开发框架

前言​ 开发纯go插件的原因是因为目前 Go 生态系统中几乎所有现有的人脸检测解决方案都是纯粹绑定到一些 C/C 库&#xff0c;如 ​​OpenCV​​ 或 ​​​dlib​​​&#xff0c;但通过 ​​​cgo​​​ 调用 C 程序会引入巨大的延迟&#xff0c;并在性能方面产生显著的权衡。…

27 基于51单片机的方向盘模拟系统

目录 一、主要功能 二、硬件资源 三、程序编程 四、实现现象 一、主要功能 基于STC89C52单片机&#xff0c;采用两个MPX4115压力传感器作为两路压力到位开关电路&#xff0c; 采用滑动变阻器连接数模转换器模拟重力加速度传感器电路&#xff1b; 一个按键控制LED灯的点亮与…

win10环境mysql8.4免安装版配置

下载后解压 dos管理员&#xff0c;进入bin目录 mysqld -install net start mysql 出现错误&#xff0c;服务无法启动 MySQL 服务正在启动 . MySQL 服务无法启动。 服务没有报告任何错误。 请键入 NET HELPMSG 3534 以获得更多的帮助。 services.msc&#xff0c;查看服务…

centos更换源文件,换源,替换源

期初怎么折腾就是不行&#xff0c;换了源也是不能使用的&#xff0c;最后发现不是换的源不行&#xff0c;而是之前的源文件不行&#xff0c;然后给所有的源文件在yum源统一放在了bak目录下&#xff0c;随后我们再去下载安装源文件。 您将yum源下载之后&#xff0c;先将您的其他…

网络安全之IP伪造

眼下非常多站点的涉及存在一些安全漏洞&#xff0c;黑客easy使用ip伪造、session劫持、xss攻击、session注入等手段危害站点安全。在纪录片《互联网之子》&#xff08;建议搞IT的都要看下&#xff09;中。亚伦斯沃茨&#xff08;真实人物&#xff0c;神一般的存在&#xff09;涉…

蓝牙定位的MATLAB仿真程序|基于信号强度的定位,平面、四个蓝牙基站(附源代码)

这段代码通过RSSI信号强度实现了蓝牙定位&#xff0c;展示了如何使用锚点位置和测量的信号强度来估计未知点的位置。它涵盖了信号衰减模型、距离计算和最小二乘法估计等基本概念。通过图形化输出&#xff0c;用户可以直观地看到真实位置与估计位置的关系。 文章目录 蓝牙定位原…

机器学习算法(六)---逻辑回归

常见的十大机器学习算法&#xff1a; 机器学习算法&#xff08;一&#xff09;—决策树 机器学习算法&#xff08;二&#xff09;—支持向量机SVM 机器学习算法&#xff08;三&#xff09;—K近邻 机器学习算法&#xff08;四&#xff09;—集成算法 机器学习算法&#xff08;五…

Attention显存统计与分析

Attention显存估计 简单的Attention函数 import torch import torch.nn as nn import einops class Attention(nn.Module):def __init__(self, dim, num_heads8, qkv_biasFalse, qk_scaleNone, attn_drop0., proj_drop0.):super().__init__()self.num_heads num_headshead_d…

Spring系列之批处理Spring Batch介绍

概述 官网&#xff0c;GitHub A lightweight, comprehensive batch framework designed to enable the development of robust batch applications vital for the daily operations of enterprise systems. 执行流程 实战 假设有个待处理的任务&#xff0c;如文件batch-tes…

[保姆式教程]使用labelimg2软件标注定向目标检测数据和格式转换

定向目标检测是一种在图像或视频中识别和定位对象的同时&#xff0c;还估计它们方向的技术。这种技术特别适用于处理有一定旋转或方向变化的对象&#xff0c;例如汽车、飞机或文本。定向目标检测器的输出是一组旋转的边界框&#xff0c;这些框精确地包围了图像中的对象&#xf…

Socket编程:UDP网络编程项目

目录 一、回显服务器 二、翻译器 三、聊天室 一、回显服务器 项目介绍&#xff1a;使用UDPIPv4协议进行Linux网络编程&#xff0c;实现回显服务器和客户端 功能介绍&#xff1a;客户端发送数据&#xff0c;经过服务端再返回到客户端&#xff0c;输出数据 源代码&#xff1…

HarmonyOS4+NEXT星河版入门与项目实战(24)------Stage模型

文章目录 1、概念2、配置文件1、全局配置文件2、模块配置文件3、UIAbility生命周期1、图文归纳2、生命周期方法入口4、页面生命周期1、图文描述1、概念 2、配置文件 1、全局配置文件 2、模块配置文件 统一修改配置文件技巧:点击任意json 文件,选择 Open editor ,在显示的列表…

torch_geometric使用手册-Heterogeneous Graph Learning(专题三)

大量的现实世界数据集以异构图(Heterogeneous Graph) 的形式存储,这促使了在PyG中引入专门的功能。例如,大多数推荐系统中的图(如社交图)都是异构图,它们存储着关于不同类型的实体及其不同类型关系的信息。本教程介绍了如何将异构图映射到PyG中,以及如何将其作为输入用于…

手机实时提取SIM卡打电话的信令声音-蓝牙电话如何适配eSIM卡的手机

手机实时提取SIM卡打电话的信令声音 --蓝牙电话如何适配eSIM卡的手机 一、前言 蓝牙电话的海外战略中&#xff0c;由于海外智能手机市场中政策的差异性&#xff0c;对内置eSIM卡的手机进行支持是非常合理的需求。Android系列手机中&#xff0c;无论是更换通信运营商&#xf…

QT6学习第五天 第一个QT Quick程序

QT6学习第五天 第一个QT Quick程序 概述创建Qt Quick程序使用Qt资源文件程序发布 概述 如果将程序的用户界面成为前端&#xff0c;程序的数据存储和逻辑业务成为后端&#xff0c;那么传统QT Widgets程序的前后端都是用C完成的。对于现代软件开发而言&#xff0c;前端演化速度远…

LabVIEW内燃机气道试验台测控系统

基于LabVIEW软件开发的内燃机气道试验台测控系统主要应用于内燃机气道的性能测试和数据分析&#xff0c;通过高精度的测控技术&#xff0c;有效提升内燃机的测试精度和数据处理能力。 项目背景 随着内燃机技术的发展&#xff0c;对其气道性能的精准测量需求日益增加。该系统通…

flutter底部导航栏中间按钮凸起,导航栏中间部分凹陷效果

关键代码: Scaffold中设置floatingActionButtonLocation: FloatingActionButtonLocation.centerDocked和extendBody: true&#xff0c; BottomAppBar中设置shape: const CircularNotchedRectangle() Scaffold(extendBody: true,//body是否延伸脚手架底部&#xff0c;在底部导航…

108.【C语言】数据结构之二叉树查找值为x的节点

目录 1.题目 代码模板 2.分析 分类讨论各种情况 大概的框架 关键部分(继续递归)的详解 递归调用展开图 3.测试结果 其他写法 4.结论 5.注意事项 不推荐的写法 1.题目 查找值为x的节点并返回节点的地址 代码模板 typedef int BTDataType; typedef struct BinaryT…

十五、linux之搭建JavaEE环境

1 概述 如果需要在 Linux 下进行 JavaEE 的开发&#xff0c;我们需要安装如下软件 2 安装 JDK 安装步骤 mkdir /opt/jdk mkdir /opt/jdk通过 xftp6 上传到 /opt/jdk 下 cd /opt/jdk 解压 tar -zxvf jdk-8u261-linux-x64.tar.gz tar -zxvf jdk-8u261-linux-x64.tar.…

基于PHP的音乐网站的设计与实现

摘 要 本系统采用PHP编程语言和MySQL数据库技术搭载了Apache服务器&#xff0c;完成了基于PHP的音乐网站设计&#xff0c;通过此次毕 业论文的撰写我明白了对于论文的选题要精确&#xff0c;要明确&#xff0c;要有明确的见解&#xff0c;要有足够的论证和创意&#xff0c;必须…