编写一个C语言程序,要求:从键盘上输入一个3×3的矩阵,求矩阵的主对角线之和以及副对角线之和,要求定义和调用函数
时间: 2024-03-25 12:35:25 浏览: 71
好的,以下是实现该功能的C语言程序:
```c
#include <stdio.h>
/* 函数声明 */
int diagonal_sum(int arr[][3], int size);
int main() {
int matrix[3][3];
int i, j;
/* 输入矩阵 */
printf("请输入3x3矩阵的元素:\n");
for (i = 0; i < 3; i++) {
for (j = 0; j < 3; j++) {
scanf("%d", &matrix[i][j]);
}
}
/* 调用函数计算对角线和 */
int main_sum = diagonal_sum(matrix, 3); /* 计算主对角线和 */
int sub_sum = diagonal_sum(matrix, -3); /* 计算副对角线和 */
/* 输出结果 */
printf("主对角线之和为:%d\n副对角线之和为:%d\n", main_sum, sub_sum);
return 0;
}
/* 计算矩阵对角线和的函数 */
int diagonal_sum(int arr[][3], int size) {
int i, sum = 0;
if (size > 0) {
/* 计算主对角线元素之和 */
for (i = 0; i < size; i++) {
sum += arr[i][i];
}
} else {
/* 计算副对角线元素之和 */
for (i = 0; i < -size; i++) {
sum += arr[i][2 - i];
}
}
return sum;
}
```
该程序与前一个程序相似,只不过我们修改了 `diagonal_sum()` 函数的实现方式,使其能够计算主对角线和副对角线之和。我们在函数声明时增加了一个参数 `size`,如果 `size` 大于 0,函数就计算主对角线元素之和,否则就计算副对角线元素之和。在计算副对角线元素之和时,我们使用了 `2-i` 来计算副对角线元素的列下标,其中 `i` 是当前行的下标。需要注意的是,我们将 `size` 设为负数来区别主对角线和副对角线的计算方式。
阅读全文