C语言用指针编程实现3X4的二维数组的元素读入以及求此二维数组的最大值及最大值下标 请用以下函数实现: void Input(int *p,int m, int n); /*数组元素读入函数*/ int FindMax(int *p, int m, int n, int *pRow, int *pCol); /*求最大值及下标函数*/ 若存在若干个相同最大元素,则按照第一次出现的最大值的下标输出。 ***输入提示信息:"Please input your data:\n" ***输入格式要求:无格式要求 ***输出格式要求:"The maximum is %d, which is in row %d, colum %d\n"
时间: 2023-07-23 08:06:35 浏览: 179
以下是代码实现:
```
#include <stdio.h>
void Input(int *p, int m, int n);
int FindMax(int *p, int m, int n, int *pRow, int *pCol);
int main()
{
int data[3][4];
int max, row, col;
printf("Please input your data:\n");
Input(&data[0][0], 3, 4); // 传入二维数组的首地址
max = FindMax(&data[0][0], 3, 4, &row, &col); // 传入二维数组的首地址以及最大值和下标的指针
printf("The maximum is %d, which is in row %d, colum %d\n", max, row, col);
return 0;
}
void Input(int *p, int m, int n)
{
int i, j;
for (i = 0; i < m; i++)
{
for (j = 0; j < n; j++)
{
scanf("%d", p + i * n + j); // 对于二维数组,使用 p + i * n + j 来访问元素
}
}
}
int FindMax(int *p, int m, int n, int *pRow, int *pCol)
{
int max = *p; // 初始化为第一个元素的值
int i, j;
for (i = 0; i < m; i++)
{
for (j = 0; j < n; j++)
{
if (*(p + i * n + j) > max)
{
max = *(p + i * n + j);
*pRow = i;
*pCol = j;
}
}
}
return max;
}
```
解释:在 `Input` 函数中,我们使用指针 `p` 来访问二维数组的元素,其实现方式为 `p + i * n + j`,其中 `i` 和 `j` 分别表示元素的行下标和列下标。
在 `FindMax` 函数中,我们同样使用指针 `p` 来访问二维数组的元素,并且使用指针 `pRow` 和 `pCol` 来保存最大值的行下标和列下标。注意在初始化最大值时,我们应该使用第一个元素的值来进行初始化。
阅读全文
相关推荐
















