PAT B1026. 程序运行时间

news2025/1/3 4:48:57

题目描述
要获得一个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.coloradmin.cn/o/1828749.html

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

相关文章

Harbor镜像中心搭建

文章目录 Harbor镜像中心搭建前置条件下载Harbor创建CA证书配置Harbor开始启动地址映射访问配置本地登录配置外部虚拟机访问 Harbor镜像中心搭建 Harbor是一个镜像中心&#xff0c;我们所熟知的DockerHub就是一个镜像中心&#xff0c;我们可以把我们打包的镜像放在镜像中心中供…

Proteus 新建工程

Proteus 新建工程 新建简单工程 首先在File工具栏中点击New Project&#xff0c;弹出新建工程向导程序(New Proteus Wizard) 填写工程名称与存储路径&#xff0c;选择New Proteus并点击Next进行下一步设置 我们不需要生成PCB文件&#xff0c;一路默认&#xff0c;点击Next即…

基于springboot实现火锅店管理系统项目【项目源码+论文说明】

基于springboot实现火锅店管理系统演示 摘要 传统办法管理信息首先需要花费的时间比较多&#xff0c;其次数据出错率比较高&#xff0c;而且对错误的数据进行更改也比较困难&#xff0c;最后&#xff0c;检索数据费事费力。因此&#xff0c;在计算机上安装火锅店管理系统软件来…

篮球杯小白+强者

2. 宣读数字【算法赛】 思维题&#xff0c;注意到完全平方数的约数是奇数个&#xff0c;其余都是偶数个。 #include <bits/stdc.h>using namespace std;#define LL long long#define pb push_back#define x first#define y second #define int long long #define endl \n…

[240615] X-CMD 发布 v0.3.11,增加对 elvish 的支持

目录 X-CMD 发布 v0.3.11&#xff0c;增加对 elvish 的支持&#xff0c;并优化对 nushell&#xff0c;fish&#xff0c;xonsh&#xff0c;tcsh 的支持✨ co 模块 - copilot✨ elv 模块✨ hub X-CMD 发布 v0.3.11&#xff0c;增加对 elvish 的支持&#xff0c;并优化对 nushell&…

2024抖音电影奇遇夜沪上落幕,短视频宣发助力电影佳作被看见

6月14日&#xff0c;由抖音、央视电影频道联合举办的2024抖音电影奇妙夜在上海落幕。该活动以“在电影里遇见”为主题&#xff0c;邀请40个电影剧组、120多位影人嘉宾、30位抖音创作者共话光影。张艺谋、陈思诚、刘伟强、黄渤、吴镇宇、马丽、邓超、任贤齐、张家辉、倪妮、刘昊…

2078.两栋颜色不同且距离最远的房子

街上有 n 栋房子整齐地排成一列&#xff0c;每栋房子都粉刷上了漂亮的颜色。给你一个下标从 0 开始且长度为 n 的整数数组 colors &#xff0c;其中 colors[i] 表示第 i 栋房子的颜色。 返回 两栋 颜色 不同 房子之间的 最大 距离。 第 i 栋房子和第 j 栋房子之间的距离是 a…

Keil5新建工程详细讲解

一. 新建文件夹并拷贝库文件 新建project文件夹后建立4个子文件夹&#xff1a;startup&#xff0c;device&#xff0c;drivers&#xff0c;main 二. 新建mdk工程 1. 打开MDK软件&#xff0c;再点击Project->New uVision Project…新建一个工程&#xff0c;在弹出的对话框内…

MySQL日常问题-行列互换

