C++ 矩阵的行、列和对角线之和

C++ 矩阵的行、列和对角线之和,c++,c,c++11,C++,C,C++11,该程序用于在矩阵的对角线、行和列的和之间求最大值。找不到对角和码的问题 输入: 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

该程序用于在矩阵的对角线、行和列的和之间求最大值。找不到对角和码的问题

输入:

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;
#包括
//主要功能
int main()
{
int n,a[101][101],i,j;
int max=0,sum=0;
scanf(“%d”和“&n”);

对于(i=0;i您错误地读入数组:

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?????
    }
}

for(i=0;i您没有正确地将元素读入数组
只要改变这句话,你就会得到正确的答案

SCANF(“%d”,和[i])到SCANF(“%d”,和[i] [j])

不要尝试编写一个既适用于C又适用于C++的程序。这是非常困难的,最终你得到的不是一种语言。这是正确的。谢谢。这是一个愚蠢的错误。