设计一个算法,输入当前方阵的阶数,方阵元素赋值,求二维数组Ann两条对角线上元素之和,用c语言表示完整代码。
时间: 2024-10-22 16:22:49 浏览: 16
在C语言中,我们可以创建一个二维数组并计算其主对角线和副对角线的元素之和。首先,我们需要定义一个用于存储矩阵的结构体,然后编写一个函数来初始化矩阵、计算对角线元素之和。以下是完整的代码:
```c
#include <stdio.h>
// 定义一个结构体来表示矩阵
typedef struct {
int size;
int matrix[100][100]; // 保证足够大的矩阵空间,可以根据实际情况调整大小
} Matrix;
// 初始化矩阵
void init_matrix(Matrix *m, int n, int arr[]) {
m->size = n;
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
m->matrix[i][j] = arr[i * n + j]; // 根据索引设置元素
}
}
}
// 计算对角线元素之和
int sum_diagonals(Matrix *m) {
int main_diag_sum = 0, secondary_diag_sum = 0;
for (int i = 0; i < m->size; i++) {
main_diag_sum += m->matrix[i][i]; // 主对角线
if (i < m->size - 1) { // 副对角线从右上到左下,避免越界
secondary_diag_sum += m->matrix[i][m->size - 1 - i];
}
}
return main_diag_sum + secondary_diag_sum;
}
int main() {
int n;
printf("请输入方阵的阶数: ");
scanf("%d", &n);
int arr[n * n], sum;
printf("请输入方阵元素:\n");
for (int i = 0; i < n * n; i++) {
scanf("%d", &arr[i]);
}
Matrix matrix;
init_matrix(&matrix, n, arr);
sum = sum_diagonals(&matrix);
printf("主对角线和副对角线元素之和为: %d\n", sum);
return 0;
}
```
这段代码首先接收用户输入的方阵阶数和元素,然后初始化矩阵并计算两个对角线的和。
阅读全文