2017-02-27 39 views
-2

我有這樣的代碼:問題與C程序

#include <stdio.h> 
#include<conio.h> 

main(){ 
    float promAnual=0.0; 
    int numMeses, numToneladas,i, suma = 0, mesTon = 0; 
    float toneladas[12]; 

    for(i = 1; i < 13; i++){ 
     printf("Ingrese la cantidad de toneladas del mes #%d->", i); 
     scanf("%f", &toneladas[i]); 
    } 

    for(i = 1; i < 13; i++){ 
     suma = suma + toneladas [i]; 
    } 
    promAnual = suma/12.0; 

    for(i = 1; i < 13; i++){ 
     if(toneladas[i]>promAnual){ 
      numMeses = numMeses + 1; 
     } 
    } 
    numToneladas = 0; 
    mesTon = 0; 

    for(i = 1; i < 13; i++){ 
     if(toneladas[i]>toneladas[i+1]){ 
      mesTon = i; 
      numToneladas = toneladas[i]; 
     } 
    } 

    printf("El promedio anual es: %0.2f, %d mes(es) tuvieron mayor cosecha que el promedio anual, y el mayor numero de toneladas se produjo en el mes #%d con %0.2f", promAnual,numMeses,mesTon, numToneladas); 
    } 

的問題是,在最後的printf的最後2個變量都出現了錯誤的價值觀,我知道爲什麼,但我不知道如何解決它,這是因爲最後的「for」是分配最後一個「我」的值,但我不知道如何解決它。

+1

你的編譯器警告你什麼?也許你應該問一個關於*的問題,首先! – Sebivor

+0

問題是錯誤的。它應該包含以下細節:a)代碼應該做什麼,b)**期望的輸出是什麼**,c)**實際輸出是什麼**。這些信息都不在您的問題中。 –

+0

編譯所有警告和調試信息(例如,如果使用[GCC](http://gcc.gnu.org/)...),則使用'gcc -Wall -g'。改善你的(錯誤的)代碼以獲得沒有警告。然後**使用調試器**('gdb') –

回答

0

您最好檢查「for」循環的結束條件,數組toneladas有12個存儲區,從0到11,但您將其設置爲1到12,可能會導致您的問題。 請嘗試設置「for(i = 0; i < 12; i ++)」,然後再次運行代碼。