本题我提供两种算法:
第一种麻烦,适合3阶及以下的矩阵,好理解
第二种适用n阶矩阵
具体见下面代码:
#include<stdio.h>
int main() {
int a[3][3];
int n;
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 3; j++) {
scanf("%d", &n);
a[i][j] = n;
}
}
//测试输入数组
//for (int i = 0; i < 3; i++) {
// for (int j = 0; j < 3; j++) {
// printf("%d ", a[i][j]);
// }
// printf("\n");
//}
死办法求对角线
int sum1 = 0, sum2 = 0;
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 3; j++) {
if (i == 0 && j == 0){
sum1 += a[i][j];
}
else if (i == 0 && j == 2) {
sum2 += a[i][j];
}
else if (i == 1 && j == 1) {
sum1 += a[i][j];
sum2 += a[i][j];
}else if(i == 2&&j==2){
sum1 += a[i][j];
}
else if (i == 2 && j == 0) {
sum2 += a[i][j];
}
}
}
//第二种方法:
int sum3 = 0, sum4 = 0;
//对角线求和
for (int i = 0; i < 3; i++) {
sum3 += a[i][i];
}
//副对角线求和
int i = 0;
for (int j = 2; j >= 0; j--) {
sum4 += a[i][j];
i++;
}
printf("%d %d\n", sum1,sum2);
printf("%d %d\n", sum3,sum4);
return 0;
}