PAT乙级(1026 程序运行时间)C语言超详细解析
1026 程序运行时间
输入格式:
输出格式:
在一行中输出被测函数运行的时间。运行时间必须按照 hh:mm:ss(即2位的 时:分:秒)格式输出;不足 1 秒的时间四舍五入到秒。
输入样例:
123 4577973
输出样例:
12:42:59
代码长度限制 16 KB
时间限制 200 ms
内存限制 64 MB
栈限制 8192 KB
代码示例
#include <stdio.h>
#include <math.h>
#include <string.h>
#include <stdlib.h>
#include <stdbool.h>
#include <time.h>
int main() {
// 定义两个整型变量 c1 和 c2,用于存储输入的两个时钟打点数
int c1, c2;
// 定义一个常量 c 为 100,表示时钟每秒的打点数
int c = 100;
// 定义整型变量 h、m、s、t,分别用于存储小时、分钟、秒和总秒数
int h, m, s, t;
// 从标准输入读取两个整数,分别赋值给 c1 和 c2
scanf("%d %d", &c1, &c2);
// 判断 c2 与 c1 的差值除以 c 的余数是否大于等于 50
// 这是为了进行四舍五入操作,因为时钟打点可能存在精度问题
if ((c2 - c1) % c >= 50) {
// 如果余数大于等于 50,则将总秒数 t 向上取整
t = (c2 - c1) / c + 1;
} else {
// 如果余数小于 50,则直接将总秒数 t 向下取整
t = (c2 - c1) / c;
}
// 计算小时数,将总秒数 t 除以 3600(一小时有 3600 秒)
h = t / 3600;
// 计算分钟数,先取总秒数 t 对 3600 取余,得到剩余的秒数,再将其除以 60(一分钟有 60 秒)
m = t % 3600 / 60;
// 计算秒数,取总秒数 t 对 3600 取余,再对 60 取余
s = t % 3600 % 60;
// 按照 "HH:MM:SS" 的格式输出时间,使用 %02d 确保输出的小时、分钟、秒数都是两位,不足两位时前面补 0
printf("%02d:%02d:%02d", h, m, s);
// 程序正常结束,返回 0
return 0;
}