如何以相反的顺序访问数组中的元素?

时间:2015-04-01 19:53:54

标签: c++ arrays for-loop multidimensional-array decrement

所以我不明白我做错了什么(语法错误,嵌套循环,或者只是愚蠢的错误?)。我的编译器让我按任意键继续。 。 。你能指出我正确的方向吗?

#include "stdafx.h"
#include <iostream>

using namespace std;

int main()
{   
    const int MAX_ROWS = 2;
    const int MAX_COLS = 4;

    int BigSmall[MAX_ROWS][MAX_COLS] = 
    {
        {1,3,5,7},
        {2,4,6,8}
    };

    for( int Row = 2; Row > MAX_ROWS; Row--)
    {
        for( int Column = 4; Column > MAX_COLS; Column--)
        {
            cout << "Integer[" << Row << "][" << Column << "] = " << BigSmall[Row][Column] << endl;
        }   
    }
        return 0;
}

3 个答案:

答案 0 :(得分:2)

for( int Row = 2; Row > MAX_ROWS; Row--)

RowMAX_ROWS都等于你想要的Row > 0

列循环

也是如此

答案 1 :(得分:1)

  

语法错误,嵌套循环,还是只是愚蠢的错误?

后者:您在4点开始内循环,并在Column 4之后继续。这与永不启动它是一样的。外环有同样的问题。

您应该在SIZE-1(即MAX_ROWS - 1MAX_COLS - 1)开始循环,并在您高于或零时继续:

for( int Row = MAX_ROWS-1; Row >= 0 ; Row--) {
    for( int Column = MAX_COLS - 1; Column >= 0 ; Column--) {
        cout << "Integer[" << Row << "][" << Column << "] = " << BigSmall[Row][Column] << endl;
    }   
}

Demo.

答案 2 :(得分:0)

你的意思是

for( int Row = MAX_ROWS - 1; Row >=0 ; Row--)
{
    for( int Column = MAX_COLS - 1; Column >= 0 ; Column--)
    {
        cout << "Integer[" << Row << "][" << Column << "] = " << BigSmall[Row][Column] << endl;
    }   
}