起因:
一看,好像有点复杂,边界条件有点多
第一次试着提交了一下
#include <iostream>
using namespace std;
int main()
{
int distance, velocity;
cin >> distance >> velocity;
double time = distance * 1.0 / velocity;
int time1 = time;
if (time - time1 != 0)
time1 += 11;
else
time1 += 10;
int total_time = time1 / 60;
time1 %= 60;
printf("0%d:%d", 7-total_time, 60-time1);
return 0;
}
不出意外,果然有问题
想了下,边界条件应该就是如果速度太慢,可能会导致前一天出发,也就是说别人在睡觉的时候,你已经出发去上学了....................
然后修改了一下
#include <iostream>
using namespace std;
int main()
{
int distance, velocity;
cin >> distance >> velocity;
double time = distance * 1.0 / velocity;
int time1 = time;
if (time - time1 != 0)
time1 += 11;
else
time1 += 10;
int total_time = time1 / 60;
time1 %= 60;
if (7 - total_time < 0)
total_time = 7 - total_time + 24;
else
total_time = 7 - total_time;
printf("%02d:%d", total_time, 60 - time1);
return 0;
}
依然还有两个测试点没有过
于是我就开始疯狂的找边界条件.....................................
找了半天没找到,正当我万念俱灰准备打开题解的时候,想了想,要不再读一遍题目吧,于是我再次读了一遍题目,瞄了一眼代码
再看了看我的代码
enmmmmmm,是不是分钟前的格式不对呢?我试着改了改
#include <iostream>
using namespace std;
int main()
{
int distance, velocity;
cin >> distance >> velocity;
double time = distance * 1.0 / velocity;
int time1 = time;
if (time - time1 != 0)
time1 += 11;
else
time1 += 10;
int total_time = time1 / 60;
time1 %= 60;
if (7 - total_time < 0)
total_time = 7 - total_time + 24;
else
total_time = 7 - total_time;
printf("%02d:%02d", total_time, 60 - time1);
return 0;
}
好家伙!还真是格式的问题
看来以后输出有问题首先应该注意一下格式是不是有问题,不然忙活半天还是在原地踏步
附上一个带注释的版本
#include <iostream> // 引入输入输出流头文件
using namespace std; // 使用标准命名空间
int main()
{
int distance, velocity; // 定义变量 distance 和 velocity,分别表示距离和速度
cin >> distance >> velocity; // 从输入流中读取距离和速度的值
double time = distance * 1.0 / velocity; // 计算时间,距离除以速度
int time1 = time; // 将时间赋值给整型变量 time1
if (time - time1 != 0) // 如果 time 和 time1 不相等
time1 += 11; // 否则 time1 加 11(早点出发)
else
time1 += 10; // 否则 time1 加 10
int total_time = time1 / 60; // 计算总时间,取整型商
time1 %= 60; // 取模得到 time1 的小时数
if (7 - total_time < 0) // 如果 total_time 大于 7
total_time = 7 - total_time + 24; // 计算 total_time 的小时数
else
total_time = 7 - total_time; // 否则计算 total_time 的小时数
printf("%02d:%02d", total_time, 60 - time1); // 输出结果,注意格式要求
return 0; // 函数返回 0
}
总结:
1.输出不对,先看格式
2.如果要格式化输出时间的话,应该使用
printf("%02d:%02d", hour, minute);
这样的格式来输出,当使用 %02d
格式化输出一个整数时,%
表示这是一个格式控制字符, 2 表示输出的整数应该占据 2 个字符的位置,不足的地方要用空格填充,d
表示输出一个整数值,02d
表示你希望输出一个两位数的整数,输出不足两位时前面补 0
同理,如果希望任意位数的数字时能够输出不足指定位数就补0,可以这样输出
printf("%0nd:%0nd", number1, number2);
n代表你想输出的位数
例如输出一个三位数,不足则补零
如果您发现我文章中的错误,请您及时联系我,我看到后会及时改正,谢谢您!