知识点:用指针找出二维数组中的最大值和最小值,并输出其所在的位置。
思路:先找出最小值,其中*(*(a+i)+j)是二维数组的第i行第j列,然后再找出最大值,办法和最小值一样,找出最大值最小值后,用m和n记录最大值和最小值的位置。
程序比较简单,代码如下:
#include<stdio.h>
#include<windows.h>
void hanshu(int(*a)[3])
{
//最小
int i, j, m, n, max, min;
min = *(*(a + 0) + 0);
for (i = 0; i < 3; i++)
{
for (j = 0; j < 3; j++)
{
if (min > *(*(a + i) + j))
{
min = *(*(a + i) + j);
m = i; n = j;
}
}
}
printf("最小值a[%d][%d]\t最小值:%d\n", m, n, min);
//最大
max = *(*(a + 0) + 0);
for (i = 0; i < 3; i++)
{
for (j = 0; j < 3; j++)
{
if (max < *(*(a + i) + j))
{
max = *(*(a + i) + j);
m = i; n = j;
}
}
}
printf("最大值:a[%d][%d]\t最大值:%d\n",m,n,max);
}
void main()
{
int a[3][3] = { { 2, 0, 1 }, { 6, 3, 4 }, { 5, 7, 8 } };
hanshu(a);
system("pause");
}
根据定义的二维数组输出的结果: