我正在编写一个程序,它将比较两个单独的二维数组中的元素并检查彼此重叠的元素。然后,它打印出一个数组,其中两个二维数组中的元素都存在,但当元素相互重叠时,第二个二维数组中的元素将替换第一个数组的元素。如何将这两个数组重叠为 1 个数组?
void tile1(char pat1[13][13]) //to arrange the pattern
{
int r,c;
for(r=0;r<13;r++)
{
for(c=0;c<13;c++)
{
if(r==0 || r==12) // top and bottom border
{
pat1[r][c] = '-';
}
else if(r>0 && r<6 && c>=0 && c<6)
{
pat1[r][c] = '^';
}
else
{
pat1[r][c] = ' ';
}
}
}
}
void tile3(char pat3[13][13]) //to arrange the pattern
{
int r,c;
for(r=0;r<13;r++)
{
for(c=0;c<13;c++)
{
if(r==0 || r==12)
{
pat3[r][c] = '-';
}
else if(r==c || r+1==c || r-1==c)
{
pat3[r][c] = 'X';
}
else
{
pat3[r][c] = ' ';
}
}
}
}
这是我的“重叠”代码:
void overlap(char pat1[13][13], char pat2[13][13])
{
int r,c;
for(r=0;r<13;r++)
{
printf("|");
for(c=0;c<13;c++)
{
if(pat1[r][c]!=' ' || pat2[r][c]!=' ')
{
pat1[r][c] == pat2[r][c];
}
else
{
pat1[r][c] == pat1[r][c];
}
printf(" %c ", pat1[r][c]);
}
printf("|\n");
}
}
当我运行程序时,它打印一个空的二维数组?我应该修改代码的哪一部分,我很确定它是重叠函数,对吗?
最佳答案
以下测试不正确:
if (pat1[r][c]!=' ' || pat2[r][c]!=' ') {
pat1[r][c] == pat2[r][c];
}
考虑 pat1
不包含空格而 pat2
包含空格的情况。您想单独保留 pat1
,但此测试将会成功,并且它将被 pat2
中的空格替换。
您可以将其更改为:
if (pat1[r][c] == ' ') {
pat1[r][c] == pat2[r][c];
}
这会将 pat1
条目替换为 pat2
中的任何内容(空格或其他),如果是 pat1
> 条目是一个空格。
您也可以删除 else 子句,因为它没有任何作用。
关于c - 如何在 C 中打印一个数组覆盖另一个数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47121814/