c - 如何在 C 中打印一个数组覆盖另一个数组?

标签 c arrays 2d codeblocks

我正在编写一个程序,它将比较两个单独的二维数组中的元素并检查彼此重叠的元素。然后,它打印出一个数组,其中两个二维数组中的元素都存在,但当元素相互重叠时,第二个二维数组中的元素将替换第一个数组的元素。如何将这两个数组重叠为 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/

相关文章:

使用 MCU 定时器/中断计算秒数和分钟数?

c - 解析没有字符串库的命令行命令

Java 数组打印

java - 搜索矩形的排序列表

c# - 使用 WinForm 绘制实时 2D 图形

C 中的缓存文件指针

c - 将标记存储到数组中以便稍后作为参数传递

javascript - 我有一个 If 语句不起作用,但逻辑​​上是正确的

java - 是多次访问 array[i] 中的值,还是将该值存储在变量 (v=array[i]) 中并访问该变量 v 更好?

java - 如何将屏幕上的 3D 位置转换为 2D 点?