24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 -1
答案 0 :(得分:1)
time
被声明为double
(displayresults
的参数),因此表达式time/3600
的结果也属于double
类型,但您正在尝试将此结果存储在hr
类型的t
(以及int
)中。
此外,对%
类型的参数进行除法的余数(double
)是没有意义的 - 这实际上是编译器发现的错误。
首先检查你是否真的得到double
的时间,如果没有,只需更改程序的其他部分和功能的签名......也许应该是
void displayresults(int time, double range, double maxheight, int rovertime)
如果时间确实为double
,则在使用整数除法(/
)和剩余(%
)之前应该使用整数,例如:
hr = int(time) / 3600;
t = int(time) % 3600;
或更好地对所有变量使用double
类型的以下操作:
double hr, t, min, sec;
hr = trunc(time / 3600);
t = fmod(time, 3600);
min = trunc(t / 60);
sec = fmod(t, 60);
printf("%.0lf (hrs) %.0lf (mins) %lf (seconds)\n", hr, min, sec);
%.0lf
中的说明printf
允许将double
打印为int
(不含分数)