关于#c语言#的问题:数组指针 int (* p)[N]对二维数组进行操作,获取数组每行的最大值和最小值并打印

  1. 定义一个二维数组 a[M][N],并输入,使用:
  1. 指针数组 int *p[M],获取数组每行的最大值和最小值并打印
  2. 数组指针 int (* p)[N]对二维数组进行操作,获取数组每行的最大值和最小值
    并打印

仅供参考。

img

#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;
}

您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!
PS:问答VIP年卡 【限时加赠:IT技术图书免费领】,了解详情>>> https://vip.csdn.net/askvip?utm_source=1146287632