我很困惑,我知道这个程序根本不正确,但是不知道要修复它。
#include <stdio.h>
int main ()
{
int distance;
float avg_speed;
printf ("Enter the race distance (m): ");
scanf ("%d", &distance);
int Num_lanes;
printf ("Enter number of lanes in use:");
scanf ("%d", &Num_lanes);
float Finish_times[Num_lanes];
int i;
for (i = 0; i < Num_lanes; i++)
{
printf ("Enter finish time for lane %d (sec): ", i + 1);
scanf ("%f", &(Finish_times));
}
int Worst_time = 0;
for (i = 0; i < Num_lanes; i++)
{
if (Finish_times[i] < Worst_time)
{
Worst_time = Finish_times[i];
}
}
avg_speed = (distance / 1000) / (Worst_time / 3600);
printf ("Lane wins in %d seconds, with an average speed of %f km/h",
Worst_time, avg_speed);
return 0
}
如果有人可以指导我一些错误,以便我可以改善,我将很感激
最佳答案
这个:
scanf ("%f", &(Finish_times));
是错误的,它每次都传递整个数组的地址。相反,您的意思是“将其扫描到
i
:th元素中”,因此您需要提供第i:th个元素的地址:scanf ("%f", &Finish_times[i]);
另外,请注意,如果要遍历
n
个数字以计算最小值和平均值,通常不需要自己存储数字。只需保持运行中的最小值和运行中的总和,然后将其除以n
就可以了。简单得多。