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