为什么我的第一个值无法正确打印,但下面的每个值都正确打印

问题描述 投票:-1回答:1

我的目标是获得6个不同湖泊的最低温度值,我能够获得除第一个值(湖泊更高)之外的所有值,我如何获得该值以进行打印?

我尝试将最冷temps的初始值设置为数组的第一行,以便将其与大于0的值进行比较(文件中的值不会小于0)

这是我用于这个问题的文件数据,它的格式是年/日/然后每个湖为了https://drive.google.com/file/d/1ADaYffIlMjsZbGMA-85adDg2uXLydshY/view?usp=sharing

#include <stdio.h>
#include <stdlib.h>

int main(void)
{
/* variables */
    double alltemps[365][8], coldest[6], coldestday[6], coldestmonth[6];
    int i, j;

/* j = rows, i = columns */

/* open file and assign values to the array */
    FILE*WaterTemperatureData;

    WaterTemperatureData=fopen("WaterTemperatureData.txt", "r");

    for(j=0;j<365;++j)
    {
        for(i=0;i<8;++i)
        {
            fscanf(WaterTemperatureData, "%lf", &alltemps[j][i]);
        }

    }

/* determine coldest temps for each lake */
for(i=2; i<8; ++i)
    {    
        for(j=0; j<365; ++j)
        {
            coldest[i-1] = alltemps[0][i];

            if (alltemps[j][i] < coldest[i-2])
            {
                coldest[i-2] = alltemps[j][i];
                coldestday[i-2] = alltemps[j][1];
            }
        }
    }

/* output statements */
    printf("Coldest Temperature of Lake Superior is %2.2lf on %0.0lf\n", coldest[0],coldestday[0]);
    printf("Coldest Temperature of Lake Michigan is %2.2lf on %0.0lf\n", coldest [1],coldestday[1]);
    printf("Coldest Temperature of Lake Huron is %2.2lf on %0.0lf\n", coldest [2],coldestday[2]);
    printf("Coldest Temperature of Lake Erie is %2.2lf on %0.0lf\n", coldest [3],coldestday[3]);
    printf("Coldest Temperature of Lake Ontario is %2.2lf on %0.0lf\n", coldest [4],coldestday[4]);
    printf("Coldest Temperature of Lake St. Clair is %2.2lf on %0.0lf\n", coldest [5],coldestday[5]);    

return(0);
}

对于湖泊,我希望在第72天获得1.33而不是在第0天获得0

c multidimensional-array
1个回答
0
投票

为什么我的第一个值无法正确打印(?)

coldest[i-2]在被分配之前使用 - >未定义的行为(UB)。

for(i=2; i<8; ++i)
  // coldest[2-2] never  assigned
  if (alltemps[j][i] < coldest[i-2])
© www.soinside.com 2019 - 2024. All rights reserved.