我不知道为什么不评估我期望它的方式。如果这很明显,我道歉。问题出在以下if语句中:
if (count == cordX && i == cordY) {
它位于更大的while循环中:
while (count < 10) {
printf("0%d", count);
for (i=0; i < 10; i++) {
if (count == cordX && i == cordY) {
x[i] = 1;
printf("|%d", x[i]);
} else {
printf("|%d", x[i]);
}
}
count++;
printf("|");
printf("\n");
printf("Count : %d\n", count);
}
现在这将打印出一列和一行的网格。尽管cordX等于“0”并且每次循环运行时计数增加,但每行的第一列打印为“1”。所以它必须只评估if语句的“i == cordY”部分,因为cordY也等于“0”。这是输出的图片,使其比我的解释更清晰:
答案 0 :(得分:2)
您的问题不在测试中,这是一个合乎逻辑的问题。在第一次迭代时,您的条件得到满足,因此您将x[i]
设置为1;从调试输出中我们可以看到这是i
为0时的情况,因此x[0]
设置为1。
然而,在while循环的下一次迭代中,x[0]
仍然 1,因此它仍会在第一列中打印1
。在x[i]=0
之后插入一个else
来修复它,不过为什么你首先将值存储在一个数组中是一个难题。