用函数求一个N阶方阵右下三角元素的和(包括副对角线上的元素);c语言
时间: 2025-01-12 07:54:13 浏览: 48
在C语言中,计算一个N阶方阵右下三角元素(包括副对角线)的和,可以采用动态内存分配和两层循环的方式。这里假设矩阵存储在一个二维数组`matrix`中。以下是相应的算法:
```c
#include <stdio.h>
#include <stdlib.h>
// 函数声明
double sum_of_lower_right_triangle(int N, double matrix[N][N]);
int main() {
int N;
printf("请输入矩阵的维度(N * N):");
scanf("%d", &N);
if (N <= 0) {
printf("输入错误,矩阵尺寸必须大于0.\n");
return 1;
}
// 动态分配内存
double* matrix = malloc(N * sizeof(double*)];
for (int i = 0; i < N; ++i) {
matrix[i] = malloc(N * sizeof(double));
}
// 输入矩阵元素
printf("请输入矩阵元素(按行优先顺序):\n");
for (int i = 0; i < N; ++i) {
for (int j = 0; j < N; ++j) {
scanf("%lf", &matrix[i][j]);
}
}
// 计算并输出右下三角和
double sum = sum_of_lower_right_triangle(N, matrix);
printf("矩阵右下三角(包括副对角线)的和是:%lf\n", sum);
// 清理内存
for (int i = 0; i < N; ++i) {
free(matrix[i]);
}
free(matrix);
return 0;
}
// 函数实现 - 右下三角元素和
double sum_of_lower_right_triangle(int N, double matrix[N][N]) {
double sum = 0;
for (int i = 0; i < N; ++i) { // 第一层循环:行
for (int j = i + 1; j < N; ++j) { // 第二层循环:列,从当前行的下一个位置开始
sum += matrix[i][j]; // 包括副对角线,因为j=i+1
}
}
return sum;
}
```
阅读全文