- 定义一个二维数组 a[M][N],并输入,使用:
- 指针数组 int *p[M],获取数组每行的最大值和最小值并打印
- 数组指针 int (* p)[N]对二维数组进行操作,获取数组每行的最大值和最小值
并打印
仅供参考。
#include <stdio.h>
#define M 5
#define N 6
int main(int argc, char *argv[])
{
int a[M][N];
int *p1[M], (*p2)[N];
int max, min;
p2 = a;
for (int i = 0; i < M; i++)
{
p1[i] = a[i];
for (int j = 0; j < N; j++)
{
scanf("%d", &a[i][j]);
}
}
puts("");
//使用指针数组p1操纵
for (int i = 0; i < M; i++)
{
max = *(*(p1 + i) + 0);
min = max;
for (int j = 1; j < N; j++)
{
if (*(*(p1 + i) + j) > max)
max = *(*(p1 + i) + j);
if (*(*(p1 + i) + j) < min)
min = *(*(p1 + i) + j);
}
printf("第%d行 最大值:%d 最小值:%d\n", i + 1, max, min);
}
puts("");
//使用数组指针p2操纵
for (int i = 0; i < M; i++, p2++)
{
max = **p2;
min = **p2;
for (int j = 1; j < N; j++)
{
if (*(*p2 + j) > max)
max = *(*p2 + j);
if (*(*p2 + j) < min)
min = *(*p2 + j);
}
printf("第%d行 最大值:%d 最小值:%d\n", i + 1, max, min);
}
return 0;
}