解题思路

  • 矩阵乘法的运算是arr1的行分别乘以arr2的列累加
  • 使用二维数组
  • 2层for循环为二维数组赋值
  • 3层for循环求每两个数的乘积,第一层for遍历arr1的每一行,第二层for遍历arr2的每一列(arr1的行分别乘以arr2的列),第三次for对改行(或列)进行遍历,得到arr1和arr2的单个元素,进行乘积
package main

import (
    "fmt"
)

func main() {
    var x, y, z int
    for {
        n, _ := fmt.Scan(&x, &y, &z)
        if n == 0 {
            return
        }
        // 1.初始化二维数组
        arr1 := make([][]int, x)
        arr2 := make([][]int, y)
        // 2.为二数组阵的每一层填充数组
        for i := 0; i < x; i++ {
            arr1[i] = make([]int, y)
            for j := 0; j < y; j++ {
                fmt.Scan(&arr1[i][j])
            }
        }
        for i := 0; i < y; i++ {
            arr2[i] = make([]int, z)
            for j := 0; j < z; j++ {
                fmt.Scan(&arr2[i][j])
            }
        }
        //     fmt.Println(arr1)
        //     fmt.Print(arr2)
        // 矩阵1的行遍历
        for i := 0; i < x; i++ {
            // 矩阵2的列遍历
            for j := 0; j < z; j++ {
                item := 0
                // 矩阵1某行的遍历,矩阵2某列的遍历
                for k := 0; k < y; k++ {
                    item += arr1[i][k] * arr2[k][j]
                }
                if j != 0 {
                    fmt.Print(" ")
                }
                fmt.Print(item)
            }
            fmt.Print("\n")
        }
    }
}