解题思路
- 矩阵乘法的运算是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")
}
}
}