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.mfbz.cn/a/714132.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【Android面试八股文】Java中有几种引用关系,它们的区别是什么?

在Java中,引用关系主要分为以下几种: 强引用(Strong Reference)软引用(Soft Reference)弱引用(Weak Reference)虚引用(Phantom Reference) 这些引用类型的区别在于它们对垃圾回收的影响程度。下面是对每种引用类型的详细解释及代码示例: 1. 强引用(Strong Referen…

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

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

Java web应用性能分析之【prometheus+Grafana监控springboot服务和服务器监控】

Java web应用性能分析之【java进程问题分析概叙】-CSDN博客 Java web应用性能分析之【java进程问题分析工具】-CSDN博客 Java web应用性能分析之【jvisualvm远程连接云服务器】-CSDN博客 Java web应用性能分析之【java进程问题分析定位】-CSDN博客 Java web应用性能分析之【…

5.3.1_2 二叉树的层次遍历

&#x1f44b; Hi, I’m Beast Cheng&#x1f440; I’m interested in photography, hiking, landscape…&#x1f331; I’m currently learning python, javascript, kotlin…&#x1f4eb; How to reach me --> 458290771qq.com 喜欢《数据结构》部分笔记的小伙伴可以订…

PostgreSQL下载地址

下载地址&#xff1a;PostgreSQL: File Browser

Arduino入门2——常用函数及用法

Arduino入门2——串口驱动函数及用法 IO串口 上期&#xff0c;我们简单的认识了一下Arduino&#xff0c;浅浅的入了个门&#xff0c;这一期我们介绍以下Arduino串口常用的函数及用法 IO 常用串口库函数如下&#xff1a; 函数名用法及解析pinMode()用于IO口初始化digitalWrite…

【iOS】自定义cell及其复用机制

文章目录 cell的复用注册非注册两者的区别 自定义cell cell的复用 当用户滚动 UITableView 或 UICollectionView 时,只有少量可见的 cell 会被实际创建和显示。对于那些暂时不可见的 cell,系统会将它们缓存起来以备将来复用。这就是所谓的 cell 复用机制。 为什么需要cell的复…

【招联消费金融股份】有限公司2024年5月19日【算法开发岗暑期实习】二面试经验分享

招联消费金融股份有限公司2024年5月18日面试经验分享 面试流程&#xff1a;30分钟 面试流程&#xff1a;30分钟 先自我介绍3分钟然后介绍论文和实习&#xff0c;细细问。问对招联了解多少&#xff1f;对实习地点怎么样&#xff1f;反问&#xff0c;正常聊天。 创作不易&#x…

数字化转型中的数据资产运营:从数据资产的获取、存储、分析到应用的全流程管理策略

一、引言 随着信息技术的迅猛发展&#xff0c;数字化转型已成为企业提升竞争力、实现可持续发展的关键途径。数据资产作为数字化转型的核心要素&#xff0c;其运营与管理水平直接决定了企业能否在激烈的市场竞争中脱颖而出。本文将从数据资产的获取、存储、分析到应用的全流程…

vue关于:deep穿透样式的理解

情况一 子组件&#xff1a; <div class"child"><div class"test_class">test_class<div class"test1">test1<div class"test2">test2</div></div></div></div>父组件&#xff1a; …

Java爬虫——正则表达式应用

Pattern Matcher均属于regex下 步骤&#xff1a;pattern获取正则&#xff0c;matcher获取文本对象&#xff0c;find截取字符串&#xff08;返回true、false&#xff09;&#xff0c;group获得字符 例题&#xff1a;爬取指定文字 分析&#xff1a; 二次调用时&#xff1a; 循环…

【vue3中使用$refs】

在使用uniapp官网里的uni-popup弹出层组件时&#xff0c;要将vue2转换成vue3,&#xff0c;这里遇到了一个问题&#xff1a;vue2可以通过this访问到绑定的ref&#xff0c;但是vue3没有了this,应该怎么办呢&#xff1f; 解决方法&#xff1a; !

Cocos Creator,Youtube 小游戏!

YouTube 官方前段时间发布了一则重磅通知&#xff0c;宣布平台旗下小游戏功能 Youtube Playables 正式登录全平台&#xff08;安卓、iOS、网页&#xff09;&#xff0c;并内置了数十款精选小游戏。 Youtube Playables 入口&#xff1a; https://www.youtube.com/playables Coco…

Digital电路仿真软件的安装

文章目录 1. Java环境的安装 2. Digital安装 3. 软件配置 1. Java环境的安装 电路仿真软件Digital是一款用于设计和仿真数字逻辑电路的工具。它可以帮助用户创建、测试和调试各种数字电路&#xff0c;提供可视化的电路编辑环境&#xff0c;使得设计过程更加直观和便捷。 D…

Sigir2024 ranking相关论文速读

简单浏览一下Sigir2024中与ranking相关的论文。不得不说&#xff0c;自从LLM大热后&#xff0c;传统的LTR方向的论文是越来越少了&#xff0c;目前不少都是RAG或类似场景下的工作了&#xff0c;比如查询改写、rerank等。 文章目录 The Surprising Effectiveness of Rankers Tr…

centos环境上:k8s 简单安装教程

本次演示安装3节点k8s环境&#xff0c;无需多言&#xff0c;直接上操作步骤&#xff1a; 1、环境准备 k8s部署前&#xff0c;首先需要准备好环境&#xff0c;除了1.4 步骤&#xff0c;其他步骤在所有&#xff08;3个&#xff09;节点上都要执行&#xff1a; 1.1 关闭防火墙 s…

CSS【详解】样式选择器的优先级(含提升优先级的方法)

数值越大&#xff0c;优先级越高&#xff0c;尽量保持较低的优先级&#xff0c;以便使用更高优先级的选择器重置样式 0级——通配选择器、选择符和逻辑组合伪类。逻辑组合伪类有:not()、:is()和:where等&#xff0c;这些伪类本身并不影响CSS优先级&#xff0c;影响优先级的是括…

C++初学者指南第一步---1. C++开发环境设置

C初学者指南第一步—1. C开发环境设置 目录 C初学者指南第一步---1. C开发环境设置1.1 工具1.1.1 代码编辑器和IDE1.1.2 Windows1.1.3 命令行界面 1.2 编译器1.2.1 gcc/g (支持Linux/Windows/MacOSX)1.2.2 clang/clang (支持Linux/Windows/MacOS)1.2.3 Microsoft Visual Studio…

C/C++李峋同款跳动的爱心代码

一、写在前面 在编程的世界里&#xff0c;代码不仅仅是冷冰冰的命令&#xff0c;它也可以成为表达情感、传递浪漫的工具。今天&#xff0c;就让小编带着大家用C语言打造出李峋同款跳动的爱心吧&#xff01; 首先&#xff0c;我们需要知道C作为一种高级编程语言&#xff0c;拥…

常见的宽基指数基金

指数基金投资指南 ❝ 这篇博客里面的内容主要来自于银行螺丝钉的《定投十年&#xff0c;财务自由》和《指数基金投资指南》这两本书中章“常见的宽基指数”&#xff0c;最近第三次读这本书&#xff0c;打算做一点笔记加深自己的印象。 博客中很多内容是从书中摘抄的&#xff0c…