我很困惑,我知道这个程序根本不正确,但不知道要修复它。
#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])