天天看點

【Go語言入門100題】056 猜數字 (20 分) Go語言 | Golang

L1-056 猜數字 (20 分) Go語言|Golang

一群人坐在一起,每人猜一個 100 以内的數,誰的數字最接近大家平均數的一半就赢。本題就要求你找出其中的赢家。

輸入格式:

輸入在第一行給出一個正整數N(≤10e4)。随後 N 行,每行給出一個玩家的名字(由不超過8個英文字母組成的字元串)和其猜的正整數(≤ 100)。

輸出格式:

在一行中順序輸出:大家平均數的一半(隻輸出整數部分)、赢家的名字,其間以空格分隔。題目保證赢家是唯一的。

輸入樣例1:

7
Bob 35
Amy 28
James 98
Alice 11
Jack 45
Smith 33
Chris 62      

結尾無空行

輸出樣例1:

22 Amy
• 1      

思路:

設計一個結構體存儲人名和正整數,然後進行判斷。計算出平均數

代碼如下:

package main

import (
    "fmt"
    "math"
)

type person struct {
    Name string
    Number float64
}

func main() {
    var num float64
    sum := 0.0
    _,_=fmt.Scan(&num)
    var personList [1000]person
    for i:=0;i<int(num);i++ {
        _, _ = fmt.Scan(&personList[i].Name, &personList[i].Number)
        sum += personList[i].Number
    }
    sum = sum/num/2  // 平均數的一半
    var ans person
    minute := math.Abs(personList[0].Number-sum)
    ans = personList[0]
    for _,item := range personList[:int(num)]{
        if math.Abs(item.Number-sum)<minute {
            minute = item.Number-sum
            ans = item
        }
    }
    fmt.Printf("%d %s",int(sum),ans.Name)
}