80分求大神指正

P1425 小鱼的游泳时间

这里推荐把小时转换成分钟再换回小时计算,具体代码: ```cpp #include <iostream> using namespace std; int a, b, c, d, m1, m2, m3, h, m; int main() { cin >> a >> b >> c >> d; m1 = a * 60 + b; //将起始时间的小时转成分钟 m2 = c * 60 + d; //将结束时间的小时转成分钟 m3 = m2 - m1; //计算时间 while (1) { if (m3 >= 60) //判断结果给出的分钟数是否满足进位为小时 { m3 = m3 - 60; h++; //将结果中小时+1,同时将对应的分钟数减少60 } else //分钟数小于60,不能进位成小时的时候,跳出循环 { m = m3; break; } } cout << h << " " << m << endl; //输出最后的答案 return 0; } ```
by 权御天下 @ 2017-09-24 21:38:32


至于你的代码,问题在于计算分钟的时候如果数据的d>b的话,容易导致最终输出的分钟>60 最简单例子: 输入:1 14 2 16 正解:1 2 你的答案:0 62 如果不改进方法的话,建议在计算分钟后加if判断结果分钟是否大于60而决定是否进位小时
by 权御天下 @ 2017-09-24 21:47:21


楼上麻烦了。。。。 ```cpp #include<cstdio> using namespace std; int main() { int a, b, c, d;scanf("%d%d%d%d",&a,&b,&c,&d); a = (c - a) * 60 + d - b; printf("%d %d", a/60, a%60); return 0; } ```
by 青衫白叙 @ 2017-09-25 21:38:55


直接输出不就好了? ```cpp #include<iostream> #include<cstdio> #include<cstring> using namespace std; int main() { int a,b,c,d; cin>>a>>b>>c>>d; if(d-b<0)cout<<c-a-1<<" "<<d-b+60; else cout<<c-a<<" "<<d-b; return 0; } ```
by 毛毛39015148 @ 2017-09-29 19:24:39


可能没有退位,例如10 15 20 0
by 01190220csl @ 2017-10-01 15:43:07


|