实验1——二维数组求和 设置一个n*m的二维数组,使其最后一行元素值是其所对应列的元素和,最后一列元素值是其所对应行的元素和,而表中最后一个元素是除最后一行和一列外的所有元素的总和。
时间: 2024-11-03 20:18:40 浏览: 7
实验1要求我们计算一个给定的n×m二维数组(矩阵)的特定属性。这个矩阵的最后一行元素之和应等于该行所有元素之和,最后一列元素之和应等于该列所有元素之和,而矩阵右下角的元素则是除了最后一行和最后一列之外的所有元素之和。
以下是一个简单的C语言程序,用于实现这个功能:
```c
#include <stdio.h>
// 计算一行或一列的和
int sum_row(int row[], int size) {
int total = 0;
for (int i = 0; i < size; ++i) {
total += row[i];
}
return total;
}
// 二维数组求和
void array_sum(int arr[n][m], int n, int m) {
// 最后一行的和
int last_row_sum = sum_row(arr[n - 1], m);
// 最后一列的和
int last_col_sum = 0;
for (int j = 0; j < m; ++j) {
last_col_sum += arr[n - 1][j];
}
// 右下角的元素,即除了最后一行和最后一列的和
int rest_sum = 0;
for (int i = 0; i < n - 1; ++i) {
for (int j = 0; j < m - 1; ++j) {
rest_sum += arr[i][j];
}
}
// 打印结果
printf("Last row sum: %d\n", last_row_sum);
printf("Last column sum: %d\n", last_col_sum);
printf("Sum of all elements except the last row and column: %d\n", rest_sum);
}
// 主函数
int main() {
int n, m;
printf("Enter number of rows (n): ");
scanf("%d", &n);
printf("Enter number of columns (m): ");
scanf("%d", &m);
// 初始化一个n*m的二维数组
int arr[n][m];
for (int i = 0; i < n; i++) {
for (int j = 0; j < m; j++) {
printf("Enter element at (%d,%d): ", i, j);
scanf("%d", &arr[i][j]);
}
}
array_sum(arr, n, m);
return 0;
}
```
在这个程序中,`sum_row`函数计算了一维数组的和,`array_sum`函数根据题目需求计算并输出指定的结果。主函数负责获取用户输入的矩阵尺寸和元素值。
阅读全文