IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 系统运维 -> 初识库函数“time” -> 正文阅读

[系统运维]初识库函数“time”

首先,要先对库函数有一个基本的概念,什么是“库函数”。

【来自:百度百科】库函数(Library function)是将函数封装入库,供用户使用的一种方式。方法是把一些常用到的函数编完放到一个文件里,供不同的人进行调用。调用的时候把它所在的文件名用#include<>加到里面就可以了。一般是放到lib文件里的。

这个概念很好理解,C语言的库函数给用户提供了极大的方便。接下来列举一下库函数的分类。

(1)I/O 函数。包括各种控制台I/O、缓冲型文件I/O和UNIX式非缓冲型文件I/O操作

需要的包含文件:stdio.h

(2)字符串、内存和字符函数。包括对字符串进行各种操作和对字符进行操作的函数。

需要的包含文件:string.h、mem.h、ctype.h或string.h

(3)数学函数。包括各种常用的三角函数、双曲线函数、指数和对数函数等。

需要的包含文件:math.h

(4)时间、日期和与系统有关的函数。对时间、日期的操作和设置计算机系统状态等。

需要的包含文件:time.h

(5)动态存储分配。包括"申请分配"和"释放"内存空间的函数。

需要的包含文件:alloc.h或stdlib.h

(6)目录管理。包括磁盘目录建立、查询、改变等操作的函数。

(7)过程控制。包括最基本的过程控制函数。

(8)字符屏幕和图形功能。包括各种绘制点、线、圆、方和填色等的函数。

(9)其它函数。

初学者在编程过程中基本只涉及到前五种函数,以上库函数的9大分类也只做简单了解即可。

?像stdio是一个I/O函数库,包含scanf、printf、getcher、putcher等函数一样,time函数库中也包含一些函数。例如clock、time、ctime、gmttime、localtime、mktime、asctime、difftime、strftime等。以下是其功能的简单介绍。

clock: 获取程序开始执行后占用的处理器时间,返回值clock_t。

time:获取当前系统时间(UTC时间)的time_t值。

ctime:将time_t值转换为表示本地时间的字符串。

gmttime:将time_t值转换为表示GMT时间的字符串。

localtime:将time_t转换为表示本地时间的strunct tm结构。

mktime:将表示本地时间的struct tm转换为time_t。

asctime:将struct tm转换为字符串形式。

difftime:得到两个日历时之间的差值。

strftime:自定义把结构体tm的日期与时间信息转换为制定的格式。
想再深入了解这些函数功能的使用以及看一些例子可以搜索CSDN博主「大米粒ing」的文章进一步学习。文章链接:https://blog.csdn.net/chenyiming_1990/article/details/8682552

下面我将引入一个计算阶乘的程序展示time函数库中计时函数clock()的功能。

例题:输入正整数n,计算s=1!+2!+3!+......+n!的末了六位(不含前导0)。n≤10^6,n!表示n的阶乘并输出运行时间。?

//摘自《算法竞赛 入门经典》(刘汝佳)
#include<stdio.h>
#include<time.h>
int main()
{
	const int MOD=1000000;
	int n,s=0;
	scanf("%d",&n);
	for(int i=1;i<=n;i++)
	{
		int factorial=1;
		for(int j=1;j<=i;j++)
		{
			factorial=factorial*j%MOD;
		}
		s=(s+factorial)%MOD;
	}
	printf("%d\n",s);
	printf("Time used =%.2f\n",(double)clock()/CLOCKS_PER_SEC);
	return 0;
 } 

?本例答题很好理解。现在来解释一下涉及到time函数库函数的内容。

引用库函数time时,在程序开头写上引用库函数的声明#include<time.h>即可。

程序最后有printf("Time used =%.2f\n",(double)clock()/CLOCKS_PER_SEC);的语句。

clock()返回值clock_t就是long类型。本程序中使用的强制类型转换的操作。在clock前面加上(double)就将clock的返回转化为double类型,作用就是精确度变高了。

百度中有这样的解释:clock()返回的不是当前的UTC时间,而且返回当前程序占用的CPU时间,用clock()返回的值除于CLOCKS_PER_SEC常量可以得到当前程序的运行时间,单位是秒。CLOCKS_PER_SEC和操作系统相关,尽量不要使用clock()的返回值。

将这个程序放在编程环境中运行,出现两行数字,第一行是s值,第二行是程序运行时间。

程序运行时间的问题需要进一步解释:

输入“9”,按Enter键后能立马得到结果362880,但是输出的Time used不是0。原因在于键盘的输入时间也被计算在内,这是在程序启动之后在进行的。为避免输入数据的时间影响,下面我们介绍一种成为“管道”的小技巧:在Windows命令行下执行echo 20|abc,操作系统会自动把20输入,其中abc是程序名。Linux系统有其他输入方法(作者现在也不太明白)。这里留下一个可供后续继续学习的内容:命令行操作。(也是《算法竞赛 入门经典》一书中介绍的)欢迎读着来和作者共同学习,以及在后续的文章中作者也会更新有关命令行操作的知识内容。

读着可以尝试自己运行此程序并观察输出结果,也可以结合其他程序进一步加深对time库函数的理解。

  系统运维 最新文章
配置小型公司网络WLAN基本业务(AC通过三层
如何在交付运维过程中建立风险底线意识,提
快速传输大文件,怎么通过网络传大文件给对
从游戏服务端角度分析移动同步(状态同步)
MySQL使用MyCat实现分库分表
如何用DWDM射频光纤技术实现200公里外的站点
国内顺畅下载k8s.gcr.io的镜像
自动化测试appium
ctfshow ssrf
Linux操作系统学习之实用指令(Centos7/8均
上一篇文章      下一篇文章      查看所有文章
加:2021-07-25 12:01:39  更:2021-07-25 12:03:39 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/25 16:51:47-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码