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

    文章

    365

    浏览量

    23361

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

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

收藏 人收藏

    评论

    相关推荐

    交流电三角形接法电流关系

    交流电三角形接法是种常见的电机接线方式,广泛应用于电动机、发电机等设备中。在这种接线方式下,相交流电通过三个相互连接的线圈形成三角形,从
    的头像 发表于 12-13 17:44 4497次阅读

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

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

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

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

    Shell或者Python写个立体三角形

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

    相负载三角形连接

    实验  相负载三角形连接 、实验目的:1.熟悉相负载作三角形连接的方法。2.
    发表于 09-24 14:09 3w次阅读
    <b class='flag-5'>三</b>相负载<b class='flag-5'>三角形</b>连接

    三角形

    三角形目前的多分辨率算法(LOD)大多采用三角形作为最小的渲染图元,综合该算法的主要思想,使用种更加复杂的图元:以“宏三角形”为最小
    发表于 03-02 11:17 1035次阅读
    宏<b class='flag-5'>三角形</b>

    相负载的三角形连接方法

    相负载的三角形连接方法 将相负载Zuv、Zvw、Zwu接成三角形后与电源相连,如图3.10所示,就构成三角形连接的
    发表于 04-15 09:01 1.6w次阅读
    <b class='flag-5'>三</b>相负载的<b class='flag-5'>三角形</b>连接方法

    C语言教程之输出三角形

    C语言教程之输出三角形,很好的GD32资料,快来学习吧。
    发表于 04-21 17:55 0次下载

    星形/三角形的变换法介绍

    星形-三角形变换法与三角形-星形变换法原则上是等效的。为了简化计算,可以把星形连接的电路变换成等效三角形,也可以把三角形连接的电路变换为等效星形。即电路等效化简后,对电路未进行变换的部
    的头像 发表于 05-15 17:37 3.2w次阅读
    星形/<b class='flag-5'>三角形</b>的变换法介绍

    三角形接法的作用

    三角形接法的作用 三角形接法是将各相电源或负载依次首尾相连,并将每个相连的点引出,作为相电的三个相线。因接线形状似三角形,所以这种接法叫做
    发表于 04-03 14:23 2959次阅读

    三角形绕组的两种连线方式介绍

    三角形绕组中,有两种常见的连线方式,分别是星型连接和三角形连接。
    的头像 发表于 11-21 16:59 1886次阅读
    <b class='flag-5'>三角形</b>绕组的两种连线方式介绍

    变压器“三角形接线”和“星形接线”接法详解

    相电源的三个相依次连接在起,形成闭合的回路。在这种接线方式下,电源的相线与变压器的三个线圈相连,其形状类似于
    的头像 发表于 02-18 18:17 1.4w次阅读

    三角形连接和星形连接的基本概念和特点

    和星形连接的基本概念 三角形连接 三角形连接,又称为Δ连接,是指将电机的三个绕组首尾相接,形成闭合的
    的头像 发表于 07-17 10:35 2444次阅读

    什么是相电机三角形接法?定义是什么?

    相电机三角形接法(Delta Connection)是相交流电动机的接线方式。在这种接法中,电机的三个绕组相互连接,形成
    的头像 发表于 10-23 09:37 735次阅读

    相电机三角形连接有哪些参数关系?

    相电机三角形连接(△连接)是种重要的电气连接方式,在电力系统和电动机控制中广泛应用。在三角形连接中,相电源或负载的每
    的头像 发表于 10-23 09:48 668次阅读