我很困惑,我知道这个程序根本不正确,但是不知道要修复它。

 #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就可以了。简单得多。

10-06 14:29