如何在 C 中打印一个数组覆盖另一个数组?
How to Print an Array over another Array in C?
我正在编写一个程序,它将比较 2 个独立的二维数组中的元素并检查相互重叠的元素。然后它打印出一个数组,其中存在两个二维数组中的元素,但是当元素相互重叠时,第二个二维数组中的元素将替换第一个数组中的元素。如何将这两个数组重叠为 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] = ' ';
}
}
}
}
这是我的代码 'overlap':
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
有一个非 space 而 pat2
有一个 space 的情况。您想单独留下 pat1
,但此测试会成功,并且会被 pat2
中的 space 替换。
您可以将其更改为:
if (pat1[r][c] == ' ') {
pat1[r][c] == pat2[r][c];
}
这将用 pat2
中的任何内容替换 pat1
条目(space 或其他),if pat1
条目是 space.
您也可以删除 else 子句,因为它没有任何作用。
我正在编写一个程序,它将比较 2 个独立的二维数组中的元素并检查相互重叠的元素。然后它打印出一个数组,其中存在两个二维数组中的元素,但是当元素相互重叠时,第二个二维数组中的元素将替换第一个数组中的元素。如何将这两个数组重叠为 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] = ' ';
}
}
}
}
这是我的代码 'overlap':
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
有一个非 space 而 pat2
有一个 space 的情况。您想单独留下 pat1
,但此测试会成功,并且会被 pat2
中的 space 替换。
您可以将其更改为:
if (pat1[r][c] == ' ') {
pat1[r][c] == pat2[r][c];
}
这将用 pat2
中的任何内容替换 pat1
条目(space 或其他),if pat1
条目是 space.
您也可以删除 else 子句,因为它没有任何作用。