c语言编写程序求一个3阶方阵主对角线元素之和(用函数实现)。
时间: 2023-08-07 17:05:45 浏览: 150
好的,以下是C语言的实现:
```c
#include <stdio.h>
int diagonal_sum(int matrix[][3]) {
/*
* 计算3阶方阵的主对角线元素之和
*/
int sum = 0;
for (int i = 0; i < 3; i++) {
sum += matrix[i][i];
}
return sum;
}
// 示例
int main() {
int matrix[3][3] = {{1, 2, 3}, {4, 5, 6}, {7, 8, 9}};
int sum = diagonal_sum(matrix);
printf("%d\n", sum); // 输出15
return 0;
}
```
您可以将您的3阶方阵作为参数传递给此函数,它将返回主对角线元素之和。本示例程序中,我们定义了一个3x3的二维数组`matrix`,并将其作为参数传递给`diagonal_sum`函数,最后输出计算结果。
相关问题
用C语言编写:编写函数求任意方阵每行、每列、对角线元素之和。
可以使用以下代码来实现:
```c
#include <stdio.h>
#define N 3 // 定义矩阵的维度
// 求矩阵每行、每列、对角线元素之和
void sumMatrix(int matrix[][N]) {
int rowSum, colSum, diagonalSum1 = 0, diagonalSum2 = 0;
for (int i = 0; i < N; i++) {
rowSum = 0;
colSum = 0;
for (int j = 0; j < N; j++) {
rowSum += matrix[i][j]; // 求每行元素之和
colSum += matrix[j][i]; // 求每列元素之和
if (i == j) {
diagonalSum1 += matrix[i][j]; // 求主对角线元素之和
}
if (i + j == N - 1) {
diagonalSum2 += matrix[i][j]; // 求副对角线元素之和
}
}
printf("第 %d 行元素之和为:%d\n", i + 1, rowSum);
printf("第 %d 列元素之和为:%d\n", i + 1, colSum);
}
printf("主对角线元素之和为:%d\n", diagonalSum1);
printf("副对角线元素之和为:%d\n", diagonalSum2);
}
int main(void) {
int matrix[N][N] = {{1, 2, 3}, {4, 5, 6}, {7, 8, 9}}; // 定义矩阵
sumMatrix(matrix); // 求矩阵每行、每列、对角线元素之和
return 0;
}
```
这里定义了一个 `sumMatrix` 函数用来求任意方阵每行、每列、对角线元素之和。函数中使用了两个循环,分别用来遍历矩阵中的每一行和每一列,并且在循环中判断是否为主对角线或副对角线上的元素,从而求出对应的对角线元素之和。最后在函数中使用 printf 函数打印出每行、每列、对角线元素之和的值。在主函数中定义了一个 `matrix` 数组来存储矩阵的元素,调用 `sumMatrix` 函数求解矩阵每行、每列、对角线元素之和。
用C语言实现:编写函数求任意方阵每行、每列、对角线元素之和。
可以参考以下代码实现:
```c
#include <stdio.h>
#define MAX_SIZE 100
void sum_of_matrix(int arr[][MAX_SIZE], int size) {
int row_sum, col_sum, diagonal_sum, reverse_diagonal_sum;
// 计算每行元素之和
for (int row = 0; row < size; row++) {
row_sum = 0;
for (int col = 0; col < size; col++) {
row_sum += arr[row][col];
}
printf("第 %d 行元素之和为:%d\n", row+1, row_sum);
}
// 计算每列元素之和
for (int col = 0; col < size; col++) {
col_sum = 0;
for (int row = 0; row < size; row++) {
col_sum += arr[row][col];
}
printf("第 %d 列元素之和为:%d\n", col+1, col_sum);
}
// 计算主对角线元素之和
diagonal_sum = 0;
for (int i = 0; i < size; i++) {
diagonal_sum += arr[i][i];
}
printf("主对角线元素之和为:%d\n", diagonal_sum);
// 计算反对角线元素之和
reverse_diagonal_sum = 0;
for (int i = 0; i < size; i++) {
reverse_diagonal_sum += arr[i][size-1-i];
}
printf("反对角线元素之和为:%d\n", reverse_diagonal_sum);
}
int main() {
int arr[MAX_SIZE][MAX_SIZE];
int size;
printf("请输入方阵的大小:");
scanf("%d", &size);
printf("请输入 %d x %d 的矩阵:\n", size, size);
for (int row = 0; row < size; row++) {
for (int col = 0; col < size; col++) {
scanf("%d", &arr[row][col]);
}
}
sum_of_matrix(arr, size);
return 0;
}
```
在此代码中,我们定义了一个 `sum_of_matrix` 函数,该函数接收一个二维数组和数组大小作为参数,然后计算每行、每列、主对角线和反对角线的元素之和,并将结果输出到屏幕上。在 `main` 函数中,我们首先读取方阵的大小,然后读取方阵中的元素,并将它们传递给 `sum_of_matrix` 函数进行处理。
阅读全文