问题 行列互换 场景1 行转换列 1、表结构和数据 /*Navicat Premium Data TransferSource Server : 本地Source Server Type : MySQLSource Server Version : 80027Source Host : localhost:3306Source Schema : schoolTarget Server Type :…

Javaweb9 AOP+案例

AOP Aspect Oriented Programming面向切片编程【就是面向特定方法变成】 SpringAOP是Spring框架的高级技术&#xff0c;旨在管理bean对象的过程中&#xff0c;主要通过底层的**动态代理机制&#xff0c;**对特定的方法进行编程 1.导入AOP依赖 2.编写AOP程序 加上Component//类…

二分查找-java代码实现(easy)

目录 一、问题描述 二、代码实现 三、刷题链接 一、问题描述 二、代码实现 import java.util.*;public class Solution {/*** 代码中的类名、方法名、参数名已经指定&#xff0c;请勿修改&#xff0c;直接返回方法规定的值即可** 如果目标值存在返回下标&#xff0c;否则返…

Digital电路仿真软件的安装

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

Apple - Cocoa Text Architecture Guide

翻译整理自&#xff1a;Cocoa Text Architecture Guide https://developer.apple.com/library/archive/documentation/TextFonts/Conceptual/CocoaTextArchitecture/Introduction/Introduction.html#//apple_ref/doc/uid/TP40009459 文章目录 一、关于 Cocoa 文本系统1、概览大…

MyBatis 的多级缓存机制是怎么样运作的?

引言&#xff1a;上周三&#xff0c;小 X 去面试一家中厂&#xff0c;其中面试官问到 MyBatis 的多级缓存机制是怎么样运行的&#xff1f;这个问题可以好好准备一下&#xff0c;很多人可能只会用 MyBatisPlus&#xff0c;简单的多表联查 SQL 语句可能都写不出来&#xff0c;更别…

MySql 各种 join

MySql 定义了很多join的方式&#xff0c;接下来我们用一个例子来讲解。 用到的表 本文用到了两个表s1,s2&#xff1a; 内外连接 测试 1 1 1.select * from s1 inner join s2 on(s1.id s2.id);&#xff1a; -------- | id | id | -------- | 3 | 3 | | 4 | 4 | --------2…

sqlite3模块的使用

1. SQLite数据库 SQLite是一个轻量级的, 基于磁盘的, 关系型的数据库管理系统(RDBMS). 它不需要一个独立的服务器进程或操作系统级别的配置. SQLite是D.Richard Hipp在2000年创建的, 并且由于其小巧, 快速, 可靠和易于使用的特性, 它在全球范围内得到了广泛的应用.以下是 SQLi…

最长回文子串问题详解

最长回文子串的问题描述&#xff1a;给出一个字符串S&#xff0c;求S的最长回文子串的长度。 针对这个问题&#xff0c;先看暴力解法&#xff1a;枚举子串的两个端点i和j&#xff0c;判断在[i,j]区间内的子串是否回文。从复杂度上来看&#xff0c;枚举端点需要&#xff0c;判断…

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

招联消费金融股份有限公司2024年5月18日面试经验分享 面试流程&#xff1a;共30多分钟&#xff0c;先3分钟自我介绍&#xff0c;然后细细介绍简历上面的论文和实习信息。问题1&#xff1a;扩散模型的noise schedule有什么研究。问题2&#xff1a;有哪些常见的数学分布问题3&…

数据结构:冒泡排序,选择排序,插入排序,希尔排序的实现分析

✨✨小新课堂开课了&#xff0c;欢迎欢迎~✨✨ &#x1f388;&#x1f388;养成好习惯&#xff0c;先赞后看哦~&#x1f388;&#x1f388; 所属专栏&#xff1a;数据结构与算法 小新的主页&#xff1a;编程版小新-CSDN博客 1.冒泡排序 1.1算法思想 冒泡排序的基本思想就是&a…

关于Java

关于Java Java语言关于并发JVM调优工具写在最后 Java语言 Java语言作为当下主流开发语言&#xff0c;其面向对象的开发模式以及一次编译多次运行&#xff0c;跨平台运行以及自动的垃圾回收机制可以说是给开发者节省了很大的时间用于逻辑功能的开发&#xff0c;那么在开发过程中…