c语言,由键盘输入n行,m列个整数放入二维数组中,编写函数,用指针做函数参数的方式,求该二维数组中的最大值和最小值,在主函数中将最大值和最小值输出。
时间: 2023-11-15 13:06:25 浏览: 198
可以按照以下步骤实现:
1. 在主函数中定义一个 n 行 m 列的二维数组,并使用循环从键盘输入每个元素的值。
2. 定义一个函数,函数接收二维数组的指针以及行列数作为参数,然后在函数中使用两个变量分别记录最大值和最小值,再使用双重循环遍历数组,比较每个元素的值与最大值和最小值,更新这两个变量的值。
3. 在主函数中调用该函数,并将最大值和最小值输出。
以下是代码实现:
```c
#include <stdio.h>
void findMinMax(int *arr, int rows, int cols, int *max, int *min) {
*max = *min = *arr; // 初始化最大值和最小值为数组第一个元素的值
for (int i = 0; i < rows; i++) {
for (int j = 0; j < cols; j++) {
int val = *(arr + i * cols + j); // 计算当前元素的值
if (val > *max) { // 如果当前元素的值比最大值还大,更新最大值
*max = val;
}
if (val < *min) { // 如果当前元素的值比最小值还小,更新最小值
*min = val;
}
}
}
}
int main() {
int n, m;
printf("请输入行数和列数:\n");
scanf("%d%d", &n, &m);
int arr[n][m];
printf("请输入每个元素的值:\n");
for (int i = 0; i < n; i++) {
for (int j = 0; j < m; j++) {
scanf("%d", &arr[i][j]);
}
}
int max, min;
findMinMax(&arr[0][0], n, m, &max, &min);
printf("最大值为:%d\n最小值为:%d\n", max, min);
return 0;
}
```
阅读全文