0

我想将 500x8 的一行(每个团队迭代一个)复制matrix到一个名为actual_row. 这是我尝试过的。

int matrix[500][8]; // this has been already filled by int's
int actual_row[8];
for(int i = 0; i < 500; i++) {
     for(int j = 0; j < 8; j++) {
         actual_row[j] = matrix[i][j];
         printf("The row is: ");
         for(int q = 0; q < 8; q++) {
                 printf(" %d ",actual_row[q]);
         // do other stuff
         }
      }
printf("\n");
}

这不是打印行,它有时会打印 0 和 1,所以我做错了。
提前致谢。

4

3 回答 3

2

actual_row在完全填充之前不要打印:

 for(int j = 0; j < 8; j++) {
     actual_row[j] = matrix[i][j];
 }

 printf("The row is: ");
 for(int q = 0; q < 8; q++) {
      printf(" %d ",actual_row[q]);
      ...
 }
于 2013-07-18T14:40:29.433 回答
1

您的逻辑有点偏离(不需要第三个嵌套循环)。您需要将该行复制到actual_row(您所做的),并在同一个循环中打印内容:

 printf("The row is: ");
 for(int j = 0; j < 8; j++) {
     actual_row[j] = matrix[i][j];         
     printf(" %d ",actual_row[j]);
     // do other stuff
 }
于 2013-07-18T14:40:11.300 回答
1

你的逻辑有点不对劲。您需要将该行复制到actual_row,然后打印内容。此外,为什么在将矩阵行复制到时不打印内容actual_row

printf("The row is: ");
for(int j = 0; j < 8; j++) {
    actual_row[j] = matrix[i][j];         
    printf(" %d ",actual_row[j]);
    // do other stuff
}

所以你的代码片段应该是这样的:

int matrix[500][8]; // this has been already filled by int's
int actual_row[8];
for(int i = 0; i < 500; i++) {
    printf("The row is: ");
    for(int j = 0; j < 8; j++) {
        actual_row[j] = matrix[i][j];         
        printf(" %d ",actual_row[j]);
       // do other stuff
    }
    // <--at this point, actual_row fully contains your row
 printf("\n");
}
于 2013-07-18T14:44:15.850 回答