PAT B1026. 程序运行时间

题目描述
要获得一个C语言程序的运行时间,常用的方法是调用头文件time.h,其中提供了clock()函数,可以捕捉从程序开始运行到clock()被调用时所耗费的时间。这个时间单位是clock tick,即“时钟打点”。同时还有一个常数CLK_TCK——给出了机器时钟每秒所走的时钟打点数。于是为了获得一个函数 f 的运行时间,只要在调用 f 之前先调用 clock(),获得一个时钟打点数C1;在 f 执行完成后再调用clock(),获得另一个时钟打点数C2;两次获得的时钟之差(C2-C1)就是 f 运行所消耗的时钟打点数,再除以常数CLK_TCK,就得到了以s为单位的运行时间。这里不妨简单假设常数CLK_TCK为100。现给定被测函数前后两次获得的时钟打点数,请给出被测函数运行的时间。


输入格式
在一行中顺序输入2个整数C1和C1。注意:两次获得的时钟打点数肯定不相同即C1<C2,并且取值在[0,10^{7}]。
输出格式
在一行中输出被测函数运行的时间。运行时间必须按照"hh:mm:ss”(即2位的时:分:秒”)格式输出;不足1s的时间四舍五入到s。

(做法一)思路:

                        将打点数转化为总秒数,然后分别计算小时,分钟,秒数。

                        注意点:①转化为总秒数时,不要设置为int类型,不然后面小数会直接省掉,而题目要求四舍五入。

                        ②调用math.h中的round(int x)进行四舍五入。

(做法一)代码实现:

#include<cstdio>
#include<cmath>  //需要用“四舍五入”函数:double round(double x); int main()
{float c1,c2;scanf("%f%f",&c1,&c2);float a = (c2 - c1) / 100;  //总秒数 //c1,c2为float类型,不能为int类型,否则“/100”,int直接将后面的小数去掉了,而题目要求四舍五入  int h,m,s;  //时,分,秒 h = a / 3600;m = (a - h * 3600) / 60;  s = round(a - h *3600 - m * 60);  //round返回值是double类型,而s是int类型,进行了强制转换 printf("%02d:%02d:%02d\n",h,m,s);return 0;
} 

(做法二)思路:

                        步骤1:先求出C2-C1,而由于1s等价于100CLK_TCK,因此换算成“s”单位时要将C2-C1除以100,又由于需要四舍五入,因此需要根据C2-C1的末两位来决定是四舍还是五入,其中当C2-C1的末两位不小于50时,说明C2-C1除以100后需要进位。

为了Step 2讲述方便,这里设ans为(C2-C1)/100四舍五入的结果。
                        步骤2:由于1h=3600s,因此 ans /3600即为小时数。于是,ans % 3600是去除小时数后剩余的部分,这个部分除以60即为分钟数,模上60即为秒数。

(做法二)代码实现:

#include<cstdio>int main()
{int c1,c2;scanf("%d%d",&c1,&c2);int ans = c2 - c1;   //ans这里表示打点总次数 if(ans % 100 >= 50)   //四舍五入 {ans = ans / 100 + 1;	//这里ans表示“五入”后的总秒数 } else{ans = ans / 100;     //这里ans表示“四舍”后的总秒数 }printf("%02d:%02d:%02d\n", ans / 3600, ans % 3600 / 60, ans %60 );return 0;
} 

附加:

程序运行时间:clock()函数的使用

#include<cstdio>
#include<time.h>int main()
{int n1 = clock();int c1,c2;scanf("%d%d",&c1,&c2);int ans = c2 - c1;   //ans这里表示打点总次数 if(ans % 100 >= 50)   //四舍五入 {ans = ans / 100 + 1;	//这里ans表示“五入”后的总秒数 } else{ans = ans / 100;     //这里ans表示“四舍”后的总秒数 }printf("%02d:%02d:%02d\n", ans / 3600, ans % 3600 / 60, ans %60 );int n2 = clock();printf("%d",(n2-n1)/CLK_TCK);return 0;
} 

