#include <stdio.h>
#include <stdlib.h>
int main() { int rows, cols;
// 1. 行数と列数の入力を促す
printf("行数を入力してください: ");
scanf("%d", &rows);
printf("列数を入力してください: ");
scanf("%d", &cols);
// 2. 二次元配列（ポインタの配列）の動的メモリ確保
int **matrix = (int **)malloc(rows * sizeof(int *));
for (int i = 0; i < rows; i++) {
matrix[i] = (int *)malloc(cols * sizeof(int)); }
// メモリ確保のチェック
if (matrix == NULL) {
printf("メモリ確保に失敗しました。\n");
return 1;}
// 3. 各要素の数値入力
printf("\n--- 各要素の数値を入力してください ---\n");
for (int i = 0; i < rows; i++) {
for (int j = 0; j < cols; j++) {
printf("要素 [%d][%d]: ", i, j);
scanf("%d", &matrix[i][j]);}}
// 4. 入力された二次元配列の表示
printf("\n--- 入力された二次元配列 ---\n");
for (int i = 0; i < rows; i++) {
for (int j = 0; j < cols; j++) {
printf("%d\t", matrix[i][j]);}
printf("\n");}
// 5. 解放処理（メモリリーク防止）
for (int i = 0; i < rows; i++) {
free(matrix[i]);}
free(matrix);
return 0;}