码迷,mamicode.com
首页 > 编程语言 > 详细

排序和查找3

时间:2019-08-24 00:01:12      阅读:122      评论:0      收藏:0      [点我收藏+]

标签:声明   code   快速入门   直接   ota   双层   can   完成   fun   

多维数组我们只介绍二维数组。

二维数组的应用场景:

比如我们开发一个五子棋游戏,棋盘就是需要二维数组来表示。

 

二维数组的使用:

快速入门案例:
请用二维数组输出如下图形
0 0 0 0 0 0
0 0 1 0 0 0
0 2 0 3 0 0
0 0 0 0 0 0

代码演示:

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()
  }
}

技术图片

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

  1)语法:var 数组名[大小][大小]类型
  2)比如:var arr[2][3]int,再赋值。
  3)使用演示
  4)二维数组在内存的存在形式(重点)

 

func main() {

  //定义/声明 二维数组
  var arr2 [2][3]int
  arr2[1][1] = 10
  fmt.Println(arr2)

  fmt.Printf("arr2[0]的地址%p \n", &arr2[0])
  fmt.Printf("arr2[1]的地址%p \n", &arr2[1])

  fmt.Printf("arr2[0][0]的地址%p \n", &arr2[0][0])
  fmt.Printf("arr2[1][0]的地址%p \n", &arr2[1][0])
}

打印的结果:

技术图片

 

 二维数组在内存的布局的示意图:

 技术图片

 

 使用方式2:直接初始化

  1)声明:var 数组名 [大小][大小]类型 = [大小][大小]类型{{初值..},{初值..}}

  2)赋值(有默认值,比如int 类型的就是0)

  3)使用演示

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

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


func main() {

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

 

二维数组的遍历:

1)双层for循环完成遍历

案例演示:

func main() {

  var arr3 = [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()
  }
}

2)for-range 方式完成遍历

案例演示:

func main() {

  var arr3 = [2][3]int{{1,2,3},{4,5,6}}

  //for-range来遍历二维数组
  for i,v := range arr3 {
    for j,v2 := range v{
      fmt.Printf("arr3[%v][%v]=%v \t", i, j, v2)
    }
    fmt.Println()
  }
}

小例子:

定义二维数组,用于保存三个班,每个班五名同学成绩,并求出每个班级平均分、以及所有班级平均分。

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 \n", totalSum, totalSum / 15)
}

排序和查找3

标签:声明   code   快速入门   直接   ota   双层   can   完成   fun   

原文地址:https://www.cnblogs.com/green-frog-2019/p/11403019.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!