结果:

第3行的9就是我此次运行程序的时间。

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

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

相关文章

继电器的保护二极管如何选择

继电器在实际应用中&#xff0c;通常都会使用三极管或MOS管控制&#xff0c;其最基本的应用电路如图&#xff1a; 那为什么要在继电器线圈上并联一个二极管呢&#xff1f;我们可以看看没有并联二极管时电路会出现什么情况&#xff0c;我们使用下图所示的电路参数仿真一下&#…

食家巷助力“甘肃乡村振兴,百强主播·打call 甘味”活动

2024年&#xff0c;甘肃省“商务乡村振兴”促消费暨“百强主播打call 甘味”活动在天水市龙城广场盛大启动。 活动现场&#xff0c;来自甘肃省 14 个市州的农特产品展台琳琅满目&#xff0c;让人目不暇接。此次活动中&#xff0c;各企业带来了多款深受消费者喜爱的产品&a…

【AI实践】Dify调用本地和在线模型服务

背景 Ollama可以本地部署模型&#xff0c;如何集成私有数据、如何外部应用程序对接&#xff0c;因此需要有一个应用开发框架 Dify功能介绍 欢迎使用 Dify | 中文 | Dify 下文将把dify部署在PC上&#xff0c;windows环境&#xff1b; 安装部署 安装dify及docker jacobJacobs…

【图解IO与Netty系列】Netty源码解析——服务端启动

Netty源码解析——服务端启动 Netty案例复习Netty原理复习Netty服务端启动源码解析bind(int)initAndRegister()channelFactory.newChannel()init(channel)config().group().register(channel)startThread()run()register0(ChannelPromise promise)doBind0(...) 今天我们一起来学…

ssm162基于SSM的药房药品采购集中管理系统的设计与实现+vue

药房药品采购集中管理系统的设计与实现 摘 要 互联网发展至今&#xff0c;无论是其理论还是技术都已经成熟&#xff0c;而且它广泛参与在社会中的方方面面。它让信息都可以通过网络传播&#xff0c;搭配信息管理工具可以很好地为人们提供服务。针对药房药品采购信息管理混乱&…

购物车店铺列表查询流程

购物车店铺列表查询流程 购物车结算流程图

【Git】基础操作

初识Git 版本控制的方式&#xff1a; 集中式版本控制工具&#xff1a;版本库是集中存放在中央服务器的&#xff0c;team里每个人work时从中央服务器下载代码&#xff0c;是必须联网才能工作&#xff0c;局域网或者互联网。个人修改之后要提交到中央版本库 例如&#xff1a;SVM和…

如何选择合适的大模型框架:LangChain、LlamaIndex、Haystack 还是 Hugging Face

节前&#xff0c;我们星球组织了一场算法岗技术&面试讨论会&#xff0c;邀请了一些互联网大厂朋友、参加社招和校招面试的同学。 针对算法岗技术趋势、大模型落地项目经验分享、新手如何入门算法岗、该如何准备、面试常考点分享等热门话题进行了深入的讨论。 合集&#x…

小北Chat GPT4o 文生图初体验~

前言 在人工智能领域中&#xff0c;生成图像和文本的技术一直在不断进步。OpenAI的Chat GPT-4结合DALL-E技术&#xff0c;为用户提供了一种全新的创作体验——通过文字生成图像。在这篇博客中&#xff0c;小北将分享几次与Chat GPT-4合作的创作过程&#xff0c;展示从文字描述到…

redis aof写入以及aof重写的源码分析

这里写目录标题 版本aof的面试问题aof正常写入流程aof重写流程 版本 redis&#xff1a;6.2.7 aof的面试问题 最近找工作&#xff0c;面试被问倒了&#xff0c;记录一下 比如redis的aof指令会不会丢失&#xff1f;比如在重写aof的什么新来的操作怎么办&#xff1f; 在重写的…

无限可能LangChain——概念指南之架构

