为什么在这个简单的代码部分中修改二维数组左下角的点,我有没有放入坐标m[37][-40]
?
#include <stdio.h>
#include <stdlib.h>
#define MAX 40
int main()
{
int i, j;
char m[MAX][MAX];
for(i=0; i<MAX; i++){
for(j=0; j<MAX; j++)
m[i][j]=' ';
}
m[37][-40]='X';
for(i=0; i<MAX; i++){
for(j=0; j<MAX; j++)
printf("%c", m[i][j]);
}
return 0;
}
Souldn是m[37][0]
?那行是37,列是0 ......
答案 0 :(得分:1)
这可能是因为你的打印循环中没有换行符,这会因为大部分打印空间而加剧(当然,它们是不可见的)。如果您在内部打印循环后添加printf("\n");
(以下代码),并将m[37][-40]='X';
替换为m[37][0]='X';
,那么它应该可以正常工作(它在我运行时执行):
for(i=0; i<MAX; i++){
for(j=0; j<MAX; j++)
printf("%c", m[i][j]);
printf("\n");
}
我还用句点('.'
)替换了空格,使其更加明显。