2017-02-27 113 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 ++)”,然后再次运行代码。