二维数组,不打印适当的元素?

时间:2013-02-26 09:57:12

标签: c multidimensional-array

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

#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 : %d\n",COL,ROW,y[ROW][COL]);
      }
   }

 }

请帮助我!

5 个答案:

答案 0 :(得分:2)

您的代码中有几个问题:

  • 你的循环计算一个元素到远,它们从0 ROW / COL,而你的数组从0 COL / ROW。使用for(i=0; i < ROW; i++)。请注意<而不是<=! (同样适用于COL循环)
  • 您交换了printf()语句中的行和列,首先使用列然后使用行。
  • 您没有使用printf()中的变量,而是使用printf("Value at col %d and row %d, is : %d\n",j,i, y[i][j]);
  • 您的数组只有3个COL umns,而不是#defined 4

答案 1 :(得分:1)

printf("Value at col %d and row %d, is : %d\n",i,j,y[i][j]);

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

答案 2 :(得分:1)

数组元素可通过其索引使用i&amp; j访问数组元素,这样 i&gt; = 0且i&lt;行, e.g。

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

答案 3 :(得分:0)

变化

  

printf(“col%d和row%d的值,是:%d \ n”,COL,ROW,y [ROW] [COL]);

进入

  

printf(“col%d和row%d的值为:%d \ n”,i,j,y [i] [j]);

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

答案 4 :(得分:0)

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

使用此功能,您打印的是y[ROW][COL],而您打算y[i][j]

您也在访问界限,因为它会调用未定义的行为。

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