fork download
  1. /* Task043 */
  2. /* 2次元配列(行列の乗算) */
  3. /* 2019.10.17 S.Konno */
  4.  
  5. #include<stdio.h>
  6. #define ARRAYSIZE 3
  7.  
  8. int main(void){
  9. int arrayA[ARRAYSIZE][ARRAYSIZE] = {{1,1,1},{2,2,2},{3,3,3}};
  10. int arrayB[ARRAYSIZE][ARRAYSIZE] = {{1,1,1},{2,2,2},{3,3,3}};
  11. int arrayC[ARRAYSIZE][ARRAYSIZE];
  12. int arrayD[ARRAYSIZE][ARRAYSIZE];
  13. int i,j,k;
  14. int a,b=0;
  15.  
  16. for(i=0;i<ARRAYSIZE;i++){
  17. for(j=0;j<ARRAYSIZE;j++){
  18. arrayC[j][i] = arrayA[i][j];
  19. }
  20. }
  21.  
  22. for(i=0;i<ARRAYSIZE;i++){
  23. for(j=0;j<ARRAYSIZE;j++){
  24. a = 0;
  25. for(k=0;k<ARRAYSIZE;k++){
  26. a = a + arrayC[i][k] * arrayB[k][j];
  27. arrayD[i][j] = a;
  28. }
  29. }
  30. }
  31.  
  32. for(i=0;i<ARRAYSIZE;i++){
  33. for(j=0;j<ARRAYSIZE;j++)
  34. printf("%3d",arrayC[i][j]);
  35. if(i == ARRAYSIZE/2)
  36. printf(" × ");
  37. else
  38. printf(" ");
  39. for(j=0;j<ARRAYSIZE;j++)
  40. printf("%3d",arrayB[i][j]);
  41. if(i == ARRAYSIZE/2)
  42. printf(" = ");
  43. else
  44. printf(" ");
  45. for(j=0;j<ARRAYSIZE;j++)
  46. printf("%3d",arrayD[i][j]);
  47. printf("\n");
  48. }
  49.  
  50. printf("\n終了します。\n");
  51. return 0;
  52. }
  53.  
  54.  
Success #stdin #stdout 0s 4404KB
stdin
Standard input is empty
stdout
  1  2  3     1  1  1    14 14 14
  1  2  3 ×   2  2  2 =  14 14 14
  1  2  3     3  3  3    14 14 14

終了します。