58 lines
1.5 KiB
C
58 lines
1.5 KiB
C
|
// 编写一个程序,要求用户输入两个整数m和n,然后动态创建一个m行n列的二维整数数组。通过循环将数组的元素赋值为m行n列的连续整数。最后打印数组的内容。
|
|||
|
#include <stdio.h>
|
|||
|
#include <stdlib.h>
|
|||
|
|
|||
|
int **create_nums_arr(int m, int n)
|
|||
|
{
|
|||
|
// 创建二维数组
|
|||
|
int **nums_arr = (int **)malloc(m * sizeof(int *)); // 先给二维数组分配内存,每一行的内存在下面分配
|
|||
|
if (NULL == nums_arr)
|
|||
|
{
|
|||
|
perror("malloc");
|
|||
|
exit(-1);
|
|||
|
}
|
|||
|
|
|||
|
for (int i = 0; i < m; i++)
|
|||
|
{
|
|||
|
nums_arr[i] = (int *)malloc(n * sizeof(int *)); // 给每一行分配内存
|
|||
|
if (NULL == nums_arr[i])
|
|||
|
{
|
|||
|
perror("malloc");
|
|||
|
exit(-1);
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
int i = 0;
|
|||
|
for (int j = 0; j < m; j++)
|
|||
|
{
|
|||
|
for (int k = 0; k < n; k++)
|
|||
|
nums_arr[j][k] = i++; // 从 0 开始赋值
|
|||
|
}
|
|||
|
|
|||
|
return nums_arr; // 返回二维数组
|
|||
|
}
|
|||
|
|
|||
|
int main()
|
|||
|
{
|
|||
|
int m, n;
|
|||
|
printf("请输入两个整数 m 和 n: ");
|
|||
|
scanf("%d%d", &m, &n);
|
|||
|
int **nums = create_nums_arr(m, n); // 创建二维数组
|
|||
|
|
|||
|
printf("二维数组的内容为: \n");
|
|||
|
for (int i = 0; i < m; i++)
|
|||
|
{
|
|||
|
for (int j = 0; j < n; j++)
|
|||
|
printf("%d ", nums[i][j]);
|
|||
|
printf("\n");
|
|||
|
}
|
|||
|
|
|||
|
// 释放内存
|
|||
|
for (int i = 0; i < m; i++)
|
|||
|
{
|
|||
|
free(nums[i]); // 释放每一行的内存
|
|||
|
}
|
|||
|
free(nums); // 再释放二维数组的内存
|
|||
|
|
|||
|
return 0;
|
|||
|
}
|