用指针求二维数组中最大值最小值及其所在行列下标

2024-11-30 22:51:07
推荐回答(2个)
回答1:

#include
#include

void main()
{
int i,j;
int NC=6, NR=3;
int **a;
int a_max,a_min,i_max,i_min,j_max,j_min;

a = (int **) malloc(sizeof(int *) * NR);
for (j=0;ja[j] = (int *) malloc(sizeof(int) * NC);
}

// 请用 scanf 输入数据,我这里简单赋值了
for (j=0;ja[j][i] = (j+1)*100 + i;
}

for (j=0;jfor (i=0;iprintf("\n");
}

a_max= **a;
a_min= **a;
i_max=i_min=j_max=j_min=0;
for (j=0;jfor (i=0;i{
if (**(a+j)+i > a_max) { i_max = i; j_max=j,a_max = **(a+j)+i; };
if (**(a+j)+i< a_min) { i_min = i; j_min=j,a_min = **(a+j)+i; };
}

printf("Max: j=%d i=%d a=%d\n",j_max,i_max, **(a+j_max)+i_max );
printf("Min: j=%d i=%d a=%d\n",j_min,i_min, **(a+j_min)+i_min );

}

语句里 可以用 a[j][i] 代替 **(a+j)+i 的!

回答2:

问楼上的:
a[j][i]不是等价于*(*(a+j)+i)么??