似乎一切都是正确的,但当我打印时,它仍然将所有元素打印为零。。。请帮我
#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<ROw
和j<COL
。