题目:

  一条公交路线共30站,乘客上车需支付1元,之后每超过5站支付0.5元;最好可以实现“余额不足的提醒”和“逃票,漏刷卡的显示”。

  注意:需下载bc计算器

第一种方法(重复语句太多):

 1 #!/bin/bash
2 read -p "请输入您的公交卡金额:" money
3 if [ -z "$money" ] || [ "$money" -lt 1 ];then
4 echo "您的余额不足,请尽快充值!"
5 exit
6 else
7 read -p "请输入您的上车站号:" on
8 if [ -z "$on" ];then
9 echo "您有未刷卡记录"
10 elif [ "$on" -gt 30 ] || [ "$on" -le 0 ];then
11 echo "请输入正确的车站号!"
12 exit
13 fi
14 read -p "请输入您的下车站号:" off
15 if [ -z "$off" ];then
16 echo "您有未刷卡记录"
17 elif [ "$off" -le 0 ] || [ "$off" -gt 30 ];then
18 echo "请输入正确的车站号!"
19 exit
20 fi
21 if [ -z "$on" ] && [ -z "$off" ];then
22 echo "您已逃票一次,下次请自觉刷卡"
23 exit
24 elif [ -z "$on" ] || [ -z "$off" ];then
25 spe=3.5
26 bal=`echo "$money-$spe" |bc`
27 echo "您上车或者下车有未刷卡记录,将会扣除您全程车费$spe元,你的余额还剩$bal元!"
28 exit
29 fi
30 beg=1
31 if [ "$on" -le "$off" ];then
32 dif=`echo "$off-$on" |bc`
33 else
34 dif=`echo "$on-$off" |bc`
35 fi
36 if [ "$dif" -le "5" ];then
37 spe="$beg"
38 bal=`echo "$money-$spe" |bc`
39 echo "您共坐了"$dif"站;花费了"$spe"元;您的余额还有"$bal"元"
40 elif [ "$dif" -gt 5 ] && [ "$dif" -le 10 ];then
41 spe=`echo "scale=1;$beg+0.5" |bc`
42 bal=`echo "$money-$spe" |bc`
43 echo "您共坐了"$dif"站;花费了"$spe"元;您的余额还有"$bal"元"
44 echo "$bal"
45 elif [ "$dif" -gt 10 ] && [ "$dif" -le 15 ];then
46 spe=`echo "scale=1;$beg+1" |bc`
47 bal=`echo "$money-$spe" |bc`
48 echo "您共坐了"$dif"站;花费了"$spe"元;您的余额还有"$bal"元"
49 elif [ "$dif" -gt 15 ] && [ "$dif" -le 20 ];then
50 spe=`echo "scale=1;$beg+1.5" |bc`
51 bal=`echo "$money-$spe" |bc`
52 echo "您共坐了"$dif"站;花费了"$spe"元;您的余额还有"$bal"元"
53 elif [ "$dif" -gt 20 ] && [ "$dif" -le 25 ];then
54 spe=`echo "scale=1;$beg+2" |bc`
55 bal=`echo "$money-$spe" |bc`
56 echo "您共坐了"$dif"站;花费了"$spe"元;您的余额还有"$bal"元"
57 else
58 spe=`echo "scale=1;$beg+2.5" |bc`
59 bal=`echo "$money-$spe" |bc`
60 echo "您共坐了"$dif"站;花费了"$spe"元;您的余额还有"$bal"元"
61 fi
62 fi

第二种方法(简化计算过程):

 1 #!/bin/bash
2 #公交卡金额
3 read -p "请输入您的公交卡金额:" MON
4 #判断公交卡里是否金额足够
5 if [ -z $MON ] || [ $MON -lt 1 ];then
6 echo "您的公交卡余额不足,请尽快充值!"
7 exit
8 fi
9 #上下车站号
10 read -p "请输入您的上车车站号:" GON
11 read -p "请输入您的下车车站号:" GOF
12 #判断是否有逃票
13 if [ -z $GON ] && [ -z $GOF ];then
14 echo "您已经有逃票记录了,请注意你的信用值!"
15 exit
16 elif [ -z $GON ] || [ -z $GOF ];then
17 BAL=`echo "$MON-3.5" |bc`
18 echo "您有漏刷卡记录,将扣除您全程车票,您的公交卡余额还剩$BAL元!"
19 exit
20 fi
21 NUM=`echo "$GOF-$GON" |bc`
22 COS=`echo "($NUM-1)/5*0.5+1" |bc`
23 BAL=`echo "$MON-$COS" |bc`
24 echo "您一共乘坐了$NUM站,花费了$COS元,您的公交卡还剩$BAL元!"

