c语言二维数组求最大两个元素,并求在几行几列
时间: 2024-02-20 15:02:36 浏览: 73
在上一个问题的基础上,我们可以通过记录最大元素和次大元素的行列下标,来求出它们在二维数组中的位置。具体的实现方式如下所示:
```c
#include <stdio.h>
int main() {
int arr[3][3] = {{1, 5, 3}, {8, 4, 2}, {7, 9, 6}};
int max1 = arr[0][0], max2 = arr[0][1];
int row1 = 0, col1 = 0, row2 = 0, col2 = 1;
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 3; j++) {
if (arr[i][j] > max1) {
max2 = max1;
row2 = row1;
col2 = col1;
max1 = arr[i][j];
row1 = i;
col1 = j;
} else if (arr[i][j] > max2 && arr[i][j] != max1) {
max2 = arr[i][j];
row2 = i;
col2 = j;
}
}
}
printf("The first maximum element is %d, located at [%d][%d]\n", max1, row1, col1);
printf("The second maximum element is %d, located at [%d][%d]\n", max2, row2, col2);
return 0;
}
```
这段代码中,我们新增了四个变量 `row1`、`col1`、`row2` 和 `col2`,用于记录最大元素和次大元素在二维数组中的行列下标。在双重循环中,我们遍历二维数组中的每个元素,如果当前元素比 `max1` 大,则将 `max2`、`row2` 和 `col2` 更新为 `max1`、`row1` 和 `col1`,再将 `max1`、`row1` 和 `col1` 更新为当前元素和它的行列下标。如果当前元素比 `max2` 大但不等于 `max1`,则将 `max2`、`row2` 和 `col2` 更新为当前元素和它的行列下标。最终输出 `max1`、`row1`、`col1`、`max2`、`row2` 和 `col2` 即可。
阅读全文