c语言编程迷宫问题

while (map[endX][endY] != 'O') {

char ch;

ch = getchar();

getchar();

switch (ch) {

case 's':

if (map[startX + 1][startY] != '#') {

map[startX][startY] = ' ';

startX++;

map[startX][startY] = 'O';

}

break;

case 'w':

if (map[startX - 1][startY] != '#') {

map[startX][startY] = ' ';

startX--;

map[startX][startY] = 'O';

}

break;

case 'a':

if (map[startX][startY - 1] != '#') {

map[startX][startY] = ' ';

startY--;

map[startX][startY] = 'O';

}

break;

case 'd':

if (map[startX][startY + 1] != '#') {

map[startX][startY] = ' ';

startY++;

map[startX][startY] = 'O';

}

break;

default:

break;

}

printMap(map, row, col);

}

return 0;

}

while (map[endX][endY] != 'O')这一句是什么意思啊 为什么当不等于o时就程序结束
void printMap(char map[][6], int row, int col)

{

for (int i = 0; i < row; i++) {

for (int j = 0; j < col; j++) {

printf("%c", map[i][j]);

}

printf("\n");

}

}

当map[endX][endY] != 'O'的时候继续循环接收字符
也就是当map[endX][endY] = 'O'的时候跳出循环
因为小人的位置是='O'的位置,map[endX][endY] = 'O'时说明小人已经在出口了。追问

额额额- - 我自己没注意 还有个问题
int row = (sizeof(map)/sizeof(char))/(sizeof(map[0])/sizeof(char));
这一句怎么计算的 行数啊 好繁琐啊

追答

sizeof(map)/sizeof(char)是所有的字符

sizeof(map[0])/sizeof(char)是一行的字符。。。

追问

- - 能帮填下数字吗 就和那个编程里数字对照的 谢谢啦

追答

填数字?一共有36/1字符 一行有6/1个字符啊

追问

int row = (sizeof(map)/sizeof(char))/(sizeof(map[0])/sizeof(char));

int row = (sizeof(6)/sizeof(1))/(sizeof( )/sizeof(1)) map[0]就是1吗

追答

6啊

追问

map[0] 为什么等于6啊

追答

map[0]={'#','#','#','#','#','#'}

温馨提示:答案为网友推荐,仅供参考