求矩阵对角线的和。额ua有

问题遇到的现象和发生背景

不知道哪里错了

img

#include
int main()
{ int n,i,j,k,p;
  
  while(scanf("%d",&n)!=EOF)
  { int a[n][n];
  for(i=0;ifor(j=0;j"%d",&a[i][j]);
    
      }
    }
    for(i=0;ifor(k=0,p=0,j=0;jif(i==j)
          k=k+a[i][j];
          if(i+j==n-1)
          p=p+a[i][j];
          printf("%d %d",k,p);
}
     }printf("\n");
  }
    return 0;
}

应该是计算对角线之和的for循环和打印对角线之和那里错了,具体分析如下:

把 printf("%d %d",k,p);这句代码放到第四个for循环后面,因为第三个第四个for循环是用于寻找当前矩阵的对角线之和,所以打印对角线的结果要放到在寻找对角线和的后面;

然后把k和p赋初始值0提到第三个for循环之前,这个也是同样道理,因为在计算每组矩阵的对角线之和之前都需要初始化他们的和为0,修改如下:

#include<stdio.h>
int main()
{ int n,i,j,k,p;
  
  while(scanf("%d",&n)!=EOF)
  { int a[n][n];
  for(i=0;i<n;i++)
    { for(j=0;j<n;j++)
      { scanf("%d",&a[i][j]);
    
      }
    }
    k=0,p=0; 
    for(i=0;i<n;i++)
     { for(j=0;j<n;j++)
       { 
           if(i==j)
              k=k+a[i][j];
        if(i+j==n-1)
              p=p+a[i][j];
          
        }        
     }
     printf("%d %d",k,p);
     printf("\n");
  }
    return 0;
}
 

img