• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

GO学习笔记二维数组

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

一.二维数组

1.二维数组入门

请用二维数组输出如下图形:

0 0 0 0 0 0

0 0 1 0 0 0

0 2 0 3 0 0

0 0 0 0 0 0

 

代码实现:

package main

import "fmt"

func main(){
    // 二维数组例子
    /*
    0 0 0 0 0 0
    0 0 1 0 0 0
    0 2 0 3 0 0
    0 0 0 0 0 0
    */
    // 声明二维数组
    var arr [4][6]int
    // 赋初值
    // fmt.Println(arr)

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

2.使用二维数组

 

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

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

二维数组里面的内存地址相邻。

相差的地址相差为数据类型 * 数组长度

 

比如int:8个字节

如果 arr [2][2]

这样第一个数组第一个元素的内存地址和第二个元素的内存地址相差16个字节。

 

使用方式2:直接初始化

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

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

 

package main

import "fmt"

func main()  {
    //
    var arr2 [2][3]int = [2][3]int {{1,2,22},{12,23,45}}
    fmt.Println("arr2=",arr2)
}

 

3.二维数组的遍历

1)双层for循环遍历

2for_range 方式遍历

例:

package main

import "fmt"

func main()  {
    //二维数组的遍历
    var arr [2][3]int = [2][3]int {{1,2,22},{12,23,45}}
    // 方法一: for循环遍历
    for i := 0; i < len(arr); i++ {
        for j := 0; j < len(arr[i]); j++ {
            fmt.Printf("%v\t",arr[i][j])
        }
        fmt.Println()
    }

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

}

二维数组的应用案例

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

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个学生的成绩:",i+1,j+1)
            fmt.Scanln(&scores[i][j])
        }
    }

    fmt.Println(scores)
    // 遍历输出成绩的二维数组,统计平均分
    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("第%v班级总分为%v,平均分为%v\n",i+1,sum,sum /float64(len(scores[i])))
    }
    fmt.Printf("所有班级的总分%v,所有班级的分均分%v\n",totalSum,totalSum / float64(15))
}

二.数组的练习

 

1.随机生成10个整数(1-10的范围)保存到数组,并倒序打印以及求平均值、求最大值和最大值的下标、并查找里面是否有55

 

 

2.已知有个排序好(升序)的数组,要求插入一个元素,最后打印该数组,顺序依然要升序

 

 

3.定义一个34列的二维数组,逐个从键盘输入值,编写程序将四周的数据清0

 

 

4.定义一个44列的二维数组,逐个从键盘输入值,然后将第1行和第4行的数据进行交换,将第2行和第3行的数据进行交换。

 

5.试保存1 3 5 7 9五个奇数到数组,并倒序打印

 

 

6.写出实现查找的核心代码,比如已知数组 arr[10]string ; 里面保存了十个元素,现要查找”AA” 在其中是否存在,打印提示,如果有多个”AA”,也要找到对应的下标。

 

7.随机生成10个整数(1-100之间),使用冒泡排序法进行排序,然后使用二分查找法,查找是都有90这个数,并显示其下标,如果没有则提示”找不到该数”。

 

8.编写一个函数,可以接收一个数组,该数组有5个数,请找出最大和最小的数和对应的数组下标是多少?

 

9.定义一个数组,并给出8个整数,求改数组中大于平均值的个数,和小于平均值的数的个数。

 

 

10.跳水比赛打分,运动员的成绩8个成绩,去掉一个最高分和一个最低分,剩下的6个分数的平均分就是最后得分。使用一维数组实现如下功能。

 

1)请把打分最高分的评委和最低分的评委找出来

2)找出最佳评委和最差评委。最佳评委就是打分和最后得分最接近的评委。最差评委就是打分和最后得分相差最大的。

 


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
2016年最火编程语言:谷歌Go排名第一发布时间:2022-07-10
下一篇:
go语言系列-TCP编程发布时间:2022-07-10
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap