【发布时间】:2020-04-24 13:04:05
【问题描述】:
读取一个矩阵,输出第i行之和等于第j列的所有 (i, j)对。
示例:
输入:
1 2 14 8
2 4 3 4
15 7 8 -5
输出:
(1,1), (0,2), (2,2) // 任意顺序
代码:
#include <stdio.h>
#define max 50
int main()
{
int i=0, j=0, r, c;
int arr[max][max], sum_r[max], sum_c[max];
printf("Enter the number of rows(r):");
scanf("%d",&r);
printf("Enter the number of columns(c):");
scanf("%d",&c);
for(i=0;i<r;i++)
{
for(j=0;j<c;j++)
{
printf("a[%d][%d]:",i,j);
scanf("%d",&arr[i][j]);
}
}
for(i=0;i<r;i++)
{
sum_r[i]=0;
for(j=0;j<c;j++)
{
sum_r[i] = sum_r[i] + arr[i][j];
}
i++;
}
for(j=0;j<c;j++)
{
sum_c[j]=0;
for(i=0;i<r;i++)
{
sum_c[j] = sum_c[j] + arr[i][j];
}
j++;
}
for(i=0;i<r;i++)
{
for(j=0;j<c;j++)
{
if(sum_r[i]==sum_c[j]) printf("(%d,%d)",i,j);
}
}
return 0;
}
我的意见:
Enter the number of rows(r):3
Enter the number of columns(c):4
a[0][0]:1
a[0][1]:2
a[0][2]:14
a[0][3]:8
a[1][0]:2
a[1][1]:4
a[1][2]:3
a[1][3]:4
a[2][0]:15
a[2][1]:7
a[2][2]:8
a[2][3]:-5
我的输出:
(0,2)(1,1)(1,3)(2,2) //额外的(1,3)为什么??
此外,此代码不适用于其他输入案例。想不出任何错误。
【问题讨论】:
-
示例输入缺少维度设置部分。
-
尺寸可以是用户指定的任何尺寸
-
请在运行代码时剪切并粘贴您的实际输入和输出(并将其添加到问题中,而不仅仅是您打算输入的输入数组)。
-
@Alpha 我明白这一点,但是您的程序希望首先设置在您的示例输入中没有发生的维度,因此它不是一个完整的示例。我知道你可以说它可以通过查看来推断,但谁知道你可能只是交换了它们或其他需要的东西。也为了可复制性。
-
您在循环末尾使用了另一个
i++和j++,这是错误的。变量在每次迭代结束时已经递增一次。