我正在尝试获取用户输入,该输入存储在数组(eightBit [])中,然后将其添加到2D数组(板)。用户应该输入8个数字,例如: 字节1:1 字节2:2 等等... 输出应该看起来像:
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;
}
答案 0 :(得分:2)
这是因为您的外部循环i
基本上覆盖了2D数组中的每个元素。
解决方案是完全删除外部循环,如下所示:
int i = 0;
for(int j=0; j<2; j++) {
for(int k=0; k<4; k++) {
board[j][k] = eightBit[i++];
}
}
您的代码段中也包含括号不匹配。
答案 1 :(得分:0)
这很自然。在第二次,当我最后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;
}
}