c语言输入一个二维数组,可输出该数组的最小数下标以及主对角线之和和次对角线之和,以及每行列之和
时间: 2024-12-08 20:18:41 浏览: 13
在C语言中,为了实现这个功能,你可以遵循以下步骤:
1. 定义一个函数接收二维数组作为参数,并返回最小值的行号和列号、主对角线和次对角线的和以及每行和每列的总和。
```c
#include <stdio.h>
// 函数声明
void calculate_sum_and_indices(int arr[][size], int rows, int cols);
int main() {
int size;
printf("Enter the size of the array (number of rows and columns): ");
scanf("%d", &size);
int arr[size][size]; // 初始化二维数组
printf("Enter the elements of the array:\n");
for (int i = 0; i < size; i++) {
for (int j = 0; j < size; j++) {
scanf("%d", &arr[i][j]);
}
}
// 调用计算函数
calculate_sum_and_indices(arr, size, size);
return 0;
}
// 计算函数
void calculate_sum_and_indices(int arr[][size], int rows, int cols) {
int min_val = arr[0][0];
int min_row = 0, min_col = 0;
int main_diag_sum = 0, sub_diag_sum = 0;
// 找到最小值及其索引
for (int i = 0; i < rows; i++) {
for (int j = 0; j < cols; j++) {
if (arr[i][j] < min_val) {
min_val = arr[i][j];
min_row = i;
min_col = j;
}
}
}
// 计算主对角线和次对角线之和
for (int i = 0; i < rows; i++) {
main_diag_sum += arr[i][i];
sub_diag_sum += arr[i][rows - 1 - i]; // 次对角线从左上到右下
}
// 输出结果
printf("Minimum value: %d at row %d, column %d\n", min_val, min_row + 1, min_col + 1);
printf("Main diagonal sum: %d\n", main_diag_sum);
printf("Sub-diagonal sum: %d\n", sub_diag_sum);
// 计算每行和每列的和
for (int i = 0; i < rows; i++) {
int row_sum = 0;
for (int j = 0; j < cols; j++) {
row_sum += arr[i][j];
}
printf("Row %d sum: %d\n", i + 1, row_sum);
int col_sum = 0;
for (int j = 0; j < rows; j++) {
col_sum += arr[j][i];
}
printf("Column %d sum: %d\n", i + 1, col_sum);
}
}
```
阅读全文