关于二维数组的问题呃呃

定义类型为int的MxN的矩阵,用二维数组array表述,通过rand()进行赋值, seed是123。

  1. 打印每个数组下标的内存地址(注:使用%p进行打印)
    输出要求,每个地址为16进制打印,显示为0x…,固定为4byte。如地址0x123显示为0x00000123(PC及可能是64bit)
    Array数组元素的地址如下:
    array[0] add(0)… add(N-1)
    array[M-1]add(0)… add(N-1)
  2. 打印数组在内存中占用的字节数
  3. 对该矩阵进行转置,然后输出
  4. 保留该矩阵的右上三角进行输出
  5. 保留该矩阵的左下三角进行输出

为了满足题目的要求,我们需要以下步骤来完成:
定义一个MxN的二维数组,类型为int。
使用rand()函数进行赋值,并设置seed为123。
遍历数组的每一个元素,使用%p进行打印,并输出其内存地址。
输出数组在内存中占用的字节数。
对该矩阵进行转置,并输出。
保留该矩阵的右上三角进行输出。
保留该矩阵的左下三角进行输出。
代码如下:

#include <stdio.h>
#include <stdlib.h>

#define M 4
#define N 5

int main()
{
    int array[M][N];
    int i, j;

    // 使用rand()函数进行赋值,并设置seed为123
    srand(123);
    for (i = 0; i < M; i++) {
        for (j = 0; j < N; j++) {
            array[i][j] = rand();
        }
    }

    // 遍历数组的每一个元素,使用%p进行打印,并输出其内存地址
    for (i = 0; i < M; i++) {
        for (j = 0; j < N; j++) {
            printf("array[%d][%d] address: %p\n", i, j, &array[i][j]);
        }
    }

    // 输出数组在内存中占用的字节数
    printf("array size: %ld bytes\n", sizeof(array));

    // 对该矩阵进行转置,并输出
    printf("Transpose:\n");
    for (i = 0; i < N; i++) {
        for (j = 0; j < M; j++) {
            printf("%d ", array[j][i]);
        }
        printf("\n");
}

// 保留该矩阵的右上三角进行输出
printf("Right upper triangle:\n");
for (i = 0; i < M; i++) {
    for (j = i; j < N; j++) {
        printf("%d ", array[i][j]);
    }
    printf("\n");
}

// 保留该矩阵的左下三角进行输出
printf("Left lower triangle:\n");
for (i = 0; i < M; i++) {
    for (j = 0; j <= i; j++) {
        printf("%d ", array[i][j]);
    }
    printf("\n");
}

return 0;
}

这段代码将初始化一个4x5的int型二维数组,使用rand()函数进行赋值,并设置seed为123。接着,遍历数组的每一个元素,使用%p进行打印,并输出其内存地址。然后,输出数组在内存中占用的字节数。接下来,对该矩阵进行转置,并输出。最后,保留该矩阵的右上三角和左下三角,分别进行输出。
仅供参考