【发布时间】:2021-06-11 16:17:09
【问题描述】:
所以我创建了一个以矩阵为参数的函数。矩阵由 0 和 1 组成。此函数的目标是逐个读取矩阵值,如果它们是 0,则打印出“~”,如果它们是 1,则打印“B”,如果它们是 0,则在 a 旁边1 水平打印一个“]”。
函数如下:
void canvas(int m[t1][t2]){
for (int i = t1 - 1; i > -1; i--)
{
for (int j = 0; j < t2; j++)
{
if (m[i][j] == 1){
printf("B ");
}
else if (m[i][j] == 0 && (m[i][j + 1] == 1 || m[i][j - 1] == 1)){
printf("] ");
}
else {
printf("~ ");
}
}
printf("\n");
}
}
这是用作参数的矩阵的样子(例如 13 x 13):
0 0 0 0 0 0 0 0 0 0 0 0 0
0 1 1 1 1 1 1 1 1 1 0 0 0
0 1 0 0 0 0 0 0 0 1 0 0 0
0 1 0 0 0 0 0 0 0 1 0 0 0
0 1 0 0 0 0 0 0 0 1 0 0 0
0 1 0 0 0 0 0 0 0 1 0 0 0
0 1 0 0 0 0 0 0 0 1 0 0 0
0 1 0 0 0 0 0 0 0 1 0 0 0
0 1 0 0 0 0 0 0 0 1 0 0 0
0 1 0 0 0 0 0 0 0 1 0 0 0
0 1 0 0 0 0 0 0 0 1 0 0 0
0 1 1 1 1 1 1 1 1 1 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0
这是我预期的输出:
~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~
] B B B B B B B B B ] ~ ~
] B ] ~ ~ ~ ~ ~ ] B ] ~ ~
] B ] ~ ~ ~ ~ ~ ] B ] ~ ~
] B ] ~ ~ ~ ~ ~ ] B ] ~ ~
] B ] ~ ~ ~ ~ ~ ] B ] ~ ~
] B ] ~ ~ ~ ~ ~ ] B ] ~ ~
] B ] ~ ~ ~ ~ ~ ] B ] ~ ~
] B ] ~ ~ ~ ~ ~ ] B ] ~ ~
] B ] ~ ~ ~ ~ ~ ] B ] ~ ~
] B ] ~ ~ ~ ~ ~ ] B ] ~ ~
] B B B B B B B B B ] ~ ~
~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~
这就是我得到的:
~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ]
] B B B B B B B B B ] ~ ~
] B ] ~ ~ ~ ~ ~ ] B ] ~ ~
] B ] ~ ~ ~ ~ ~ ] B ] ~ ~
] B ] ~ ~ ~ ~ ~ ] B ] ~ ~
] B ] ~ ~ ~ ~ ~ ] B ] ~ ~
] B ] ~ ~ ~ ~ ~ ] B ] ~ ~
] B ] ~ ~ ~ ~ ~ ] B ] ~ ~
] B ] ~ ~ ~ ~ ~ ] B ] ~ ~
] B ] ~ ~ ~ ~ ~ ] B ] ~ ~
] B ] ~ ~ ~ ~ ~ ] B ] ~ ~
] B B B B B B B B B ] ~ ~
~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~
当矩阵的两个维度都是奇数时,第一行的最后一个字符总是出现错误,我不知道为什么。我认为这可能与逻辑表达式有关,但找不到奇数发生这种情况的原因。
【问题讨论】:
-
t1和t2的定义在哪里? -
@M.NejatAydin 文件顶部,函数外