要求
- 给定被测函数前后两次获得的时钟打点数,给出被测函数运行的时间
样例
- 输入样例: 123 4577973
- 输出样例: 12:42:59
思路
- n表示运行的时间,n为(b-a)/100,因为常数CLK_TCK为100
- 题目要求不足1秒的时间四舍五入到秒,所以先给(b-a)加上50,这样如果(b-a)/100的小数位大于等于0.5则会进位,小于等于0.5则会舍去,所以n = ((b – a) + 50) / 100
- 因为要把秒数n化为时:分:秒的格式,一小时等于3600秒,所以hour = n / 3600,此时将n % 3600即为剩下的分钟和秒数;因为一分钟等于60秒,所以minute = n / 60,则n % 60剩下的就是秒
- 最后用printf的%02d格式自动为不足2位的整数在前面补上0,保证能够按照格式输出
程序
#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; }