Skip to content

Latest commit

 

History

History
219 lines (194 loc) · 5.04 KB

0007.平均绩点.md

File metadata and controls

219 lines (194 loc) · 5.04 KB

7.平均绩点

题目链接

C++

#include <iostream>
#include <stdio.h>
using namespace std;
int main() {
    string s;
    while (getline(cin, s)) { // 接受一整行字符串
        float sum = 0;
        int count = 0;
        int flag = 1;
        for (int i = 0; i < s.size(); i++) {
            if (s[i] == 'A') {sum += 4; count++;}
            else if (s[i] == 'B') {sum += 3; count++;}
            else if (s[i] == 'C') {sum += 2; count++;}
            else if (s[i] == 'D') {sum += 1; count++;}
            else if (s[i] == 'F') {sum += 0; count++;}
            else if (s[i] == ' ') continue;
            else {
                flag = 0;
                cout << "Unknown" << endl;
                break;
            }
        }
        if (flag) printf("%.2f\n", sum / count);
    }
    return 0;
}

Java

import java.util.*;

public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        while (in.hasNextLine()) {
            String line = in.nextLine();
            String[] degrees = line.split(" ");
            double avg = 0;
            boolean flag = false;
            for (String degree : degrees) {
                int num = convert(degree);
                if (num < 0) {
                    flag = true;
                    break;
                }
                avg += num * 1.0 / degrees.length;
            }
            if (flag) {
                System.out.println("Unknown");
            } else {
                System.out.printf("%.2f\n", avg);
            }

        }
    }

    private static int convert(String degree) {
        switch (degree) {
            case "A":
                return 4;
            case "B":
                return 3;
            case "C":
                return 2;
            case "D":
                return 1;
            case "F":
                return 0;
            default:
                return -1;
        }
    }
}

python

while 1:
    try:
        n = input().replace(" ", "").replace("A", "4").replace("B", "3").replace("C", "2").replace("D", "1").replace(
            "F", "0")
        s = 0
        for i in n:
            if i not in '43210':
                print('Unknown')
                break
            s += int(i)
        else:
            print(f"{s / len(n):.2f}")
    except:
        break

Go

package main

import(
    "bufio"
	"fmt"
	"os"
	"strings"
)

func main(){
    //创建一个bufio.Reader对象,用于从标准输入(即键盘)读取数据
    reader := bufio.NewReader(os.Stdin)
    score := map[string]float64{"A":4, "B":3, "C":2, "D":1, "F":0}
    for{
        avg := 0.0
        flag := true
        grade, _, err := reader.ReadLine()
        grade_list := strings.Split(string(grade), " ")
        //如果err的值不等于nil,则表示输入结束
        if err != nil{
            break
        }
        for i := 0; i < len(grade_list); i++{
            //ok表示字典中是否包含该key
            value, ok := score[grade_list[i]]
            if ok == false{
                flag = false
                fmt.Println("Unknown")
                break
            }
            avg = avg + value
        }
        if flag{
            avg = float64(avg)/float64(len(grade_list))
            fmt.Println(fmt.Sprintf("%.2f", avg))
        }
    }
}

Js

// 引入readline模块读取输入
const readline = require("readline");
// 创建readline接口
const rl = readline.createInterface({
    input: process.stdin,
    output: process.stdout,
});

function processInput() {
    // 用map存储分数和字母的对应关系
    let map = new Map();
    map.set("A", 4);
    map.set("B", 3);
    map.set("C", 2);
    map.set("D", 1);
    map.set("F", 0);
    
    rl.on("line", (input) => {
        let arr = input.split(" ");
        let res = 0;
        let sumScore = 0;
        for (let i = 0; i < arr.length; i++) {
            if (map.has(arr[i])) {
                sumScore += map.get(arr[i]);
            } else {
                res = "Unknown"
                break
            }
        }
        res = res == "Unknown" ?  "Unknown" : (sumScore / arr.length).toFixed(2)
        console.log(res)
    });
}
processInput();

C

#include <stdio.h>
#include <string.h>

int main() {
    char s[100];
    while (fgets(s, sizeof(s), stdin)) { // 接受一整行字符串
        float sum = 0;
        int count = 0;
        int flag = 1;
        for (int i = 0; i < strlen(s); i++) {
            if (s[i] == 'A') { sum += 4; count++; }
            else if (s[i] == 'B') { sum += 3; count++; }
            else if (s[i] == 'C') { sum += 2; count++; }
            else if (s[i] == 'D') { sum += 1; count++; }
            else if (s[i] == 'F') { sum += 0; count++; }
            else if (s[i] == ' ' || s[i] == '\n') continue;
            else {
                flag = 0;
                printf("Unknown\n");
                break;
            }
        }
        if (flag) printf("%.2f\n", sum / count);
    }
    return 0;
}