-2

我正在尝试获取存储在数组(eightBit [])中的用户输入,然后将其添加到二维数组(板)中。用户应该输入 8 个数字,例如:Byte 1: 1 Byte 2: 2 etc... 并且输出应该如下所示:

1 2 3 4
5 6 7 8

然而这是我得到的输出:

8 8 8 8
8 8 8 8

知道为什么它只重复输入的最后一个编号吗?我的部分代码如下,任何帮助将不胜感激。

cout << "Enter a pattern of eight bits:" << endl;
            for(i = 0; i < 8; i++){
                cout << "Byte " << i+1 << ": ";
                cin >> eightBit[i];
            }

int board[2][4];

            for(i = 0; i<8; i++){
                for(int j=0; j<2; j++){
                for(int k=0; k<4; k++) {
                    board[j][k] = eightBit[i];

                }
            }

            for(int j=0; j<2; j++)
            {
                for(int k=0; k<4; k++) 
                {
                    cout << board[j][k]  << "  ";
                }
    cout << endl;
}
4

2 回答 2

2

那是因为您的外部循环i基本上覆盖了二维数组中的每个元素。

一个解决方案是完全放弃该外循环,如下所示:

int i = 0;
    for(int j=0; j<2; j++) {
        for(int k=0; k<4; k++) {
            board[j][k] = eightBit[i++];
        }
    }

您的代码段中也有括号不匹配

于 2013-03-24T22:17:34.420 回答
0

这很自然。在第二个中,当 i 最后达到 8 时,棋盘就会被当前 i (i=8) 填满。试试这个,下次更小心你的代码:)。

#include <iostream>

using namespace std;
int eightBit[2][4];

int main()
{
    cout << "Enter a pattern of eight bits:" << endl;

        for(int i = 0; i <2; i++){
            for (int j=0 ; j<4 ; ++j)  {
                cout << "Byte " << (j+1)+4*i << ": ";    //4 = # of columns,i=row,j=column.
                cin >> eightBit[i][j];
            }
        }


    int board[2][4];


    for(int i = 0; i <2; i++){
        for (int j=0 ; j<4 ; ++j)  {
            board[i][j] = eightBit[i][j];

        }
    }
    for(int i = 0; i <2; i++){
        for (int j=0 ; j<4 ; ++j)  {

            cout << board[i][j]  << "  ";
        }
        cout << endl;
   }

}
于 2013-03-24T22:13:31.793 回答