#include <stdio.h>
int main(void)
{
int days, hours, mins;
float a, b, c, total, temp, tempA, tempB;
a = 3.56;
b = 12.50;
c = 9.23;
total = a+b+c;
days = total / 24;
temp = total/24 - days;
hours = temp * 24;
tempA = temp*24 - hours;
mins = tempA*60;
while (hours >= 24)
{
hours= hours-24;
days +=1;
}
while ( mins >= 60)
{
mins=mins-60;
hours +=1;
}
printf("days:%d\n", days);
printf("hours:%d\n", hours);
printf("mins:%d\n", mins);
return 0;
}
我想将十进制小时转换为实时,我可以做得很好,但如果小时数超过24小时,如果分钟超过60分钟,我想增加几小时。 while循环确实减去并且它确实打印出新值,但小时/天不会复杂化。 这是1天1小时77分钟 我想让它读1天2小时17分钟 但我得到1天1小时17分钟。
答案 0 :(得分:2)
使用模数运算符可以让您的生活更轻松:它将为分组的剩余部分提供。
int total;
/* a=; b=; c=; assignments */
total = a+b+c;
mins = total % 60;
total /= 60;
hours = total % 24;
days = total / 24;
答案 1 :(得分:1)
以下是您尝试执行的更简单的实现:
void TimeFix(int &days, int &hours, int &mins)
{
hours += mins/60;
mins %= 60;
days += hours/24;
hours %= 24;
}
答案 2 :(得分:0)
运行你的程序我得到了:
days:1
hours:1
mins:17
这就是我所期待的,因为总数应该是25.29。
答案 3 :(得分:0)
它工作正常,你的数学只是一点点。 (= (+ 3.56 12.50 9.23) 25.29)
,而不是26.29。
答案 4 :(得分:0)
您可以使用除法来代替while循环:
days += hours / 24
hours %= 24
另外,在你的小时工作之前做几分钟到几小时的工作。