7. 平均绩点(卡码网)
题目描述
每门课的成绩分为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
题解1(Go版本)
package main
import (
"fmt"
"os"
"bufio"
"strings"
)
func main(){
mp := map[string]float64{
"A": 4,
"B": 3,
"C": 2,
"D": 1,
"F": 0,
}
inputs := bufio.NewScanner(os.Stdin)
for inputs.Scan() {
data := strings.Split(inputs.Text(), " ")
var sum float64
var flag bool = true
for i := range data {
if _, ok := mp[data[i]]; !ok {
fmt.Printf("Unknown\n")
flag = false
break
}
val, _ := mp[data[i]]
sum += val
}
if flag {
fmt.Printf("%.2f\n", sum/float64(len(data)))
}
}
}