所以我尝试比较这两个数组的值,并且创建了一个测试来比较每个数组的每个元素。但是,我只希望 printf 语句仅在每个数组的所有元素彼此相等时打印一次。
此代码打印每个相等元素的语句,但如果所有元素都相同,我只需要打印一次。我该怎么办?
int MatrixEqualsActual[3][3] = {{1, 2, 3}, {4, 5, 6}, {7, 8, 9}};
int MatrixEquals[3][3] = {{3, 5, 9}, {1, 2, 6}, {9, 0, 1}};
int i, j;
for (i = 0; i < 3; i++) {
for (j = 0; j < 3; j++) {
if(MatrixEqualsActual[i][j] == MatrixEquals[i][j])
{
printf("PASSED (2/2): MatrixEquals()\n");
}
}
}
最佳答案
只需使用一个标志,仅在设置时才打印! 喜欢:
...
bool flag = true;
for (i = 0; i < 3; i++)
{
for (j = 0; j < 3; j++)
{
if(MatrixEqualsActual[i][j] != MatrixEquals[i][j])
{
flag = false;
break; // we break since we already know that at least one element doesn't match.
}
}
}
if(flag)
{
printf("PASSED (2/2): MatrixEquals()\n");
}
记住#include <stdbool.h>
否则你将无法在 C 中使用 bool 类型。
如果您不想包含该内容,则 int
变量会做得很好!
关于c - for循环中的printf语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35010307/