0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

Shell脚本之打印一个正三角形

阿铭linux 来源:阿铭linux 作者:阿铭 2022-10-24 09:13 次阅读

需求:打印一个正三角形,要求用户输入一个数字n,然后打印边长为n个*字符的正三角形。

需求分析:

1.正三角形,即三条边长度相同,三个角都为60°

2.脚本需要用户交互,所以使用read -p实现,关键代码

read -p "Please input a number: "n

3. 正三角形,第一行为1个*,第二行为2个*,第三行为3个*,……以此类推,所以打印的*个数是递增的。假设n为10,关键代码

n=10
foriin`seq$n`
do
    for j in `seq $i`
    do
        echo -n "*"
    done
    echo
done

结果如下图

87f1bc52-532b-11ed-a3b6-dac502259ad0.png

这段代码里,用到了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

相比较之前代码,仅仅是在*后面加了个空格。效果如下图:

880015f4-532b-11ed-a3b6-dac502259ad0.png

6.再来说一个关键问题,第一行在打印“*+空格”之前,应该先打印n-1个空格,然后再打印*,第二行打印n-2个空格,然后再打印*,第三行打印n-3个空格,然后打印*,……到了第n行也就是最后一行,打印0(n-n)个空格。

假设n为10,关键代码如下:

n=10
foriin`seq$n`
do
forkin`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

脚本运行结果如下:

88102a48-532b-11ed-a3b6-dac502259ad0.png





审核编辑:刘清

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • Shell
    +关注

    关注

    1

    文章

    358

    浏览量

    22902

原文标题:Shell脚本习题--打印三角形

文章出处:【微信号:aming_linux,微信公众号:阿铭linux】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    三角形和星形电机参数怎么确定?

    请教三角形和星形电机怎么确定,通过测量 ------- 线电阻=2*相电阻 星形 线电阻=2/3*相电阻 三角形 这个说法对吗
    发表于 03-07 06:57

    双模微带三角形贴片滤波器的改进设计

    【作者】:崔鹤;魏彦玉;曹锐;宫玉彬;王文祥;【来源】:《雷达科学与技术》2010年01期【摘要】:双模微带谐振器用于微波滤波器设计时具有独特的优点。近年来出现了些由双模微带三角形贴片谐振器
    发表于 04-22 11:36

    三角形网格球面参数化研究

    【作者】:邹承明;李引;赵广辉;钟珞;【来源】:《武汉理工大学学报》2010年06期【摘要】:针对调和映射的思想提出了种新的零亏格的任意拓扑流形三角形网格的球面参数化方法。首先构造
    发表于 04-24 09:55

    编写等腰三角形

    `用*组成的等腰三角形,每行递加*号,如下图所示`
    发表于 01-14 15:10

    相异步电机的星形接法(Y)和三角形接法(Δ)接法

    `相异步电机的星形接法(Y)和三角形接法(Δ)接法相异步电机定义相异步电机(Triple-phase asynchronous m
    发表于 12-25 18:24

    Shell或者Python写个立体三角形

    本帖最后由 背后的太阳 于 2016-10-30 18:20 编辑 各位大神,帮忙用Shell或者Python写个立体三角形(类似金字塔)拜谢。。。。
    发表于 10-30 18:18

    【图文】星形-三角形降压启动控制电路

    启动控制线路种类很多,下面仅介绍较常见的星形-三角形(Y-△)降压启动控制电路。1、星形-三角形降压启动的接线方式相异步电动机接线盒有U1、U2、V1、V2、W1、W2工6接线端,
    发表于 01-19 18:49

    ADE7878三角形电路设计

    ADE7878电路设计是三角形,软件中按照快速配置为电表的步骤弄的。测量的电压有效值寄存器跟实际值差距很大。有人设置过三角形的电路图么.
    发表于 08-03 07:57

    怎么产生正弦,三角形和ECG信号

    大家好,我需要产生正弦,三角形和ECG信号!!!!……有人能帮我吗?……谢谢大家! 以上来自于百度翻译 以下为原文Hello everyone, I need to generate sine
    发表于 04-08 09:06

    点与三角形的关系

    怎么通过编程判断点在锐角三角形内部呢
    发表于 05-23 09:14

    电机接法Y和三角形什么区别是什么

    必须采取定的方式起动,星一三角形换接起动就是种简单方便的降压起动方式.星三角起动可通过手动和自动操作控制方式实现。2、对于正常运行的定子绕组为
    发表于 07-06 07:38

    C语言是如何画出这样的三角形

    据悉,深圳某工程师沦为C语言笔试枪手修改cmdline 把内存改成512MB上拉电阻的作用剖析C语言是如何画出这样的三角形的c语言画谢宾斯基三角形Linux字符设备驱动实例哦,这是桶排序回答
    发表于 08-06 09:22

    电机的三角形接法和星形接法有什么区别

    三角形接法是什么?星形接法是什么?电机三角形接法和星形接法的区别?
    发表于 09-22 08:35

    y型连接和三角形连接有哪些不同之处

    y型连接和三角形连接的接线方式有何不同?y型连接和三角形连接的优势有何不同?
    发表于 10-15 09:47

    相电机三角形和星形接线的区别是什么?

    相电机是如何接线的?相电机三角形和星形接线的区别是什么?
    发表于 10-18 07:09