在一个N行N列的方阵(或称N阶方阵)中,从左上角到右下角这一斜线上有N个数据元素,这个斜线称为方阵的主对角线。给你一个方阵,请求方阵主对角线上数据的和。用c语言
时间: 2024-03-16 07:46:04 浏览: 106
好的,那么你可以使用以下的 C 语言代码实现:
```c
#include <stdio.h>
#include <stdlib.h>
int diagonal_sum(int **matrix, int n) {
/*
计算方阵主对角线上数据的和
Args:
matrix: N*N的方阵,用二维数组表示
n: 方阵的大小
Returns:
主对角线上数据的和
*/
int i, sum = 0;
for (i = 0; i < n; i++) {
sum += matrix[i][i];
}
return sum;
}
int main() {
int n, i, j, **matrix, sum;
printf("请输入方阵的大小:");
scanf("%d", &n);
// 动态分配二维数组
matrix = (int **)malloc(n * sizeof(int *));
for (i = 0; i < n; i++) {
matrix[i] = (int *)malloc(n * sizeof(int));
}
// 输入矩阵
printf("请输入方阵的元素:\n");
for (i = 0; i < n; i++) {
for (j = 0; j < n; j++) {
scanf("%d", &matrix[i][j]);
}
}
// 计算主对角线和
sum = diagonal_sum(matrix, n);
printf("主对角线上的元素之和为:%d\n", sum);
// 释放内存
for (i = 0; i < n; i++) {
free(matrix[i]);
}
free(matrix);
return 0;
}
```
这个程序先动态分配一个 N * N 的二维数组,然后使用两层循环读取用户输入的方阵,最后调用 `diagonal_sum` 函数计算主对角线上的元素之和。注意,在 C 语言中,我们需要手动释放动态分配的内存,以避免内存泄漏问题。
阅读全文