您的位置:首页 > 其它

B1026 时间格式 四舍五入

2020-03-28 20:02 162 查看

题目描述
要获得一个 C 语言程序的运行时间,常用的方法是调用头文件 time.h,其中提供了 clock() 函数,可以捕捉从程序开始运行到 clock() 被调用时所耗费的时间。这个时间单位是 clock tick,即“时钟打点”。同时还有一个常数 CLK_TCK,给出了机器时钟每秒所走的时钟打点数。于是为了获得一个函数 f 的运行时间,我们只要在调用 f 之前先调用 clock(),获得一个时钟打点数 C1;在 f 执行完成后再调用 clock(),获得另一个时钟打点数 C2;两次获得的时钟打点数之差 (C2-C1) 就是 f 运行所消耗的时钟打点数,再除以常数 CLK_TCK,就得到了以秒为单位的运行时间。
这里不妨简单假设常数 CLK_TCK 为 100。现给定被测函数前后两次获得的时钟打点数,请你给出被测函数运行的时间。
输入格式:
输入在一行中顺序给出 2 个整数 C1 和 C2。注意两次获得的时钟打点数肯定不相同,即 C1 < C2,并且取值在 [0,107]。
输出格式:
在一行中输出被测函数运行的时间。运行时间必须按照 hh:mm:ss(即2位的 时:分:秒)格式输出;不足 1 秒的时间四舍五入到秒。
输入样例:
123 4577973
输出样例:
12:42:59
AC代码

#include<cstdio>
int main(){
int c1, c2;
int h, m, s = 0;
scanf("%d%d", &c1, &c2); //&两个都要带上
int t = (c2 - c1 + 50)/100;
h = t / 3600;
m = (t - h * 3600)/60;
s = (t - h * 3600 - m * 60);
printf("%02d:%02d:%02d", h, m, s);
return 0;
}

问题以及知识点
0.时间的输出 用printf的%02d格式自动为不足2位的整数在前面补上0
以下总结三个实用的printf特殊格式

%md 使不足m位的int型变量以m位右对齐输出 不足的会以空格补齐,超过m位的不变
%0md 与%md功能类似, 只不过用0补齐(此题)
%.mf 使得浮点数保留m位输出

1.四舍五入的问题
题目要求不足一秒的要四舍五入,但直接利用除法 / 时,不足一秒是直接约去了的。因此通过先在变量基础上加上0.5(即最初变量c2 - c1 + 500)的方法。

2.习惯使用cin count进行输入输出 书写起来方便很多

柳神代码

#include <iostream>
using namespace std;
int main() {
int a, b;
cin >> a >> b;
int n = ((b - a) + 50) / 100;
int hour = n / 3600;
n = n % 3600;
int minute = n / 60, second = n % 60;
printf("%02d:%02d:%02d", hour, minute, second);
return 0;
}
  • 点赞
  • 收藏
  • 分享
  • 文章举报
Jack Pearson 发布了9 篇原创文章 · 获赞 0 · 访问量 265 私信 关注
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: