Description
给定一个n*n的矩阵,求其对角线的元素之和。
Input
首先输入一个n,n为小于10的奇数。 接下来输入一个n行n列的矩阵。
Output
输出一个整数,表示矩阵对角线元素之和。
#include <stdio.h>
int main() {
int n, i, j, sum = 0;
// 读取矩阵的大小n(假设是一个n x n的方阵)。
scanf("%d", &n);
// 定义一个n x n的二维数组来存储矩阵元素。
int matrix[n][n];
// 从标准输入读取矩阵的每个元素,并填充到matrix数组中。
for (i = 0; i < n; i++) {
for (j = 0; j < n; j++) {
scanf("%d", &matrix[i][j]);
}
}
// 计算主对角线和副对角线上的元素之和。
for (i = 0; i < n; i++) {
// 加上主对角线上的元素。
sum += matrix[i][i];
// 对于非中心位置的元素,加上副对角线上的元素。
// 如果n是奇数,中间的那个元素会被加两次,所以需要检查避免这种情况。
if (i != n / 2 || (n % 2 == 0 && i != n / 2 - 1)) {
sum += matrix[i][n - 1 - i];
}
}
// 如果n是偶数,则在上述循环中会错误地将中间元素减去一次,
// 因为偶数矩阵没有真正的“中心”元素。这里我们纠正这个错误。
// 注意:这里的逻辑有误,应该是在n为奇数时减去重复计算的中间元素。
if (n % 2 != 0) { // 修正为当n是奇数时才执行此操作
sum -= matrix[n / 2][n / 2];
}
// 打印最终计算得到的对角线元素之和。
printf("%d\n", sum);
return 0;
}
标签:matrix,奇数,sum,元素,矩阵,对角线
From: https://blog.csdn.net/2402_86997774/article/details/144621841