按如下函数原型编程从键盘输入一个m行n列的二维数组,然后计算数组中元素的最大值及其所在的行列下标值。其中,m和n的值由用户键盘输入。已知m和n的值都不超过10。 void InputArray(int *p, int m, int n); int FindMax(int *p, int m, int n, int *pRow, int *pCol);
时间: 2023-05-13 21:04:23 浏览: 224
编写一个在具有m行n列的二维数组各元素中找出最大元和最小元并显示在屏幕上的函数模板,并通过主函数对它进行调用以验证其正确性。例如,可设计该函数模板的原型为:
5星 · 资源好评率100%
可以使用以下代码实现:
void InputArray(int *p, int m, int n) {
for (int i = 0; i < m; i++) {
for (int j = 0; j < n; j++) {
scanf("%d", p + i * n + j);
}
}
}
int FindMax(int *p, int m, int n, int *pRow, int *pCol) {
int maxVal = *p;
*pRow = 0;
*pCol = 0;
for (int i = 0; i < m; i++) {
for (int j = 0; j < n; j++) {
if (*(p + i * n + j) > maxVal) {
maxVal = *(p + i * n + j);
*pRow = i;
*pCol = j;
}
}
}
return maxVal;
}
注意,这里使用了指针来表示二维数组,p + i * n + j 表示第 i 行第 j 列的元素。在 FindMax 函数中,使用了两个指针来记录最大值所在的行列下标。
阅读全文