我的老师给了我们这个家庭作业,关于if-else语句,我不知道为什么,但我的代码只通过了5个测试用例中的3个,你能帮我解决这个问题吗?非常感谢你,希望你有一个伟大的一天!
问题:
根据取车时间计算停车费。摩托车停车场的规定如下:
- 不要过夜停车。
- 拿起车辆之前18:00,票价是5000越南盾/车辆.
- 拿起车辆从18:00起,票价是8000越南盾/车辆。写一个程序,以HH:MM格式输入进入和退出时间。如果进入时间大于退出时间(输入时间错误),则输出值-1。如果进入时间等于退出时间,则输出0。否则,按上述公式计算。
INPUT
12:00 13:35
OUTPUT
5000
INPUT
12:00 11:35
OUTPUT
-1
这是我的代码,我试着修复它,但它没有工作
#include <stdio.h>
int main()
{ int hour1, min1;
int hour2, min2;
scanf("%i%*c%i", &hour1, &min1);
scanf("%i%*c%i", &hour2, &min2);
if (hour1<24 && hour2<24 && min1<59 && min2<59){
if (hour1 == hour2 && min1 == min2)
printf("0");
if (hour1>hour2)
printf("-1");
else if (hour1 == hour2 && min1>min2)
printf("-1");
else {
if (hour2<18)
printf("5000");
else if (hour2>18)
printf("8000");
}
}
return 0;
}
2条答案
按热度按时间9udxz4iz1#
一些小的事情来改善这一点,为什么:
a < b
代替a<b
。if (scanf(...) != 2) { do error handling }
。如果您必须找到错误,这也有助于调试。例如,你可以找到标准函数here的返回值。if()
中检入的越少,就越容易查看是否处理了所有状态。if()
检查多个状态,如果你不使用最后的else()
,要非常小心。即使您非常确定已经得到了大多数可能的情况,else()
仍然可以用作错误处理。这就是你上面例子中的情况。txu3uszq2#
当超时时间等于18时,您错过了检查。我已经添加了一些检查,并改进了一点,阅读代码注解。