贴个原题
本题要求根据火车的出发时间和达到时间,编写程序计算整个旅途所用的时间。
输入格式:
输入在一行中给出2个4位正整数,其间以空格分隔,分别表示火车的出发时间和到达时间。每个时间的格式为2位小时数(00-23)和2位分钟数(00-59),假设出发和到达在同一天内。
输出格式:
在一行输出该旅途所用的时间,格式为“hh:mm”,其中hh为2位小时数、mm为2位分钟数。
输入样例:
1201 1530
结尾无空行
复制代码
输出样例:
03:29
复制代码
这里想说的是如果我们最后得到的小时数字是3,那么就只会输出3,但题目要求输出03甚至00应该怎么办
我们知道在输出的时候 printf(“%10d”) 意味这一共要输出10个字符,空的地方用空格来代替
这个时候我们在这个“10”前面加一个“0”,就会变成printf(“%010d”)
这个时候就实现了
必然会输出10位字符,但前面都会用0来代替
int main() {
int a;
int b;
scanf("%d", &a);
scanf("%d", &b);
// while ((scanf("%d%d", &a, &b)) != EOF) {
int x1, x2;
x1 = a / 100;
x2 = b / 100;
a = a - x1 * 100;
b = b - x2 * 100;
int i;
int j;
i = a + x1 * 60;
j = b + x2 * 60;
int sum = j - i;
//得到分钟数 开始进行进制的转换
int hour = sum / 60;
int minute = sum - 60 * hour;
// if (hour >= 10 && minute >= 10)
// printf("%d:%d", hour, minute);
// if (hour < 10 && minute >= 10)
// printf("0%d:%d", hour, minute);
// if (hour < 10 && minute < 10)
// printf("0%d:0%d", hour, minute);
// if (hour >= 10 && minute < 10)
// printf("%d:0%d", hour, minute);
// }
printf("%02d:%02d", hour, minute);
return 0;
}
后面注释掉的地方是我一开始的愚蠢做法,之后的02改进就可以直接代替上面的所有if语句