c语言用指针找二维数组中的最大值和下标

如题所述

第1个回答  2015-05-24
#include <stdio.h>

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<m; i++)
for(j=0; j<n; j++)
scanf("%d",(p+i*n+j));
}
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<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;
}
第2个回答  推荐于2016-06-17
#include <stdio.h>
#include <stdlib.h>
void InputArray(int *p,int m,int n){
int i,j;
printf("Input %d*%d array\n",m,n);
for(i=0;i<m;i++)
for(j=0;j<n;j++)
scanf("%d",p+i*n+j);

}
int FindMax(int *p,int m,int n,int *pRow,int *pCol){
int i,j;
*pRow=0;*pCol=0;
for(i=0;i<m;i++)
for(j=0;j<n;j++)
if (*(p+*pRow*n+*pCol)<*(p+i*n+j)){
*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);

}本回答被提问者采纳
第3个回答  2023-03-11
c语言用指针找二维数组中的最大值和下标的一种可能的代码如下:
#include <stdio.h>#define ROW 3 //定义二维数组的行数#define COL 4 //定义二维数组的列数//定义一个函数,用指针找出二维数组中的最大值和下标void find_max(int (*p)[COL], int *max, int *row, int *col){ int i, j; //循环变量
*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;
}
相似回答