shell基础之bus实战(if 练习)的更多相关文章

  1. Linux实战教学笔记17:精简shell基础

    第十七节 精简shell基础 标签(空格分隔): Linux实战教学笔记 1,前言 1.1 为什么学习shell编程 Shell脚本语言是实现Linux/UNIX系统管理及自动化运维所必备的重要工具, ...

  2. Linux Shell基础(下)

    Linux Shell基础(下) 目录 一.shell特殊符号cut命令 二.cut.sort.wc.uniq命令 三.tee.tr.split命令 四.简易审计系统 五.fork, exec, so ...

  3. Shell基础学习小结

    0 shell基础概念 Shell是解释性语言,使用脚本编程语言的好处是,它们多半运行在比编译型语言还高的层级,能够轻易处理文件与目录之类的对象:缺点是它们的效率通常不如编译型语言.Shell命令有本 ...

  4. Shell基础-环境变量配置文件

    Shell基础-环境变量配置文件 source 配置文件 或者 . 配置文件: 把环境变量写入配置文件后,需要用户重新登陆才能生效,而是用source命令,则能直接生效 主要的配置文件: /etc/p ...

  5. shell基础二十篇 一些笔记

    shell基础二十篇 转自 http://bbs.chinaunix.net/thread-452942-1-1.html 研讨:Bash 内建命令 read (read命令更具体的说明见博客收藏的一 ...

  6. shell基础(转)

    shell基础1:文件安全与权限 http://bbs.chinaunix.net/forum/viewtopic.php?t=434579&highlight=wingger 附:Linux ...

  7. shell基础及变量

    一 Shell概述 1.Shell的作用——命令解释器,“翻译官” shell作为一个人机接口,用于解释用户输入的命令,将命令解释为Linux内核可以执行的2进制代码,并将执行的结果返回在标准终端上. ...

  8. Shell 基础教程

    一个比较好的shell基础教程: http://www.runoob.com/linux/linux-shell.html

  9. Linux基础学习(10)--Shell基础

    第十章——Shell基础 一.Shell概述 1.Shell是什么: (1)Shell是一个命令行解释器,它为用户提供了一个向Linux内核发送请求以便运行程序的界面系统级程序,用户可以用Shell来 ...

随机推荐

  1. OO第一单元作业——魔幻求导

    简介 本单元作业分为三次 第一次作业:需要完成的任务为简单多项式导函数的求解. 第二次作业:需要完成的任务为包含简单幂函数和简单正余弦函数的导函数的求解. 第三次作业:需要完成的任务为包含简单幂函数和 ...

  2. Leedcode算法专题训练(字符串)

    4. 两个字符串包含的字符是否完全相同 242. Valid Anagram (Easy) Leetcode / 力扣 可以用 HashMap 来映射字符与出现次数,然后比较两个字符串出现的字符数量是 ...

  3. Jmeter接口测试-MD5加密-请求验签(完整流程)

    第一部分:先准备好Jmeter 1.在开始编写脚本之前,先要确保你的Jmeter能够正常运行.若你还没有安装Jmeter,可参考以下方法: A.Jmeter需要java运行环境,所以需要下载JDK,J ...

  4. BB网络层测试

    网络层测试2020 问题 1 以下不属于网络层的协议是___A_______. A  DHCP  B ICMP  C IGMP  D ARP 10 分    问题 2 如果目的网络.目的主机都对,但是 ...

  5. PowerBI开发 第十八篇:行级安全(RLS)

    PowerBI可以通过RLS(Row-level security)限制用户对数据的访问,过滤器在行级别限制数据的访问,用户可以在角色中定义过滤器,通过角色来限制数据的访问.在PowerBI Serv ...

  6. 关于Redis客户端显示中文或中文乱码问题的解决

    关于Redis客户端不显示中文或者显示中文乱码,网上有些解决办法不全面的,都是漏了步骤不讲,简直瞎扯.在此记录一下解决方式. 刚开始使用Redis客户端的时候,本身就是默认不支持显示中文的. 例如,进 ...

  7. IDEA关于-javaagent中文路径导致无法debug的初步解决方案

    IDEA明明是装在D盘的纯英文路径,而且java的相关环境变量全部是在英文路径,结果还是因为中文路径的问题导致无法debug.仔细观察,发现这个中文路径是作为java的-javaagent的参数输入的 ...

  8. OO Unit1 总结

    OO Unit1 总结 每次作业的思路和技术分析 No.1 一共写了8个类,2个接口,主要的其实只有4个类1个接口 主要接口: PowerFunction就是每一项去掉系数的那一部分,有求导和乘法两个 ...

  9. Kernighan《UNIX 传奇:历史与回忆》杂感

    Brian W. Kernighan 是一个伟大的技术作家,我买了他写的几乎所有书.他近些年的书我买的是 Kindle 电子版,不占地方. 以下是我手上保存的纸版书: Kernighan 的书大多与别 ...

  10. hdu4915 判断括号匹配

    题意:       问你括号匹配是否唯一,三种字符'(','?',')',问号可以变成任何字符. 思路:       首先我们要学会判断当前串是否成立?怎么判断?我的方法是跑两遍,开三个变变量 s1 ...