[go学习笔记.第八章.排序和查找] 2.二维数组

1.二维数组快速入门

package main

import (
    "fmt"
)

func main()  {
    //二维数组的演示案例
    /**
        0 0 0 0 0
        0 0 1 0 0
        2 0 4 9 0
        0 0 0 0 6
    */

    //1.定义一个二维数组
    var arr [4][5]int
    //赋初值
    arr[1][2] = 1
    arr[2][0] = 2
    arr[2][2] = 4
    arr[2][3] = 9
    arr[3][4] = 6
    //遍历二维数组
    for i := 0; i < 4; i++ {
        for j := 0; j < 5; j++ {
            fmt.Print(arr[i][j], " ")
        }
        fmt.Println()
    }
}

2.二维数组的使用方式

(1).先声明/定义,再赋值

语法: var 数组名 [大小][大小]类型

比如: var arr [2][3]int,然后再赋值

案例:

	var arr2 [2][3]int
	arr2[1][1] = 10
	fmt.Println(arr2)

二维数组在内存的存在形式

(2).直接初始化

语法:

var 数组名 [大小][大小]类型 = [大小][大小]类型{{初始值1}, {初始值2},...} 

赋值的时候,也是有初始值的(int => 0, string => '', bool => false)

案例:

        

var arr3 [2][3]int = [2][3]int{{1,2,3},{4,5,6}}
fmt.Println("arr3=", arr3)

说明: 二维数组在声明/定义时也对应有四种写法(和一维数组类似)

        var 数组名 [大小][大小]类型 =  [大小][大小]类型{{初始值1}, {初始值2},...} 

        var 数组名 [大小][大小]类型 =  [...][大小]类型{{初始值1}, {初始值2},...} 

        var 数组名  =  [大小][大小]类型{{初始值1}, {初始值2},...} 

        var 数组名  =  [...][大小]类型{{初始值1}, {初始值2},...} 

3.二维数组的遍历

(1).双层for循环遍历 

(2).for-range方式遍历 

package main

import (
    "fmt"
)

func main() {
    //演示二维数组的遍历
    var arr3 [2][3]int = [2][3]int{{1,2,3},{4,5,6}}
    //方式一: for循环
    for i := 0; i < len(arr3); i++ {
        for j := 0; j < len(arr3[i]); j++ {
            fmt.Printf("%v\t", arr3[i][j])
        }
        fmt.Println();
    }

    //方式二:for-range
    for i,value := range arr3 {
        for j, v  := range value {
            fmt.Printf("arr[%v][%v]=%v\t", i, j, v)
        }
        fmt.Println();
    }
}

//1       2       3
//4       5       6
//arr[0][0]=1     arr[0][1]=2     arr[0][2]=3
//arr[1][0]=4     arr[1][1]=5     arr[1][2]=6

 4.应用案例

package main

import (
	"fmt"
)

func main()  {
	/**
	定义一个二维数组,用于保存三个班,每个班5名学生成绩,
	并求出每个班的平均分,以及所有班平均分
	*/
	//1.定义一个二维数组
	var scores [3][5]float64
	//循环输入成绩
	for i := 0; i < len(scores); i++ {
		for j := 0; j < len(scores[i]); j++ {
			fmt.Printf("请输入第%v个班第%v个学生成绩:\n", i + 1, j + 1)
			fmt.Scanln(&scores[i][j])
		}
	}

	fmt.Println(scores)
	fmt.Println()
	
	//求出每个班的平均分,以及所有班平均分
	totalAll := 0.0	//定义一个变量,用于累计所有班级的总分
	num := 0	// 定义一个变量,用于计算所有学生人数
	for i, val := range scores {
		sum := 0.0	//定义一个变量,用于累计各个班的总分
		for _, v := range val {
			sum += v
			num++
		}
		totalAll += sum
		fmt.Printf("第%v个班平均成绩:%v\n", i + 1, sum / float64(len(val)))
	}

	fmt.Printf("所有班平均分:%v\n", totalAll / float64(num))
}

 [上一节][go学习笔记.第八章.排序和查找] 1.排序,查找的基本介绍

 [下一节][go学习笔记.第八章.排序和查找] 3.二维数组练习 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值