二维数组下标获取为啥出错?

获取元素4下标总是不对,求大神告知图片图片

你的break只跳出了第一层for循环啊

sorry,没仔细看,上条回答作废。

不是很清楚您的问题,你问的是a[4][4]==4吗?
如果是这样的话,你可以在循环里面打印下下标和值,看是否写错了。图有点小,看不清第二张图

楼主还是贴个完整的代码吧,就贴运行有问题的这个版本。一般越灵异的问题最后找到原因越简单。

我刚试了一下,就是4,4

基本上照着你的做的

我也遇到过类似的问题,一个printf打印3个数,第二个数字打印出来总是有问题,变成了第三个数,单实际用的时候数值并没有变化

里边那个for 循环 j的初始值应该为1

#include#includevoid Drawmap(){int i,j;int a[8][8]={{0,0,1,1,1,0,0,0}, //0是空地 1是墙 2是目的地 3是箱子 4是人 {0,0,1,2,1,0,0,0},{0,0,1,0,1,1,1,1},{1,1,1,3,0,3,2,1},{1,2,0,3,4,1,1,1},{1,1,1,1,3,1,0,0},{0,0,0,1,2,1,0,0},{0,0,0,1,1,1,0,0}};for(i=0;i<8;i++){ for(j=0;j<8;j++) { switch(a[i][j]) { case 0: printf(" "); break; case 1: printf("■"); break; case 2: printf("☆"); break; case 3: printf("□"); break; case 4: printf("▲"); break; } } printf("\n");}}void Playgame(){ int i,j,a[8][8]; int col,row; for(i=0;i<8;i++) { for(j=0;j<8;j++) { if(a[i][j]==4) { col=i; row=j; break; } } } printf("col=%d\nrow=%d\n",col,row); printf("a[col][row]=%d\n",a[col][row]); char c; c=getch(); switch(c) { case 'w': if(a[i-1][j]==0) { a[i][j]=0; a[i-1][j]=4; } break; }}int main(){ while(1) { system("cls"); //清屏 Drawmap(); Playgame(); } return 0;}