我正在尝试创建(10x10)二维字符数组以存储''和'T'并像这样显示它
+-+-+-+-+-+-+-+-+-+-+
| |T| |T| |T| |T| |T|
+-+-+-+-+-+-+-+-+-+-+
|T| |T| |T| |T| |T| |
+-+-+-+-+-+-+-+-+-+-+
| |T| |T| |T| |T| |T|
+-+-+-+-+-+-+-+-+-+-+
|T| |T| |T| |T| |T| |
+-+-+-+-+-+-+-+-+-+-+
| |T| |T| |T| |T| |T|
+-+-+-+-+-+-+-+-+-+-+
|T| |T| |T| |T| |T| |
+-+-+-+-+-+-+-+-+-+-+
| |T| |T| |T| |T| |T|
+-+-+-+-+-+-+-+-+-+-+
|T| |T| |T| |T| |T| |
+-+-+-+-+-+-+-+-+-+-+
| |T| |T| |T| |T| |T|
+-+-+-+-+-+-+-+-+-+-+
|T| |T| |T| |T| |T| |
+-+-+-+-+-+-+-+-+-+-+
我写的函数:
int plant_forest(char forest[][SIZE])
{
int i,j;
forest[0][0] = ' ';
for(i = 0;i<SIZE;i++)
{
for(j=0;j<SIZE;j++)
{
if(forest[i][j]!= forest[0][0])
{
if(forest[i][j-1]!='T' && forest[i-1][j]!= 'T')
{
forest[i][j] = 'T';
}
else
{
forest[i][j] = ' ';
}
}
}
}
return 0;
}
我得到的结果略有不同。
+-+-+-+-+-+-+-+-+-+-+
| |T| |T| |T| |T| |T|
+-+-+-+-+-+-+-+-+-+-+
| | |T| |T| |T| |T| |
+-+-+-+-+-+-+-+-+-+-+
|T| | |T| |T| |T| |T|
+-+-+-+-+-+-+-+-+-+-+
| |T| | |T| |T| |T| |
+-+-+-+-+-+-+-+-+-+-+
|T| |T| | |T| |T| |T|
+-+-+-+-+-+-+-+-+-+-+
| |T| |T| | |T| |T| |
+-+-+-+-+-+-+-+-+-+-+
|T| |T| |T| | |T| |T|
+-+-+-+-+-+-+-+-+-+-+
| |T| |T| |T| | |T| |
+-+-+-+-+-+-+-+-+-+-+
|T| |T| |T| |T| | |T|
+-+-+-+-+-+-+-+-+-+-+
| |T| |T| |T| |T| | |
+-+-+-+-+-+-+-+-+-+-+
我检查了逻辑,没有发现任何错误。除了i-1和j-1可能为负数。但是这将如何影响执行力?
仅供参考,我将在此处包括打印功能。但我已经检查过并确保此功能没有错误
void printBoard(char forest[][SIZE])
{
int i,j;
printf("+-+-+-+-+-+-+-+-+-+-+\n");
for(i = 0; i<SIZE;i++)
{
for(j = 0;j<SIZE;j++)
{
printf("|%c",forest[i][j]);
}
printf("|\n");
printf("+-+-+-+-+-+-+-+-+-+-+\n");
}
}
最佳答案
我认为这可能与数组中数据的存储方式有关。在内存中,数据仅存储在sequentially中。由于negative array indexes are allowed in C在您的情况下,功能结果是forest [1] [-1]指向位于单元forest [0] [9]中的相同数据,您会注意到它是“ T”。
由于forest [0] [9](又名forest [1] [-1])为“ T”,因此您未通过此测试
if(forest[i][j-1]!='T' && forest[i-1][j]!= 'T')
这意味着在单元格林[1] [0]中注册了一个''。防止出现负索引值,您应该会很好。
关于c - 二维数组操作,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/37823650/