fork download
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. int main() { int rows, cols;
  4. // 1. 行数と列数の入力を促す
  5. printf("行数を入力してください: ");
  6. scanf("%d", &rows);
  7. printf("列数を入力してください: ");
  8. scanf("%d", &cols);
  9. // 2. 二次元配列(ポインタの配列)の動的メモリ確保
  10. int **matrix = (int **)malloc(rows * sizeof(int *));
  11. for (int i = 0; i < rows; i++) {
  12. matrix[i] = (int *)malloc(cols * sizeof(int)); }
  13. // メモリ確保のチェック
  14. if (matrix == NULL) {
  15. printf("メモリ確保に失敗しました。\n");
  16. return 1;}
  17. // 3. 各要素の数値入力
  18. printf("\n--- 各要素の数値を入力してください ---\n");
  19. for (int i = 0; i < rows; i++) {
  20. for (int j = 0; j < cols; j++) {
  21. printf("要素 [%d][%d]: ", i, j);
  22. scanf("%d", &matrix[i][j]);}}
  23. // 4. 入力された二次元配列の表示
  24. printf("\n--- 入力された二次元配列 ---\n");
  25. for (int i = 0; i < rows; i++) {
  26. for (int j = 0; j < cols; j++) {
  27. printf("%d\t", matrix[i][j]);}
  28. printf("\n");}
  29. // 5. 解放処理(メモリリーク防止)
  30. for (int i = 0; i < rows; i++) {
  31. free(matrix[i]);}
  32. free(matrix);
  33. return 0;}
Success #stdin #stdout 0.01s 5316KB
stdin
Standard input is empty
stdout
行数を入力してください: 列数を入力してください: 
--- 各要素の数値を入力してください ---

--- 入力された二次元配列 ---