用二维数组分别求一个n*n矩阵主对角线和辅对角线的元素之和,n<=10
时间: 2024-05-07 15:22:11 浏览: 116
以下是主对角线和辅对角线元素之和的代码实现:
```python
n = int(input("请输入矩阵的大小n:"))
matrix = []
for i in range(n):
row = []
for j in range(n):
row.append(int(input("请输入第" + str(i+1) + "行,第" + str(j+1) + "列的元素:")))
matrix.append(row)
# 计算主对角线元素之和
diag1_sum = 0
for i in range(n):
diag1_sum += matrix[i][i]
# 计算辅对角线元素之和
diag2_sum = 0
for i in range(n):
diag2_sum += matrix[i][n-i-1]
print("主对角线元素之和为:", diag1_sum)
print("辅对角线元素之和为:", diag2_sum)
```
该代码首先读取用户输入的矩阵大小n,然后通过嵌套循环读取矩阵的每个元素,并存储到一个二维数组中。接下来,分别计算主对角线和辅对角线的元素之和。主对角线上的元素都满足行下标和列下标相等的条件,而辅对角线上的元素满足行下标和列下标之和为n-1的条件。因此我们可以通过遍历矩阵的每一行来计算这两条对角线上的元素之和,最后输出结果即可。
相关问题
c语言(二维数组)求一个N*N矩阵两条对角线元素之和
可以使用一个循环来遍历矩阵,并利用两个变量分别累加主对角线和副对角线的元素值。代码如下:
```c
#include <stdio.h>
int main() {
int n;
printf("请输入矩阵的大小(n*n):");
scanf("%d", &n);
int matrix[n][n];
int sum1 = 0, sum2 = 0; // 分别累加主对角线和副对角线的元素值
// 输入矩阵元素
printf("请输入矩阵元素:\n");
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
scanf("%d", &matrix[i][j]);
if (i == j) { // 主对角线
sum1 += matrix[i][j];
}
if (i + j == n - 1) { // 副对角线
sum2 += matrix[i][j];
}
}
}
// 输出两条对角线元素之和
printf("主对角线元素之和为:%d\n", sum1);
printf("副对角线元素之和为:%d\n", sum2);
return 0;
}
```
其中,`sum1`和`sum2`分别用于累加主对角线和副对角线的元素值。在输入矩阵元素时,利用两个if语句分别将主对角线和副对角线的元素值累加到对应的变量中。最后输出两条对角线元素之和即可。
c语言(二维数组)求一个N*N矩阵两条对角线元素之和一个元素只能加一次
可以使用一个二维数组来表示这个矩阵,然后分别计算两条对角线上的元素之和。为了保证每个元素只加一次,可以使用一个布尔型的一维数组来记录每个元素是否已经被加过。
以下是一个示例代码:
```c
#include <stdio.h>
#include <stdbool.h>
#define N 3 // 矩阵的大小
int main() {
int matrix[N][N] = {{1, 2, 3}, {4, 5, 6}, {7, 8, 9}}; // 定义矩阵
bool added[N * N] = {false}; // 标记每个元素是否已经加过
int diagonal1 = 0; // 第一条对角线的元素之和
int diagonal2 = 0; // 第二条对角线的元素之和
// 计算第一条对角线的元素之和
for (int i = 0; i < N; i++) {
int index = i * N + i; // 计算当前元素在一维数组中的下标
diagonal1 += matrix[i][i];
added[index] = true; // 标记当前元素已经加过
}
// 计算第二条对角线的元素之和
for (int i = 0; i < N; i++) {
int j = N - 1 - i; // 计算当前元素在第二条对角线上的列坐标
int index = i * N + j; // 计算当前元素在一维数组中的下标
if (!added[index]) { // 如果当前元素还没有被加过
diagonal2 += matrix[i][j];
added[index] = true; // 标记当前元素已经加过
}
}
int sum = diagonal1 + diagonal2; // 两条对角线的元素之和
printf("sum = %d\n", sum);
return 0;
}
```
运行结果:
```
sum = 25
```
阅读全文