c语言用子函数求矩阵主对角线和副对角线元素和
时间: 2024-10-04 12:03:42 浏览: 27
C语言 实现3X3矩阵主对角线和副对角线求和
在C语言中,我们可以使用子函数(也称为函数或过程)来计算矩阵的主对角线和副对角线元素之和。首先,我们需要定义两个函数,一个用于提取主对角线元素,另一个用于提取副对角线元素。
假设我们有一个二维数组`matrix`表示矩阵,其中`rows`是行数,`cols`是列数。以下是简单的步骤:
```c
#include <stdio.h>
// 函数来获取矩阵的主对角线元素和
int getDiagonalSum(int matrix[rows][cols], int rows, int cols) {
int sum = 0;
for (int i = 0; i < rows && i < cols; i++) {
sum += matrix[i][i];
}
return sum;
}
// 函数来获取矩阵的副对角线元素和
int getAntidiagonalSum(int matrix[rows][cols], int rows, int cols) {
if (rows == cols) { // 只有方阵才有副对角线
int sum = 0;
for (int i = 0; i < rows; i++) {
sum += matrix[i][rows - i - 1]; // 注意索引是从0开始的
}
return sum;
} else {
return 0; // 非方阵则没有副对角线,返回0
}
}
// 主函数
int main() {
int matrix[4][4] = {
{1, 2, 3, 4},
{5, 6, 7, 8},
{9, 10, 11, 12},
{13, 14, 15, 16}
};
int row = sizeof(matrix) / sizeof(matrix[0]);
int col = sizeof(matrix[0]) / sizeof(matrix[0][0]);
int main_diagonal_sum = getDiagonalSum(matrix, row, col);
int anti_diagonal_sum = getAntidiagonalSum(matrix, row, col);
printf("Main diagonal sum: %d\n", main_diagonal_sum);
printf("Anti-diagonal sum: %d\n", anti_diagonal_sum);
return 0;
}
```
在这个例子中,`getDiagonalSum()`函数遍历主对角线,`getAntidiagonalSum()`函数处理特殊情况——只有当矩阵是方阵(行数等于列数)时才存在副对角线。运行此程序会分别打印出主对角线和副对角线的和。
阅读全文