格式“%f”期望类型为“ float*”的参数,但参数2具有'float类型(*)[(((((sizetype)))



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

 #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
     }

如果有人可以指导我一些错误,以便我可以改进,我会很感激

this:

scanf ("%f", &(Finish_times));

是错误的,它每次都会传递整个数组的地址。相反,您的意思是"将其扫描到i:TH元素中",因此您需要提供i:th元素的地址:

scanf ("%f", &Finish_times[i]);

另外,请注意,如果您要循环循环n数字以计算最小值和平均值,则通常不需要自己存储数字。只需保持最小的最小值和一个运行的总和,然后将后者除以n即可。简单得多。

首先,您应该使用动态内存分配(即使用malloc()calloc()函数(创建数组,否则您应该在编译时间(即编写代码时,确定阵列大小(定义数组元素。第二件事,在阅读阵列时,您应该使用类似的数组名称的下标操作员([](:

scanf ("%f", &Finish_times[i])

相关内容

最新更新