本节包含对 LangChain 关键部分的介绍。 架构 LangChain 作为一个框架由多个包组成。 langchain-core 该包包含不同组件的基本抽象以及将它们组合在一起的方法。此处定义了LLM、向量存储、检索器等核心组件的接口。这里没有定义第三方集成。依赖项有目的地保持非常轻量级。…

LaTex入门教程

目录 1.说明 2.页面的分区 3.入门介绍 &#xff08;1&#xff09;命令 &#xff08;2&#xff09;环境 &#xff08;3&#xff09;声明 &#xff08;4&#xff09;注释 4.代码结构 &#xff08;1&#xff09;导言区 &#xff08;2&#xff09;支持中文 &#xff08;3…

【字符串】65. 有效数字

本文涉及知识点 字符串 LeetCode65. 有效数字 给定一个字符串 s &#xff0c;返回 s 是否是一个 有效数字。 例如&#xff0c;下面的都是有效数字&#xff1a;“2”, “0089”, “-0.1”, “3.14”, “4.”, “-.9”, “2e10”, “-90E3”, “3e7”, “6e-1”, “53.5e93”,…

药品销售管理系统带万字文档药店管理系统java项目药店商城网站

文章目录 药品销售管理系统一、项目演示二、项目介绍三、万字项目文档四、部分功能截图五、部分代码展示六、底部获取项目源码带万字文档&#xff08;9.9&#xffe5;带走&#xff09; 药品销售管理系统 一、项目演示 药品销售管理系统 二、项目介绍 系统角色&#xff1a;管理…

GPU的工作原理

location: Beijing 1. why is GPU CPU的存储单元和计算单元的互通过慢直接促进了GPU的发展 先介绍一个概念&#xff1a;FLOPS&#xff08;Floating Point Operations Per Second&#xff0c;浮点运算每秒&#xff09;是一个衡量其执行浮点运算的能力&#xff0c;可以作为计算…

【MySQL】事务的特性和隔离级别

创作不易&#xff0c;本篇文章如果帮助到了你&#xff0c;还请点赞 关注支持一下♡>&#x16966;<)!! 主页专栏有更多知识&#xff0c;如有疑问欢迎大家指正讨论&#xff0c;共同进步&#xff01; 给大家跳段街舞感谢支持&#xff01;ጿ ኈ ቼ ዽ ጿ ኈ ቼ ዽ ጿ ኈ ቼ …

vue 应用测试(一) --- 介绍

vue 应用测试&#xff08;一&#xff09; ---介绍 前端测试简介组件测试Jest 测试框架简介其他测试框架 第一个测试避免误报如何组织测试代码 组件挂载Vue2 组件挂载的方式Vue3 的挂载方式vue-test-utils挂载选项 如何调试测试用例参考小结 前端测试简介 软件测试&#xff1a;…

[AIGC] Python的Range函数

Python的range()函数是一个内置函数&#xff0c;常常用于编程中生成数列。这个函数可以生成一个整数序列&#xff0c;这个序列通常用在循环中。 文章目录 基本用法详细用法注意事项 基本用法 range()函数的基本形式为 range(stop) —— 这将生成一个从0开始&#xff0c;到stop…

Docker_1.0

1.初识Docker 1.1.什么是Docker 微服务虽然具备各种各样的优势&#xff0c;但服务的拆分通用给部署带来了很大的麻烦。 - 分布式系统中&#xff0c;依赖的组件非常多&#xff0c;不同组件之间部署时往往会产生一些冲突。 - 在数百上千台服务中重复部署&#xff0c;环境不一…

Content type ‘application/x-www-form-urlencoded;charset=UTF-8‘ not supported

Content type application/x-www-form-urlencoded;charsetUTF-8 not supported 问题背景新增页面代码改造 问题背景 这里有一个需求&#xff0c;前端页面需要往后端传参&#xff0c;参数包括主表数据字段以及子表数据字段&#xff0c;由于主表与子表为一对多关系&#xff0c;在…