用C语言找出二维数组的最大元素及它所在的行与列,并算出平均值?

如题所述

#include <stdio.h>
#define ROWS 3
#define COLS 3
int main() {
// 定义二维数组
int arr[ROWS][COLS] = {
{1, 2, 3},
{4, 5, 6},
{7, 8, 9}
};
// 初始化最大值、最大值所在的行与列、总和
int max = arr[0][0];
int max_row = 0;
int max_col = 0;
int sum = 0;
// 遍历二维数组,找出最大值及其所在行与列,计算总和
for (int i = 0; i < ROWS; i++) {
for (int j = 0; j < COLS; j++) {
if (arr[i][j] > max) {
max = arr[i][j];
max_row = i;
max_col = j;
}
sum += arr[i][j];
}
}
// 计算平均值
float average = (float)sum / (ROWS * COLS);
// 输出结果
printf("最大值: %d\n", max);
printf("最大值所在行: %d\n", max_row + 1);
printf("最大值所在列: %d\n", max_col + 1);
printf("平均值: %.2f\n", average);
return 0;
}
温馨提示:答案为网友推荐,仅供参考
第1个回答  2023-04-17
你可以使用嵌套循环遍历二维数组,依次比较每个元素与当前最大值的大小关系,并记录下最大值及其所在的行列索引。然后再遍历一遍数组,统计所有元素的和,除以数组大小即可得平均值。以下是示例代码:
```c
#include <stdio.h>
#define ROWS 3
#define COLS 4
int main() {
int arr[ROWS][COLS] = {{1, 2, 3, 4}, {5, 6, 7, 8}, {9, 10, 11, 12}};
int max = arr[0][0], row = 0, col = 0, sum = 0;
for (int i = 0; i < ROWS; i++) {
for (int j = 0; j < COLS; j++) {
if (arr[i][j] > max) {
max = arr[i][j];
row = i;
col = j;
}
sum += arr[i][j];
}
}
printf("Max element: %d\n", max);
printf("Row index: %d\n", row);
printf("Col index: %d\n", col);
printf("Average: %.2f\n", (float)sum/(ROWS*COLS));
return 0;
}
```
相似回答