取整问题吧
by AuCloud @ 2023-08-30 08:07:08
在给定的代码中,问题出现在以下这行代码:
```cpp
int minute = have_time - hour * 60 ;
```
这行代码计算分钟数时,应该是从剩余时间中减去已经计算过的小时数的分钟数。但是在这个代码中,`have_time`已经减去了`need_time`,即已经减去了需要的时间。因此,这里应该是减去`hour * 60`的分钟数之后再减去1分钟,即:
```cpp
int minute = have_time - (hour * 60 + 1);
```
这样就可以正确地计算剩余的分钟数了。
by Nancy_Cherry @ 2023-08-30 08:56:43
求关
by Nancy_Cherry @ 2023-08-30 08:57:10
@[Nancy_Cherry](/user/911439) 下面写了,-=1就90wa , /dk
by xzc_yhxr @ 2023-08-30 09:48:48
@[xzc_yhxr](/user/1072970) az,尴尬了
我把我的代码给你看看
```cpp
#include<bits/stdc++.h>
using namespace std;
int main() {
int x,y,h = 7,m = 50;
cin >> x >> y;
m = m - ceil((x * 1.0 / y));
while(m < 0) {
h--;
m += 60;
}
while(h < 0) h += 24;
if(h < 10) cout << "0";
cout << h << ":";
if(m < 10) cout << "0";
cout << m;
return 0;
}
```
by Nancy_Cherry @ 2023-08-30 10:25:33
改好了,你看看
```cpp
#include<bits/stdc++.h>
using namespace std;
int main() {
int s, v;
scanf("%d %d", &s, &v);
int need_time = ceil(static_cast<double>(s) / v) + 10;
int have_time = 80 * 60;
if (need_time > have_time) {
have_time += 24 * 60;
}
have_time -= need_time;
int hour = have_time / 60;
int minute = have_time % 60;
hour %= 24;
hour < 10 ? printf("%c%d", '0', hour) : printf("%d", hour);
cout << ":";
minute < 10 ? printf("%c%d", '0', minute) : printf("%d", minute);
return 0;
}
```
对于表达式 s / v,s 和 v 都是整数类型,因此整数除法会导致结果被截断,得不到准确的商值。为了解决这个问题,我将 s 强制转换为 double 类型,使用浮点数除法来计算准确的商值。
然后最好不使用 printf 和 cout 两种不同的输出方式,可能导致输出结果混乱。
~~改都改了给个关注不过分吧~~
by Nancy_Cherry @ 2023-08-30 10:46:27
@[Nancy_Cherry](/user/911439) 关了
by xzc_yhxr @ 2023-08-30 21:13:21