/**************************************************/
/*项目名称:用(普通指针)求二维数组中最大值和最小值及所处位置**/
/*编写者:张旭楠 **/
/*编写环境:vs2010 **/
/**************************************************/
#include<stdio.h>
int main()
{
int a[3][4]={{1,2,3,4},{5,6,7,8},{9,10,11,12}};
int max=0,min=0,row1=0,col1=0,row2=0,col2=0;
int *p=a[0];
int i,j;
max=a[0][0];
min=a[0][0];
for(i=0;i<3;i++)
for(j=0;j<4;j++)
if(*(p+i*4+j)>max) //i*m+j其中m使二维数组的列数;使用遍历法;
{
max=*(p+i*4+j);
row1=i;
col1=j;
}
if(*(p+i*4+j)<min)
{
min=*(p+i*4+j);
row2=i;
col2=j;
}
printf("max=a[%d][%d]=%d",row1,col1,max);
printf("\nmin=a[%d][%d]=%d\n",row2,col2,min);
getchar();
getchar();
return 0;
}
/*用数组指针求二维数组的最值以及相对应的下标;*/
#include<stdio.h>
#include<stdlib.h>
int main()
{
int a[3][4]={000000};//对二维数组的初始化;
int i,j,max,min;
int row1=0,col1=0,row2=0,col2=0;
int (*p)[4]; //定义一个数组指针;使它指向二维数组;
p=a;
max=p[0][0];
min=p[0][0];
printf("请输入二维数组a:");
for(i=0;i<3;i++)
{
for(j=0;j<4;j++)
{
scanf_s("%d",*(p+i)+j); //使用循环输入a[3][4]二维数组;
}
}
for(i=0;i<3;i++)
{
for(j=0;j<4;j++)
{
if(*(*(p+i)+j)>max)
{
max=*(*(p+i)+j);
row1=i;
col1=j;
}
if(*(*(p+i)+j)<min)
{
min=*(*(p+i)+j);
row2=i;
col2=j;
}
}
}
printf("max=a[%d][%d]=%d",row1,col1,max);
printf("min=a[%d][%d]=%d",row2,col2,min);
system("pause");
return 0;
}