C++ 得到错误的最低值,如果我分开最低和最高(for)循环,那么我得到正确的最低值

C++ 得到错误的最低值,如果我分开最低和最高(for)循环,那么我得到正确的最低值,c++,loops,C++,Loops,在第三个for循环中,对最小元素和最大元素进行了比较,我得到了最小元素的错误值。但为什么我不明白。 如果我把第三个循环分成两个for循环,一个用于最低元素,一个用于最高元素,那么我得到了正确的答案 #include <iostream> using namespace std; int main() { float rainfall[12]; float total = 0.0; float avg = 0.0; float high, lowes

在第三个for循环中,对最小元素和最大元素进行了比较,我得到了最小元素的错误值。但为什么我不明白。 如果我把第三个循环分成两个for循环,一个用于最低元素,一个用于最高元素,那么我得到了正确的答案

#include <iostream>

using namespace std;

int main()
{
    float rainfall[12];
    float total = 0.0;
    float avg = 0.0;
    float high, lowest;

    for (int i = 0; i < 12; i++) {
        cin >> rainfall[i];
    }

    high = rainfall[0];
    lowest = rainfall[0];

    for (int i = 0; i < 12; i++) {
        total = total + rainfall[i];
        avg = total / 12;
    }

    for (int i = 0; i < 12; i++) {

        if (rainfall[i + 1] < lowest) {
            lowest = rainfall[i + 1];
        }

        if (rainfall[i + 1] > high) {
            high = rainfall[i + 1];
        }
    }
    cout.setf(ios::fixed);
    cout.setf(ios::showpoint);
    cout.precision(2);
    cout << total << endl;
    cout << avg << endl;
    cout << high << endl;
    cout << lowest << endl;
    return 0;
}
#包括
使用名称空间std;
int main()
{
浮雨[12];
浮动总额=0.0;
浮动平均值=0.0;
浮高,浮低;
对于(int i=0;i<12;i++){
cin>>降雨[i];
}
高=降雨量[0];
最低值=降雨量[0];
对于(int i=0;i<12;i++){
总量=总量+降雨量[i];
平均值=总数/12;
}
对于(int i=0;i<12;i++){
if(降雨量[i+1]<最低值){
最低值=降雨量[i+1];
}
如果(降雨量[i+1]>高){
高=降雨量[i+1];
}
}
cout.setf(ios::fixed);
cout.setf(ios::showpoint);
计算精度(2);
cout您的代码有未定义的行为,因为您正在访问
rainment[i+1]
for
i
=
11

您应该从
i
=
1
开始,并将其保留为
rainment[i]


注:

  • 在您第一次需要变量的地方声明变量
  • 应仅执行一次
    avg
    的计算

完成。如果您将代码格式化得很整齐,那么应该更容易遵循逻辑,也更容易让其他人帮助解决您的问题。