题目:输入一个 n×n 的矩阵,求出矩阵的 2 个对角线上元素的和。相同位置不能重复计算。
输入:第一行输入一个整数 n,接下里输入一个 n 行 n 列的矩阵,矩阵的值均在 −100 到 100 之间。
输出:两个对角线之和。
数据范围:1<=n<=50
样例输入
4
5 9 3 -1
2 0 6 8
3 3 -5 7
1 1 0 0
样例输出
9
程序
#include <iostream>
using namespace std;
int main(){
int n,i,j;
int m[50][50];
scanf("%d",&n);
for (i=0;i<n;i++){
for(j=0;j<n;j++){
scanf("%d",&m[i][j]);
}
}
int d1=0,d2=0;
if(n%2==1){
for (i=0;i<n;i++){
d1+=m[i][j];
d2+=m[i][n-i-1];
}
d2=d2-m[n/2][n/2];
int d3=d1+d2;
cout<<d3;
}
else{
for (i=0;i<n;i++){
d1+=m[i][j];
d2+=m[i][n-i-1];
}
int d3=d1+d2;
cout<<d3;
}
return 0;
}
因为有两种方式所以要加条件判断,如果为单数*单数,那么将要减去中间的数,而偶数*偶数就正常运算就可以了