Shell脚本习题打印三角形
需求:打印一个正三角形,要求用户输入一个数字n,然后打印边长为n个*字符的正三角形。
需求分析:
1. 正三角形,即三条边长度相同,三个角都为60°
2. 脚本需要用户交互,所以使用read -p实现,关键代码 read -p "Please input a number: " n
3. 正三角形,第一行为1个*,第二行为2个*,第三行为3个*,……以此类推,所以打印的*个数是递增的。假设n为10,关键代码 n=10 for i in `seq $n` do for j in `seq $i` do echo -n "*" done echo done
结果如下图
这段代码里,用到了echo -n,这是为了不打印换行符,从而实现第2行里两个*连在一起,3行里3个*连在一起,……
而每行最后面还需要换行,所以脚本里第8行代码的echo就是为了打印换行符。
4. 为了让打印的三角形美观,每个*后面需要带一个空格,*和空格就需要两个字符。假若如此的话,每行的字符都应该是2n个,只不过第一行除了一个*,其它字符都是空格,第二行除了两个*外,其它字符都是空格,当然两个*之间应该有一个空格。
5. 按上面的规律,第一行打印1对"*+空格",第二行打印两对"*+空格",第三行打印三对"*+空格",……
假设n为10,关键代码如下: n=10 for i in `seq $n` do for j in `seq $i` do echo -n "* " done echo done
相比较之前代码,仅仅是在*后面加了个空格。效果如下图:
6. 再来说一个关键问题,第一行在打印"*+空格"之前,应该先打印n-1个空格,然后再打印*,第二行打印n-2个空格,然后再打印*,第三行打印n-3个空格,然后打印*,……到了第n行也就是最后一行,打印0(n-n)个空格。
假设n为10,关键代码如下: n=10 for i in `seq $n` do for k in `seq $[$n-1] -1 $i` do echo -n " " done for j in `seq $i` do echo -n "* " done echo done
代码第4行,seq $[$n-1] -1 $i是为了实现倒序队列,第一次打印9个空格,第二次打印8个空格,第三次打印7个空格,……,第十次打印0个空格。
所以,最终脚本写出来是这样的: #!/bin/bash read -p "Please input a number: " n for i in `seq $n` do for k in `seq $[$n-1] -1 $i` do echo -n " " done for j in `seq $i` do echo -n "* " done echo done
脚本运行结果如下:
馒头回缩起皱,是怎么回事?对于你提起的馒头回缩起皱的问题,描述中也提到用多种方法去试都不管用,依我看,你可能对蒸馒头一知半解,就是说蒸馒头的用料配比,以及每个程序的要求标准不知而引起的。虽然蒸馒头说起来容易
同样是高端旗舰产品,昂贵的售价之下,为什么大家更接受华为?如果需要华为自述的话我觉得应该是这样的,我是华为手机,诞生于华为这家企业,但是一开始定位充话费送手机,我的压力很大!因为华为本身是一个高科技的互联网通讯企业,如果长期打造充话费送手
电子签名要怎么使用?电子签名的使用一般情况下我们是在第三方签署平台下进行的。这里我就拿微签举例来讲。电子签名更是创新地实现了电脑手机结合的方式,此外还有批注以及时间戳功能。用户可以根据自己的需求来选择
兰州大学有可能合并兰州理工大学吗?谢邀请,这个问题的答案是很肯定的,那就是完全没有可能。兰州大学是985211工程大学,此前公布的双一流大学中,兰州大学是甘肃唯一上榜的大学。兰州理工大学虽然实力和兰州大学相差很远,
你认为本届亚运会中国能获得多少枚金牌?目前亚运会正在紧张激烈的进行中,截止8月27日20点,中国体育代表团已经夺得84枚金牌,总奖牌已经达到184枚,远远超过第二名多达50枚奖牌。本届雅加达亚运会在9月1日结束全部比赛
幼儿急疹,该怎么办?幼儿急疹怎么引起的?今天打算和大家聊一聊幼儿急疹。幼儿急疹,不陌生,听这个名字就会知道,这是发生在幼儿群体中的疹子,而且还有一个特点,往往是发病很急,突然高热,高热会持续34天,热
孕妇最怕什么?孕妇最怕什么?作为一名孕妇,最怕的莫过去胎儿宫内异常,最渴望的当属胎儿健健康康的,顺利分娩。1。孕早期孕早期先兆流产高峰期,很多孕妇都特别担心胎儿宫内有问题,哪天下体出血了,肚子有
如果已经有二胎了,又不小心怀孕了,你还会要三胎吗?先不说已经有了二胎还要不要第三胎,有句话楼主说的很可笑,就问你什么叫不小心又怀孕了,能不能怀孕自己最清楚,还不小心又怀孕了,真会找托词。既然怀孕了,那就生吧,现在国家已经允许生第三
国安如果取得亚冠资格,那么需要一个亚外,召回克里梅茨怎么样?我觉得靠谱亚冠联赛目前实行的是31外援政策,据说下赛季会改,但是在流出的各种版本中也只是增加无限之外援,那个1还是不会变的。北京国安本赛季已经和自己亚冠最大竞争对手鲁能携手进入了足
孙子和外孙同时考大学,老人给孙子1万,外孙2千,这合适吗?孙子和外孙子都考上了大学,我给了孙子10000块,给了外孙2000块,没想到被女儿直接拒绝了,还说都留着给你孙子吧。张大爷今年63岁,虽然是个退休职工,但和老伴都是本本分分的农村人
我被同济大学和兰州大学同时录取为博士生,不知道应该选择哪个?中小学生不要冒充博士,谢谢!你以为读博是像你上小学那会烦恼我是该选清华还是北大吗?如果这种问题需要网友参谋,就说明你根本不适合读博。这个问题最荒谬的地方就在于时间点。同济大学202