Go:常用语法练习(三)

1.运算符:联谊活动

题目要求:

某公司举办了一个联谊活动,现在要统计参加活动人数的单双,如果是单数,返回false,偶数返回true

运行结果示例:

考点:

        判断一个数字是单数还是双数,与2取余即可。

        ps.Go不支持三目运算符

运行代码示例:

func odevity( x int ) bool {
    // write code here
    if x % 2 == 0 {
        return true
    } 
    return false
}

2.数组:保龄球

题目要求:

小明投了5次保龄球,每次的分数分别为2,5,4,6,5,用一个数组记录这5次分数,然后输出这个数组。

运行结果示例:

考点:

        数组的声明方式:
    // 1.声明一个int类型的数组,数组长度为10,再遍历数组为其赋值
	var array1 [10]int
	for i := 0; i < len(array1); i++ {
		array1[i] = i
	}
	// 2.声明一个int类型的数组,并直接初始化赋值(后面为赋值元素默认为0)
	var array2 = [10]int{1, 2, 3, 4}
	// 3.使用:=直接声明并初始化数组
	array3 := [4]int{1, 2, 3, 4}
	// 4.使用...代替数组的长度,编译器会根据元素个数自行推断数组的长度
	var array4 = [...]float32{1000.0, 2.0, 3.4, 7.0, 50.0}
	// 5.指定下标来初始化元素
	array5 := [5]float32{1: 2.5, 3: 7.5}

运行代码示例:

func main() {
    res := [5]int {2,5,4,6,5}
    fmt.Println(res)
}

3.切片:创建切片

题目要求:

创建一个制定长度,容量的int类型切片,设置该切片的每个位置的值等于其索引值,最后返回该切片。

运行结果示例:

考点:

        1.切片的创建:使用make关键字城建切片,make([]T, length, capacity)

        2.遍历切片:使用range进行遍历。

运行代码示例:

func makeslice( length int ,  capacity int ) []int {
    // write code here
    var slice1 []int = make([]int, length, capacity)
    for index,_ := range slice1 {
        slice1[index] = index
    }
    return slice1
}

4.切片:切片复制

题目要求:

给定一个切片和另一个空切片,将第一个切片复制到第二个空切片中,并返回这个被复制的空切片。

运行结果示例:

考点:

        向切片中追加元素:

func main(){
	//append()为切片追加元素
	s1 := []string {"火鸡面","辛拉面","汤达人"}
	fmt.Printf("s1=%v len(s1)=%d cap(s1)=%d\n",s1,len(s1),cap(s1))
	
	//调用append函数必须用原来的切片变量接收返回值
	s1 = append(s1,"小当家") //append动态追加元素,原来的底层数组容纳不下足够多的元素时,切片就会开始扩容,Go底层数组就会把底层数组换一个
	fmt.Printf("s1=%v len(s1)=%d cap(s1)=%d\n",s1,len(s1),cap(s1))

	//调用append添加一个切片
	s2 := []string{"脆司令","圣斗士"}
	s1 = append(s1,s2...)//...表示拆开切片,再添加
	fmt.Printf("s1=%v len(s1)=%d cap(s1)=%d",s1,len(s1),cap(s1))
}

运行代码示例:

func sliceCopy( src []int ,  des []int ) []int {
    // write code here
    // des = make([]int, len(src), cap(src))
    des = append(des,src...) //...表示拆开切片,再添加
    return des
}

5.切片:出队

题目要求:

学生们都排成了一队,有一个切片表示相应学生们的身高,现随机喊某个位置的人出队,返回出队后的这个切片。比如[2,3,4,5],索引为1的位置的出队,出队后切片为[2,4,5]

运行结果示例:

考点:

        本题将数组按照index的位置进行拆分,分成两个切片,再将两个切片合并即可。拆分切片直接使用索引值即可,注意范围包括起始位置,不包括结束位置。

运行代码示例:

func deleteElement( s []int ,  index int ) []int {
    // write code here
    var s1, s2 []int
    // 前包后不包
    s1 = s[0:index]
    s2 = s[index + 1:]
    return append(s1,s2...)
}

6.切片:评委打分

题目要求:

小明参加某个歌唱比赛,评委们进行打分,要求去掉最高分,和最低分,将最高分和最低分依次存入切片并返回。

运行结果示例:

考点:

        遍历切片元素并比较大小。

运行代码示例:

func minAndMax( s []int ) []int {
    // write code here
    var res = []int{s[0], s[0]}
     for _,v := range s {
        if res[0] > v{
            res[0] = v
        }
        if res[1] < v {
            res[1] = v
        }
     }
    return res
}

7.切片:调整顺序

题目要求:

小朋友们依次站成了一排,现要将他们调换顺序,反着排,按照从最右的人站在最左边,倒数最右边的人站在最左边第二个位置,以此类推。比如小朋友的顺序为[1,3,2,3,4,6],重新排列后为[6,4,3,2,3,1]

运行结果示例:

考点:

        遍历原始切片为新建的切片倒序赋值。

运行代码示例:

func convert( s []int ) []int {
    // write code here
    length := len(s) 
    var res = make([]int, length)
    for i:= 0; i <len(s); i++ { 
        res[length - 1 - i] = s[i] 
    }
    return res
}

8.切片:判断两个切片是否有相同的元素

题目要求:

给定两个切片,判断这两个切片中的元素是否完全一样。

运行结果示例:

考点:

        使用for循环遍历切片元素,查看对应位置元素是否相同。

运行代码示例:

func equal( s1 []int ,  s2 []int ) bool {
    // write code here
    if len(s1) != len(s2) {
        return false
    }
    for i:= 0; i< len(s1); i++ {
        if s1[i] != s2[i] {
            return false
        }
    }
    return true
}

猜你喜欢

转载自blog.csdn.net/Liu_y_xin/article/details/142106933