Linux设计shell程序:接受用户输入的7位面试官给出的成绩数据,去掉一个最高分和一个最低分后,输出平均成绩。
时间: 2024-12-23 15:13:27 浏览: 18
在Linux下编写shell脚本来计算面试官打分的平均成绩,可以按照以下步骤进行:
1. 首先,创建一个名为`average_score.sh`的shell脚本文件,并添加`#!/bin/bash`作为第一行,表示这是一个bash shell脚本。
```sh
#!/bin/bash
```
2. 接收用户输入的7位面试官评分。你可以使用`read -p "请输入7个面试官的成绩,用空格隔开:" scores`命令。用户会看到提示并输入分数。
3. 使用`IFS`(Internal Field Separator,内部字段分隔符)设置为逗号,将输入的字符串分割成数组。然后存储每个成绩到数组变量中。
```sh
scores=($scores)
```
4. 初始化最高分和最低分为第一个元素和最后一个元素,并初始化总分和面试人数为0。
```sh
max_score=${scores[0]}
min_score=${scores[6]}
total_score=0
num_of_scores=$((7))
```
5. 循环遍历数组,从第二个元素开始(因为已经设置了最大值和最小值),比较当前分数和已知的最大值、最小值,更新相应值,同时累加总分。
```sh
for ((i=1; i<${#scores[@]}; i++)); do
score=${scores[i]}
if [[ $score -gt $max_score ]]; then
max_score=$score
elif [[ $score -lt $min_score ]]; then
min_score=$score
fi
total_score=$((total_score + score))
done
```
6. 删除最高分和最低分,这里不需要直接删除数组元素,只需在统计总分时不包括它们即可。
7. 计算平均成绩,除以剩余的面试次数。
```sh
((total_scores_with_out_extreme=(total_score - (max_score + min_score))))
average=$((total_scores_with_out_extreme / (num_of_scores - 2)))
```
8. 最后,打印出平均成绩。
```sh
echo "去掉最高分$max_score和最低分$min_score后的平均成绩是:$average"
```
9. 完整脚本示例:
```sh
#!/bin/bash
# Step 2
read -p "请输入7个面试官的成绩,用空格隔开:" scores
# Steps 3-7
scores=($scores)
max_score=${scores[0]}
min_score=${scores[6]}
total_score=0
num_of_scores=$((7))
for ((i=1; i<${#scores[@]}; i++)); do
score=${scores[i]}
if [[ $score -gt $max_score ]]; then
max_score=$score
elif [[ $score -lt $min_score ]]; then
min_score=$score
fi
total_score=$((total_score + score))
done
total_scores_with_out_extreme=$((total_score - (max_score + min_score)))
average=$((total_scores_with_out_extreme / (num_of_scores - 2)))
# Step 8
echo "去掉最高分$max_score和最低分$min_score后的平均成绩是:$average"
#
阅读全文