fork download
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. void
  5. pp(int *a, int r, int c, const char *msg)
  6. {
  7. int i, j;
  8. printf("%s\n", msg);
  9. for (i = 0; i < r; ++i) {
  10. for (j = 0; j < c; ++j) {
  11. printf("%4d", *a++);
  12. }
  13. puts("");
  14. }
  15. puts("");
  16. }
  17.  
  18. int
  19. main()
  20. {
  21. int a[][2] = {
  22. {1, 2},
  23. {3, 4},
  24. {5, 6}
  25. };
  26. int b[][3] = {
  27. {1, 2, 4},
  28. {3, 6, 9}
  29. };
  30.  
  31. int row = sizeof(a) / sizeof(a[0]);
  32. int col = sizeof(a[0]) / sizeof(int);
  33. int *c = (int *) malloc(sizeof(int) * row * row);
  34. int i;
  35.  
  36. for (i = 0; i < row * row; ++i) {
  37. int w1 = i / row * col, w2 = i % row;
  38. c[i] = *(*a + w1) * *(*b + w2);
  39. w1 += 1;
  40. w2 += row;
  41. c[i] += *(*a + w1) * *(*b + w2);
  42. }
  43.  
  44. pp(*a, 3, 2, "行列xを表示");
  45. pp(*b, 2, 3, "行列yを表示");
  46. pp(c, 3, 3, "行列xとyの積を表示");
  47.  
  48. return 0;
  49. }
Success #stdin #stdout 0.02s 1808KB
stdin
Standard input is empty
stdout
行列xを表示
   1   2
   3   4
   5   6

行列yを表示
   1   2   4
   3   6   9

行列xとyの積を表示
   7  14  22
  15  30  48
  23  46  74