• (原创)shell 编程:根据从键盘输入的学生成绩,显示相应的成绩标准,也可以同时输入多个成绩,最多为5 个,以空格分隔。


     

    编写一段 shell 程序完成:根据从键盘输入的学生成绩,显示相应的成绩标准,也可以同时

    输入多个成绩,最多为5 个,以空格分隔。

    要求:

    1)        分出不及格、及格、中、良和优秀等.

    2)        要有对*.?分的识别能力.

    3)        如果是多个成绩需要从高到低进行显示.

    4)        所使用的shell 语句不限.

    5)        以程序行数最少为最佳.

     

    程序:

     1 #!/bin/bash
     2 
     3 #Function:
     4 
     5 #  No.4 of the second exercise
     6 
     7 #History:
     8 
     9 #  2013/03/19 zyy
    10 
    11 echo "Please input scores, less than 5 socres:"
    12 
    13 read -a score_arr
    14 
    15 sorted_arr=($(printf '%s\n' "${score_arr[@]}"|sort -n -r))
    16 
    17 declare -i i
    18 
    19 for (( i=0; $i<${#sorted_arr[@]}; i=$i+1 ))
    20 
    21 do
    22 
    23  case ${sorted_arr[i]} in
    24 
    25    ?|?\.*|[1-5]?|[1-5]?\.*)
    26 
    27    score_rank[i]="Failed!";;
    28 
    29    6?|6?\.*)
    30 
    31         score_rank[i]="Passed!";;
    32 
    33    7?|7?\.*)
    34 
    35         score_rank[i]="Medium!";;
    36 
    37    8?|8?\.*)
    38 
    39         score_rank[i]="Good!";;
    40 
    41    100|100\.0|9?|9?\.*)
    42 
    43         score_rank[i]="Excellent!";;
    44 
    45    *)
    46 
    47    score_rank[i]="Not a Score";;
    48 
    49 esac
    50 
    51 done
    52 
    53 declare -i j
    54 
    55 for (( j=0; $j<${#sorted_arr[@]}; j=$j+1 ))
    56 
    57 do
    58 
    59    echo "${sorted_arr[j]}  ${score_rank[j]}"
    60 
    61 done

     

    注释:

    read -a score_arr 将输入的分数都读入score_arr数组中,并且可以按空格分隔

    sorted_arr=($(printf '%s\n' "${score_arr[@]}"|sort -n -r)) 对score_arr数组中所有元素按数值(-n)倒序                                 (-r)排序

    declare -i i 申明变量i为数值型变量

    ${#sorted_arr[@]} 指数组sorted_arr的元素个数

    echo "${sorted_arr[j]}  ${score_rank[j]}" 注意显示数组元素的方法

     

    运行截图:

  • 相关阅读:
    pylint
    Cygwin安装与配置
    Spring的配置文件
    网络传输测试软件
    MINA快速传输文件
    Jar包下载
    shutdown彻底关闭tomcat,以及多线程关闭
    Git使用
    例说数学学习中的四基
    求等差数列前n项和S_n的最值
  • 原文地址:https://www.cnblogs.com/CnZyy/p/2971800.html
Copyright © 2020-2023  润新知