时间限制:1.000S 空间限制:32MB
题目描述
每门课的成绩分为A、B、C、D、F五个等级,为了计算平均绩点,规定A、B、C、D、F分别代表4分、3分、2分、1分、0分。
输入描述
有多组测试样例。每组输入数据占一行,由一个或多个大写字母组成,字母之间由空格分隔。
输出描述
每组输出结果占一行。如果输入的大写字母都在集合{A,B,C,D,F}中,则输出对应的平均绩点,结果保留两位小数。否则,输出“Unknown”。
输入示例
A B C D F
B F F C C A
D C E F
输出示例
2.00
1.83
Unknown
答案
package main
import (
"bufio"
"os"
"fmt"
"strings"
)
var (
levels = map[byte]float64{
'A': 4,
'B': 3,
'C': 2,
'D': 1,
'F': 0,
}
arr []string
sum float64
isUnknown bool
)
func main() {
input := bufio.NewScanner(os.Stdin)
for input.Scan() {
arr = strings.Split(input.Text(), " ")
for _, v := range arr {
if count, has := levels[v[0]]; has {
sum += count
} else {
isUnknown = true
break
}
}
if isUnknown {
fmt.Println("Unknown")
} else {
fmt.Printf("%.2f\n", sum / float64(len(arr)))
}
sum = 0
isUnknown = false
}
}