在这个问题中,我试图解决有关 for 循环的问题

In this question im trying to solve a problem about for loops

在这道题中,我要查找任何和大于2的行或列,找到的第一行或第一列突破循环,如果没有任何打印编号,则打印yes。该代码可以很好地打印每行和每列的总和,但它无法定义输入矩阵是否有任何具有这种质量的行或列。

#include <stdio.h>

int main()
{
int n,m,i,j;
int sum_r,sum_c;
int sw = 0;
scanf("%d%d",&m,&n);
int a [10][10];
for(i=0; i<m; i++)
{
    for(j=0; j<n; j++)
    {
        scanf("%d",&a[i][j]);
    }
}
for(i=0; i<m; i++)
{
    sum_r = 0;
    for(j=0; j<n; j++)
    {
        sum_r += a[i][j];
        if(sum_r >= 2)
        {
            sw = 1;
        }
    }
}

for(i=0; i<n; i++)
{
    sum_c = 0;
    for(j=0; j<m; j++)
    {
        sum_c += a[j][i];
        if (sum_c >= 2)
        {
            sw = 1;
        }
    }
}

if (sw = 1) printf("yes");
else printf("no");

return 0;

}

对于初学者来说,这个 if 语句中有一个拼写错误

if (sw = 1) printf("yes");

您必须使用比较运算符 == 而不是赋值运算符 =

if (sw == 1) printf("yes");

或更简单

if (sw) printf("yes");

如果我没理解错的话,那么你需要的是下面这样的东西

for(i=0; !sw && i<m; i++)
{
    sum_r = 0;
    for(j=0; !( sum_r > 2 ) && j<n; j++)
    {
        sum_r += a[i][j];
        if(sum_r > 2)
        {
            sw = 1;
        }
    }
}

for(i=0; !sw && i<n; i++)
{
    sum_c = 0;
    for(j=0; !( sum_c > 2 ) && j<m; j++)
    {
        sum_c += a[j][i];
        if (sum_c > 2)
        {
            sw = 1;
        }
    }
}