fork download
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. // 必要な変数を追加してもOK
  5.  
  6. int main() {
  7. int i, j;
  8. int a, b;
  9. int **mat;
  10.  
  11. // 行数と列数を入力
  12. scanf("%d %d", &a, &b);
  13.  
  14. // 2次元配列の動的確保
  15. mat = (int**)malloc(sizeof(int*) * a); // 行のためのメモリ確保
  16. if (mat == NULL) {
  17. printf("Memory allocation failed!\n");
  18. return 1;
  19. }
  20.  
  21. // 各行に対して列のためのメモリ確保
  22. for (i = 0; i < a; i++) {
  23. mat[i] = (int*)malloc(sizeof(int) * b); // 列のメモリ確保
  24. if (mat[i] == NULL) {
  25. printf("Memory allocation failed!\n");
  26. return 1;
  27. }
  28. }
  29.  
  30. // 2次元配列に値を代入
  31. for (i = 0; i < a; i++) {
  32. for (j = 0; j < b; j++) {
  33. scanf("%d", &mat[i][j]); // 各要素に値を入力
  34. }
  35. }
  36.  
  37. // 配列の内容を表示
  38. for (i = 0; i < a; i++) {
  39. for (j = 0; j < b; j++) {
  40. printf("%d ", mat[i][j]);
  41. }
  42. printf("\n");
  43. }
  44.  
  45. // メモリの解放
  46. for (i = 0; i < a; i++) {
  47. free(mat[i]); // 各行に対して解放
  48. }
  49. free(mat); // 行のポインタ自体を解放
  50.  
  51. return 0;
  52. }
  53.  
Success #stdin #stdout 0s 5236KB
stdin
2 3
stdout
0 0 0 
0 0 0