#include
void InputArray(int *p,int m,int n);
int FindMax(int *p,int m,int n,int *pRow,int *pCol);
int main(){
int a[10][10];
int m,n;
int max,r,c;
printf("Input m,n:\n");
scanf("%d,%d",&m,&n);
InputArray(a[0],m,n);
max=FindMax(a[0],m,n,&r,&c);
printf("max=%d,row=%d,col=%d\n",max,r,c);
return 0;
}
void InputArray(int *p,int m,int n){
int i,j;
printf("Input %d*%d array:\n",m,n);
for(i=0; i
}
int FindMax(int *p,int m,int n,int *pRow,int *pCol){
int i,j,max=*p;
*pRow=0;
*pCol=0;
for(i=0; i
max=*(p+i*n+j);
*pRow=i;
*pCol=j;
}
return max;
}
#include
#include
void InputArray(int *p,int m,int n){
int i,j;
printf("Input %d*%d array\n",m,n);
for(i=0;i
}
int FindMax(int *p,int m,int n,int *pRow,int *pCol){
int i,j;
*pRow=0;*pCol=0;
for(i=0;i
*pRow=i;
*pCol=j;
}
return *(p+*pRow*n+*pCol);
}
int main(){
int *p;
int m,n,max,pRow,pCol;
printf("Input m,n:\n");
scanf("%d,%d",&m,&n);
p=(int *)malloc(sizeof(int)*m*n);
InputArray(p,m,n);
max=FindMax(p,m,n,&pRow,&pCol);
printf("max=%d,row=%d,col=%d\n",max,pRow,pCol);
}
c语言用指针找二维数组中的最大值和下标的一种可能的代码如下:
#include
*max = p[0][0]; //假设第一个元素是最大值
*row = 0; //假设第一个元素所在行为0
*col = 0; //假设第一个元素所在列为0
for (i = 0; i < ROW; i++) //遍历每一行
{ for (j = 0; j < COL; j++) //遍历每一列
{ if (p[i][j] > *max) //如果当前元素大于最大值
{
*max = p[i][j]; //更新最大值
*row = i; //更新最大值所在行
*col = j; //更新最大值所在列
}
}
}
}int main(){ int a[ROW][COL]; //定义一个二维数组
int max, row, col; //定义三个变量,用来存储最大值和下标
int i, j; //循环变量
printf("请输入%d*%d个整数:\n", ROW, COL); for (i = 0; i < ROW; i++) //输入二维数组的元素
{ for (j = 0; j < COL; j++)
{ scanf("%d", &a[i][j]);
}
}
find_max(a, &max, &row, &col); //调用函数,传入二维数组名和三个变量的地址
printf("二维数组中的最大值是%d,位于第%d行第%d列。\n", max, row + 1, col + 1); return 0;
}