以下是一个解决此问题的 Shell 脚本示例: ```bash #!/bin/bash # 初始化各分数段的人数 A_count=0 B_count=0 C_count=0 D_count=0 E_count=0 # 初始化总分 total_score=0 # 初始化学生数量 student_count=0 # 读取文件 while read line; do # 提取学号和成绩 student_id=$(echo "$line" | awk '{print $1}') score=$(echo "$line" | awk '{print $2}') # 增加学生数量 student_count=$((student_count + 1)) # 统计各分数段人数 if [ $score -ge 90 ]; then A_count=$((A_count + 1)) elif [ $score -ge 80 ] && [ $score -lt 90 ]; then B_count=$((B_count + 1)) elif [ $score -ge 70 ] && [ $score -lt 80 ]; then C_count=$((C_count + 1)) elif [ $score -ge 60 ] && [ $score -lt 70 ]; then D_count=$((D_count + 1)) else E_count=$((E_count + 1)) fi # 累加总分 total_score=$((total_score + score)) done < pc.txt # 计算平均分 average_score=$((total_score / student_count)) # 输出结果 echo "A 档(90 - 100)人数:$A_count" echo "B 档(80 - 89)人数:$B_count" echo "C 档(70 - 79)人数:$C_count" echo "D 档(60 - 69)人数:$D_count" echo "E 档(不及格)人数:$E_count" echo "总平均分:$average_score" # 额外注意的逻辑点: # 1. 确保文件 pc.txt 的格式正确,每行都是 S* 和数字的组合。 # 2. 如果文件中的成绩不是整数,可能需要额外的处理来进行正确的判断和计算。 # 3. 考虑对输入数据进行错误检查,例如处理空行或格式不正确的行。 ``` [2025-04-04 15:50:44 | AI写代码神器 | 534点数解答]