• 容器综合作业


    符合类型容器综合案例

    /*
    封装一个对整形切片 进行排序的函数
    随机招收一些学生进班
    随机生成学生的成绩
    对学生成绩排名并输出
    封装一个对全班学生成绩进行排名的函数
    将上述封装好的俩个函数丢入mylib包中
    在当前工程中调用mylib包内的函数
    在其他工程中调用mylib包内的函数
     */

    案例

     1 package main
     2 
     3 import (
     4     "fmt"
     5     "math/rand"
     6     "time"
     7 )
     8 
     9 //全局变量
    10 
    11 var names []string
    12 
    13 //--包初始化函数,执行在main函数之前.
    14 func init() {
    15     fmt.Println("***包初始化***")
    16     names = make([]string, 0)
    17 }
    18 
    19 func main() {
    20     //招生
    21     AddStudent("小王", "小红", "小张", "小许", "小明", "小曼")
    22     fmt.Println(names)
    23 
    24     //把学生随机分配成绩 也就是考试
    25     scoreMap := TakeExam(names...)
    26     fmt.Println(scoreMap)
    27 
    28     //显示排名
    29     ShowRanking(scoreMap)
    30 
    31 }
    32 
    33 //对成绩做降序排名  进行排序
    34 func ShowRanking(scoreMap map[string]int) {
    35 
    36     //形成名单,锁死姓名的循序,才能开始排序.
    37     names := make([]string, 0)
    38     for name, _ := range scoreMap {
    39         names = append(names, name)
    40     }
    41 
    42     /*对names 按分数的降序进行排列*/
    43     for i := 0; i < len(scoreMap)-1; i++ {
    44         //锁定第i位,将i后面的每个人(i),的分数与第i个人比较.
    45         // 将剩余的同志中,最高分数的人,调整到当前位置.
    46         for j := i + 1; j < len(names); j++ {
    47             //如果第四个人的分数比第三个人高,就互换位置.
    48             if scoreMap[names[j]] > scoreMap[names[i]] {
    49                 names[i], names[j] = names[j], names[i]
    50             }
    51 
    52         }
    53 
    54     }
    55     /*按names的顺序输出姓名和排序*/
    56     for i, name := range names {
    57         fmt.Printf("第%d名:%-6s 	 %3d
    ", i+1, name, scoreMap[name])
    58     }
    59 }
    60 
    61 
    62 //给examres考试,为每个人生成随机成绩.
    63 func TakeExam(examers ...string) (scoreMap map[string]int) {
    64 
    65     //定义出scoreMap里面是空的
    66     scoreMap = make(map[string]int)
    67 
    68     for _, name := range examers {
    69         score := GetRandomInt(100)
    70         scoreMap[name] = score
    71 
    72     }
    73     return
    74 }
    75 
    76 //生成0-n之间的随机分数
    77 func GetRandomInt(n int) int {
    78     time.Sleep(time.Nanosecond) //睡1毫秒
    79     r := rand.New(rand.NewSource(time.Now().UnixNano()))
    80     return r.Intn(n + 1)
    81 }
    82 
    83 //添加学生的函数
    84 func AddStudent(newcomers ...string) {
    85     names = append(names, newcomers...)
    86 
    87 }
    88 
    89 /*
    90 ***包初始化***
    91 [小王 小红 小张 小许 小明 小曼]
    92 map[小张:75 小许:93 小明:25 小曼:39 小王:51 小红:21]
    93 第1名:小许               93
    94 第2名:小张               75
    95 第3名:小王               51
    96 第4名:小曼               39
    97 第5名:小明               25
    98 第6名:小红               21
    99  */
  • 相关阅读:
    Java的final关键字
    递归
    打开Eclipse时出现"The Eclipse executable launcher was unable to locate its companion shared library"情况的解决
    warning: LF will be replaced by CRLF in test.txt.
    Java类的初始化问题
    递归输入与引用传值(UVa839 Not so Mobile)
    UVa1599 Ideal Path(双向bfs+字典序+非简单图的最短路+队列判重)
    欧拉图和欧拉圈-Play On Words(UVa10129)
    UVA12096 集合栈计算机(map和vector实现双射关系+集合的交并运算的STL)
    WebStorm快捷键
  • 原文地址:https://www.cnblogs.com/chaoyangxu/p/11891362.html
Copyright © 2020-2023  润新知