c - for循环中的printf语句

标签 c

所以我尝试比较这两个数组的值,并且创建了一个测试来比较每个数组的每个元素。但是,我只希望 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/

相关文章:

c - 我们如何更改 doxygen 生成的默认 html 文件?

c - 指针算术输出问题

c - 数组中内存的重新分配

关于在 C 中打印字符串数组的困惑

c++ - 错误 : invalid conversion from 'void (*)()' to 'void (*)()' -- what?

c - 这个movl指令有必要吗?

c++ - 简单的 c strtok_r 测试中的内存紊乱

c - ANSI C 和 WinAPI : how to get a handle to the window from hook procedure?

c++ - 函数接受两个参数,一个字节和一个位字段,并返回字节中字段的值

c - 如何在C中将字符串作为参数传递并写入文件?