似乎一切都是正确的,但是当我打印时,它会将所有元素打印为零...请帮助我
#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]);
}
}
}
请帮助我!
答案 0 :(得分:2)
您的代码中有几个问题:
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]);
。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<ROw
和j<COL
在for循环中。