Null-Zero-One-Null

导航

 

  一、题目要求

    编写一个函数,可以接收一个数组,该数组有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)
}

 

 

posted on 2022-02-10 22:05  Null-Zero-One-Null  阅读(114)  评论(0)    收藏  举报