使用Golang设计一个计算学习平均成绩的程序

使用Golang设计一个计算学习平均成绩的程序 设计一个计算学习平均成绩的程序

作业要求: 请求最多输入9个成绩(可按需限制),格式为 A B B A C E F Z X(带或不带空格[或回车]均可): 程序可以接受以下值: A, B, C, D, E, FX (F), X, Z, NZ 如果输入的值不正确,程序会删除该错误值并继续运行 按回车键退出

转换规则 程序按以下规则转换这些值: A, Z - 1 B - 1.5 C - 2 D - 2.5 E - 3 F, FX NZ - 4 X - 0

程序流程:

计算平均成绩 检测成绩的总数量 然后计算算术平均数 输出 程序打印最终的平均成绩(四舍五入到小数点后两位,第三位四舍五入!),例如: 平均成绩:2.81 程序结束

谢谢


更多关于使用Golang设计一个计算学习平均成绩的程序的实战教程也可以访问 https://www.itying.com/category-94-b0.html

2 回复

这是一个用于提问和寻求帮助的Go语言论坛。这里没有人会替你完成作业!

更多关于使用Golang设计一个计算学习平均成绩的程序的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html


以下是符合要求的Go语言实现:

package main

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

func main() {
	scanner := bufio.NewScanner(os.Stdin)
	fmt.Println("请输入成绩(最多9个,按回车结束输入):")
	
	var grades []float64
	validGrades := map[string]float64{
		"A":   1.0,
		"B":   1.5,
		"C":   2.0,
		"D":   2.5,
		"E":   3.0,
		"F":   4.0,
		"FX":  4.0,
		"NZ":  4.0,
		"X":   0.0,
		"Z":   1.0,
	}
	
	for len(grades) < 9 {
		if !scanner.Scan() {
			break
		}
		
		input := scanner.Text()
		if input == "" {
			break
		}
		
		inputs := strings.Fields(input)
		for _, gradeStr := range inputs {
			if len(grades) >= 9 {
				break
			}
			
			gradeStr = strings.ToUpper(strings.TrimSpace(gradeStr))
			if value, exists := validGrades[gradeStr]; exists {
				grades = append(grades, value)
			}
		}
	}
	
	if len(grades) == 0 {
		fmt.Println("未输入有效成绩")
		return
	}
	
	var sum float64
	for _, grade := range grades {
		sum += grade
	}
	
	average := sum / float64(len(grades))
	roundedAverage := math.Round(average*100) / 100
	
	fmt.Printf("成绩数量:%d\n", len(grades))
	fmt.Printf("平均成绩:%.2f\n", roundedAverage)
}

示例运行:

请输入成绩(最多9个,按回车结束输入):
A B C D
E F X Z
成绩数量:8
平均成绩:1.94

或者单行输入:

请输入成绩(最多9个,按回车结束输入):
A B B A C E F Z X
成绩数量:9
平均成绩:2.06

程序特点:

  1. 支持最多9个成绩输入
  2. 自动过滤无效成绩
  3. 支持空格分隔或换行输入
  4. 按指定规则转换成绩值
  5. 计算结果四舍五入到两位小数
  6. 输入空行时结束程序
回到顶部