用C语言从键盘输入一个整数二维数组及其维度,查找该数组中的最大值和最小值以及其对应的行列下标。
时间: 2024-10-14 21:06:38 浏览: 38
在C语言中,你可以通过以下步骤从键盘输入一个整数二维数组及其维度,并查找最大值、最小值以及它们的坐标:
1. **输入数组维度**:
首先,你需要获取用户输入的一维数组的行数和列数。例如,可以使用`scanf()`函数读取这两个整数。
```c
int rows, cols;
printf("请输入二维数组的行数: ");
scanf("%d", &rows);
printf("请输入二维数组的列数: ");
scanf("%d", &cols);
```
2. **动态内存分配**:
根据用户输入的维度,动态地创建二维数组。使用`malloc()`函数分配内存。
```c
int** arr = malloc(rows * sizeof(int*)); // 分配行指针
for (int i = 0; i < rows; ++i) {
arr[i] = malloc(cols * sizeof(int)); // 分配每个元素
}
```
3. **输入二维数组**:
使用两层循环遍历数组,逐个读取用户输入的元素。
```c
for (int i = 0; i < rows; ++i) {
for (int j = 0; j < cols; ++j) {
printf("请输入第%d行第%d列的元素: ", i+1, j+1); // +1 因为索引是从0开始的
scanf("%d", &arr[i][j]);
}
}
```
4. **查找最大值和最小值**:
初始化最大值和最小值,然后分别在每一行和每一列寻找。
```c
int max_val = arr[0][0], min_val = arr[0][0];
int max_row = 0, max_col = 0, min_row = 0, min_col = 0;
for (int i = 0; i < rows; ++i) {
for (int j = 0; j < cols; ++j) {
if (arr[i][j] > max_val) {
max_val = arr[i][j];
max_row = i;
max_col = j;
}
if (arr[i][j] < min_val) {
min_val = arr[i][j];
min_row = i;
min_col = j;
}
}
}
```
5. **输出结果**:
最后,打印出找到的最大值、最小值以及它们的坐标。
```c
printf("最大值 %d 对应于行 %d 列 %d\n", max_val, max_row+1, max_col+1); // +1 同上
printf("最小值 %d 对应于行 %d 列 %d\n", min_val, min_row+1, min_col+1);
```
6. **释放内存**:
程序结束后,别忘了使用`free()`释放之前动态分配的内存。
```c
for (int i = 0; i < rows; ++i)
free(arr[i]);
free(arr);
```
阅读全文