矩阵的行、列和对角线的和

sum of rows,columns and diagonals of a matrix

本文关键字:对角线      更新时间:2023-10-16

求矩阵的对角线、行和列之和的最大值的程序。无法找到对角线和代码的问题。

输入:

2
16 4
-3 5 

预期输出应该是21,而实际输出是9。

#include<stdio.h>
//Main Function
int main()
{
int n,a[101][101],i,j;
int max=0,sum=0;
scanf("%d",&n);
for(i=0;i<n;i++)
{
    for(j=0;j<n;j++)
    {
        scanf("%d",&a[i]);
    }
}
j=0;
    //COLOUMN SUM
    while(j<n)
{
    sum=0;
    for(i=0;i<n;i++)
        sum+=a[i][j];
        if(sum>max)
        max=sum;
        j++;
} 
i=0;
//ROW SUM
    while(i<n)
{
    sum=0;
    for(j=0;j<n;j++)
    sum+=a[i][j];        
        i++;
        if(sum>max)
        max=sum;
    }
     //DIAGONAL SUM the main problem
sum=0;
for(i=0;i<n;i++)
{
     for(j=0;j<n;j++)
     {
       if(i==j)
       sum+=a[i][j];
      }
}
if(sum>max)
max=sum;
sum=0;
    for(i=0;i<n;i++)
{
    for(j=0;j<n;j++)
    {
            if(i+j==n-1)
    sum+=a[i][j];
    }
}
if(sum>max)
max=sum;
printf("%d",max);
return 0;

}

读取数组错误:

scanf("%d",&a[i]);

应该是:

scanf("%d",&a[i][j]);

为什么不在读循环中使用j ?

for(i=0;i<n;i++)
{
    for(j=0;j<n;j++)
    {
        scanf("%d",&a[i]); // <== Why no j here?????
    }
}

您没有正确地将元素读入数组只要改变这个表述,你就会得到正确的答案scanf("% d",[我]),scanf("% d",[我][j])