monthly->maxTemperature = yearData[i].high;
monthly->minTemperature = yearData[i].low;

我似乎不明白迭代的逻辑,也不知道如何访问数据数组中的适当元素来获取每个月的适当数据。。。。不会损坏数据。谢谢!

最佳答案

你在正确的轨道上:

void stats(int mth, const struct Data yearData[], int size, struct Monthly* monthStats)
{
    // These are used to calc averages
    int highSum = 0;
    int lowSum = 0;
    int days = 0;

    // Initialize data
    monthly->maxTemperature = INT_MIN;
    monthly->minTemperature = INT_MAX;
    monthly->totalPrecip = 0;

    for (int i = 0; i < size; ++i) {
        // Only use data from given month
        if (yearData[i].month == mth) {
            days += 1;
            if (yearData[i].high > monthly->maxTemperature) monthly->maxTemperature = yearData[i].high;
            if (yearData[i].low < monthly->minTemperature) monthly->minTemperature = yearData[i].low;
            highSum += yearData[i].high;
            lowSum + yearData[i].low;
            monthly->totalPrecip += yearData[i].precip;
        }
     }

     if (0 != days) {
         monthly->avgHigh = highSum / days;
         monthly->avgLow = lowSum / days;
     }
}

08-19 11:33