#include<stdio.h> int main(void) { /*********Begin*********/ int a[10][10]; int m,n,max,row,col;//row行,col列 int i,j; printf("Input m, n:"); scanf("%d,%d",&m,&n); printf("Input %d*%d array:\n",m,n); printf("max=%d, row=%d, col=%d",max,row,col); /*********End**********/ return 0; }
时间: 2025-05-31 19:45:21 浏览: 9
### C语言实现二维数组找最大值及行列位置
以下是一个完整的C语言代码示例,用于输入一个二维数组,并输出其中的最大值及其所在的行号和列号。
```c
#include <stdio.h>
#define MAX_SIZE 10 // 定义最大数组尺寸
int main() {
int x[MAX_SIZE][MAX_SIZE], n, m; // 声明二维数组及相关变量
int max_value, row_max, col_max;
printf("请输入矩阵的行数和列数(不超过%d):", MAX_SIZE);
scanf("%d %d", &n, &m);
if (n > MAX_SIZE || m > MAX_SIZE) { // 检查是否超出预设大小
printf("输入的维度超出了允许范围!\n");
return 1;
}
printf("请输入%d×%d的矩阵元素:\n", n, m);
for (int i = 0; i < n; i++) { // 循环读取二维数组数据
for (int j = 0; j < m; j++) {
scanf("%d", &x[i][j]);
}
}
// 初始化最大值为第一个元素
max_value = x[0][0];
row_max = 0;
col_max = 0;
// 遍历整个二维数组寻找最大值及其位置
for (int i = 0; i < n; i++) {
for (int j = 0; j < m; j++) {
if (x[i][j] > max_value) { // 更新最大值及对应的位置
max_value = x[i][j];
row_max = i;
col_max = j;
}
}
}
// 输出结果
printf("最大值为:%d\n", max_value);
printf("所在位置:第%d行,第%d列\n", row_max + 1, col_max + 1);
return 0;
}
```
#### 关键点解析
- **初始化**:在开始遍历之前,将`max_value`设置为数组的第一个元素 `x[0][0]` 并记录其初始位置 `(row_max=0,col_max=0)`[^1]。
- **双重循环**:外部循环负责遍历行索引,内部循环负责遍历列索引。这样可以覆盖整个二维数组中的每一个元素[^2]。
- **更新条件**:当发现当前元素大于已知的最大值时,立即更新最大值以及它的行列坐标[^3]。
---
### 示例运行流程
假设用户输入如下:
```
请输入矩阵的行数和列数(不超过10):3 4
请输入3×4的矩阵元素:
1 2 3 4
5 6 7 8
9 10 11 12
```
程序会输出:
```
最大值为:12
所在位置:第3行,第4列
```
---
#### 注意事项
- 若输入的行或列超过预先设定的最大值 (`MAX_SIZE`) ,应提前检测并给出提示信息防止溢出风险[^4]。
- 对于负数构成的数组也能正常工作,因为比较逻辑基于数值本身而非绝对值[^5]。
阅读全文