31-Golang中的二维数组

二维数组的使用方式

使用方式一:先声明/定义再赋值

  • 1.语法:var数组名 [大小] [大小]类型
  • 2.比如:var arr [2] [3]int,再赋值
package main
import (
	"fmt"
)


func main() {
	//定义/声明数组
	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.Print(arr[i][j]," ")
		}
		fmt.Println()
	}
}
/*
0 0 0 0 0 0 
0 0 1 0 0 0
0 2 0 3 0 0
0 0 0 0 0 0
*/

使用方式二:直接初始化

  • 1.声明:var数组名[大小] [大小]类型 = [大小] [大小]类型{{初值…},{初值…}}
var arr[2][3]int = [2][3]int{{1,2,3},{4,5,6}}
fmt.Println("arr=", arr)
  • 2.赋值(有默认值)
  • 3.二维数组在声明/定义时也对应有四种写法[和一维数组类似]
    • var数组名[大小] [大小]类型 = [大小] [大小]类型{{初值…},{初值…}}
    • var数组名[大小] [大小]类型 = […] [大小]类型{{初值…},{初值…}}
    • var数组名 = [大小] [大小]类型{{初值…},{初值…}}
    • var数组名 = […] [大小]类型{{初值…},{初值…}}

二维数组在内存中的形式

在这里插入图片描述

二维数组的遍历

双层for循环完成遍历


func main() {
	var arr = [2][3]int{{1,2,3},{4,5}}

	for i := 0; i < len(arr) ; i++{
		for j := 0; j < len(arr[i]); j++{
			fmt.Printf("%v\t", arr[i][j])
		}
		fmt.Println()
	} 
}
/*
1       2       3
4       5       0
*/

for-range方式完成遍历

func main() {
	var arr = [2][3]int{{1,2,3},{4,5}}
	for i, v := range arr {
		for j, v1 := range v{
			fmt.Printf("arr[%v][%v]=%v\t",i,j,v1)
		}
		fmt.Println()
	}
}
/*
arr[0][0]=1     arr[0][1]=2     arr[0][2]=3
arr[1][0]=4     arr[1][1]=5     arr[1][2]=0
*/

案例

定义二维数组,用于保存三个班,每个班五名同学的成绩

并求出每个班级平均分,以及所有班级平均分

package main
import (
	"fmt"
	
)


func main() {
	var scores [3][5]float64

	for i := 0; i < len(scores); i++{
		for j := 0; j < len(scores[i]); j++{
			fmt.Printf("请输入第%d班的第%d个学生的成绩\n", i + 1, j +1)
			fmt.Scanln(&scores[i][j])
		}
	}

	totalSum := 0.0
	for i := 0; i < len(scores); i++{
		sum := 0.0
		for j := 0; j < len(scores[i]); j++{
			sum += scores[i][j]
		}
		totalSum += sum
		fmt.Printf("第%d班的总分为%v,平均分为%v\n",i + 1,sum,sum/float64(len(scores[i])))
	}
	fmt.Printf("所有班的的总分为%v,平均分为%v",totalSum,totalSum/float64(len(scores)))
}

/*
第1班的总分为36,平均分为7.2
第2班的总分为282,平均分为56.4
第3班的总分为137,平均分为27.4
所有班的的总分为455,平均分为151.66666666666666
*/



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值