一、题目要求
编写一个函数,可以接收一个数组,该数组有5个数,请找出最大的数和最小的数和对应的数组下标是多少?
二、代码实现
package main
import (
"fmt"
"math/rand"
"time"
)
//编写一个函数,可以接收一个数组,该数组有5个数,请找出最大的数和最小的数和对应的数组下标是多少?
type rN func() *[5]int
func randNum() (arr1 *[5]int) {
//初始化数组接收5个数值
var arr [5]int
rand.Seed(time.Now().UnixNano())
for j := 0; j < 5; j++ {
arr[j] = rand.Intn(101)
}
//将实例化的数组返回出去
arr1 = &arr
return
}
//创建找最大值和最小值下标的函数,直接使用函数参数,方便使用
func findIndex(f rN) {
//变量初始化
var bigIndex, smallIndex, bigNum, smallNum int
//调用f()函数 将已经实例化的数组地址赋值,固定数组的数值
arr := f()
bigNum, smallNum = arr[0], arr[0]
//用数组一个数去比较数组的其他数,如果其他数比该bigNum大,记录下标赋值为bigIndex
for j := 1; j < len(arr); j++ {
if bigNum < arr[j] {
bigIndex = j
bigNum = arr[j]
}
}
//用数组一个数去比较数组的其他数,如果其他数比该smallNum小,记录下标赋值为smallIndex
for j := 1; j < len(arr); j++ {
if smallNum > arr[j] {
smallIndex = j
smallNum = arr[j]
}
}
fmt.Println("shuzu:", *arr)
fmt.Printf("最大值下标是:%v,最小值下标是:%v.\n", bigIndex, smallIndex)
}
func main() {
findIndex(randNum)
}
浙公网安备 33010602011771号