c-二维数组,没有打印正确的元素



似乎一切都是正确的,但当我打印时,它仍然将所有元素打印为零。。。请帮我

#include <stdio.h>
#include <stdlib.h>
#define COL 4
#define ROW 3
int y[3][4] = {{1, 2, 3},
               {4, 5, 6},
               {7, 8, 9}
                        };        

int main()
{
   int i,j;
   for(i=0;i<=ROW;i++)
   {
      for(j=0;j<=COL;j++)
      {
          printf("Value at col %d and row %d, is : %dn",COL,ROW,y[ROW][COL]);
      }
   }
 }

请帮帮我!

您的代码中有几个问题:

  • 循环计算一个元素,它们从0一直到ROW/COL(包括该元素(,而数组从0COL/ROW。使用for(i=0; i < ROW; i++)。请注意<而不是您的<=!(COL循环也是如此(
  • 如果在printf()语句中交换了行和列,请先使用列,然后使用行
  • 您没有使用printf()中的变量,而是使用printf("Value at col %d and row %d, is : %dn",j,i, y[i][j]);
  • 您的数组只有3个COL列,而不是#defined 4
printf("Value at col %d and row %d, is : %dn",i,j,y[i][j]);

您使用ROW和COL作为偏移量,而不是循环变量

数组元素通过其索引使用i&j访问数组元素,以便i> =0并且i<行,例如

printf("Col:%d, Row:%d, Value:%d", i, j,y[i][j]);

更改

printf("第%d列和第%d行的值为:%d\n",col,row,y[row][col](;

进入

printf("第%d列和第%d行的值为:%d\n",i,j,y[i][j](;

还要注意,您的数组维度为3;4,然后初始化为3;3

      printf("Value at col %d and row %d, is : %dn",COL,ROW,y[ROW][COL]);

有了这个,您正在打印:y[ROW][COL],而您想要的是y[i][j]

您还访问了越界,因此它调用了未定义的行为。

您的条件应该是:for循环中的i<ROwj<COL

相关内容

  • 没有找到相关文章

最新更新