1. 二维数组的快速入门
快速入门案例:
请用二维数组输出如下图形:
000000
001000
020300
000000
package main
import (
"fmt"
)
func main() {
// 快速入门案例:
// 请用二维数组输出如下图形:
// 000000
// 001000
// 020300
// 000000
// 定义/声明二维数组
var arr [4][6]int
// 赋初值
arr[1][2] = 1
arr[2][1] = 2
arr[2][3] = 3
// 遍历二维数组,打印图形
for i :=0; i < 4; i++ {
for j := 0; j < 6; j++ {
fmt.Printf("%v ",arr[i][j])
}
fmt.Println()
}
}
2. 二维数组的使用方式
1)二维数组的使用方式1
package main
import (
"fmt"
)
func main() {
// 1. 先声明/定义,再赋值
var arr [2][3]int
arr[1][1] = 10
fmt.Println(arr)
fmt.Printf("arr[0]的地址是:%p \n",&arr[0])
fmt.Printf("arr[1]的地址是:%p \n",&arr[1])
fmt.Printf("arr[0][0]的地址是:%p \n",&arr[0][0])
fmt.Printf("arr[0][0]的地址是:%p \n",&arr[0][1])
fmt.Printf("arr[1][0]的地址是:%p \n",&arr[1][0])
fmt.Printf("arr[1][0]的地址是:%p \n",&arr[1][1])
}
2) 二维数组的使用方式2
package main
import (
"fmt"
)
func main() {
// 2. 直接初始化
var arr [2][3]int = [2][3]int{{1,2,3},{4,5,6}}
fmt.Println("arr:",arr)
}
3) 二维数组声明的四种方法
package main
import (
"fmt"
)
func main() {
var arr1 [2][3]int = [2][3]int{{1,2,3,}, {4,5,6}}
var arr2 [2][3]int = [...][3]int{{1,2,3}, {4,5,6}}
var arr3 = [2][3]int{{1,2,3}, {4,5,6}}
var arr4 = [...][3]int{{1,2,3}, {4,5,6}}
fmt.Println("arr1:",arr1)
fmt.Println("arr2:",arr2)
fmt.Println("arr3:",arr3)
fmt.Println("arr4:",arr4)
}
3. 二维数组的遍历
1)二维数组的遍历1
package main
import (
"fmt"
)
func main() {
// 演示二维数组的遍历方式1
var arr = [2][3]int{{1,2,3}, {4,5,6}}
for i := 0; i < len(arr); i++ {
for j := 0; j < len(arr[i]); j++ {
fmt.Printf("arr[%v][%v]=%v\t",i,j,arr[i][j])
}
fmt.Println()
}
}
2)二维数组的遍历2
package main
import (
"fmt"
)
func main() {
// 演示遍历二维数组的方式2
var arr = [...][3]int{{1,2,3}, {4,5,6}}
// for-range来遍历二维数组
for index1,value1 := range arr {
for index2,value2 := range value1 {
fmt.Printf("arr[%v][%v]=%v\t",index1,index2,value2)
}
fmt.Println()
}
}
4. 二维数组的应用案例
要求如下:
定义二维数组,用于保存三个班,每个班五名同学成绩,
并求出每个班级的平均分,以及所有班级的平均分
package main
import (
"fmt"
)
func main() {
// 要求如下:
// 定义二维数组,用于保存三个班,每个班五名同学成绩,
// 并求出每个班级的平均分,以及所有班级的平均分
// 1. 声明/定义二维数组
var arr [3][5]float64
// 2. 循环输入成绩
for i := 0; i < len(arr); i++ {
for j := 0; j < len(arr[i]); j++ {
fmt.Printf("请输入:%v班的第%v名同学的成绩:\n",i+1,j+1)
fmt.Scanln(&arr[i][j])
}
}
fmt.Println("arr",arr)
totalScore := 0.0
for index1,value1 := range arr {
sum := 0.0
for _,value2 := range value1 {
sum += value2
}
fmt.Printf("%v班的平均分为:%v \n", index1 + 1, sum / float64(len(value1)))
totalScore += sum
}
fmt.Println("所有班级的平均分是:",totalScore / float64(len(arr) * len(arr[0])))
}