2017-04-26 79 views
0

即時通訊如此混亂,我知道這個程序根本不對,知道熱修復它..格式'%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 
    } 

如果有人可以請指導我一點上有些失誤,所以我可以改進,我將感謝

+5

'&(Finish_times)' - >'&Finish_times [i]' – BLUEPIXY

+2

'Finish_times [i] BLUEPIXY

+0

'1000' - >'1000.','3600' - >'3600.' – BLUEPIXY

回答

0

首先,你應該使用動態內存中創建數組分配,即使用malloc()calloc()函數或者您應該在編譯時定義數組元素,即在編寫代碼時,決定數組大小。 Second首先,在閱讀到一個數組,你應該使用下標運算符([])用數組名這樣的:

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

此:

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

是錯誤的,它通過各整個數組的地址時間。相反,你的意思是「掃描到這一點的i:個元素」,所以你需要提供的地址到第i個元素:

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

而且,請注意,如果你要循環通過n數字來計算最小值和平均值,您通常不需要自己存儲數字。只要保持跑分和跑動總和,並在完成後將後者除以n。簡單得多。

相關問題