shell编程之打印菱形图案

第一种

 #!/bin/bash

read -p "请输入菱形长度:" len
for i in `seq 1 $len`  #输出菱形上半部分
do
    for ((j=$len-1;j>=$i;j--))
    do
        echo -n " "   #打印空格对齐图案
    done

    for((m=1;m<=$i;m++))
    do
        echo -n "* "  #打印*号
    done
    echo

done

for i in `seq 1 $len`  #输出菱形的下半部分,下半部分要比上半部分少一行
do
    for((j=1;j<=$i;j++)) 
    do
        echo -n " "   #打印空格对齐图案
    done

    for((n=$len-1;n>=$i;n--))
    do
        echo -n "* "  #打印*号
    done
    echo
done

输出结果如下图所示:

在这里插入图片描述

第二种

#!/bin/bash

read -p "请输入菱形长度:" len  #输出菱形上半部分
  for i in `seq 1 $len`
  do
    for ((j=$len-1;j>=$i;j--))
    do
      echo -n " "  #打印空格对齐图案
    done
    let num=2*i-1
    for m in `seq 1 $num`
    do
      echo -n "*"  #打印*号
    done
  echo 
  done

  for i in `seq 1 $len`  #输出菱形的下半部分,下半部分要比上半部分少一行
  do
    for ((j=1;j<=$i;j++))
    do
      echo -n " "  #打印空格对齐图案
    done
    let num="2*(len-i)-1"
    for n in `seq 1 $num`
    do
      echo -n "*"  #打印*号
    done
  echo
  done

输出结果如下图所示:

在这里插入图片描述

总结

  • 在本次的两个案例中,所用的算法的是一样的,只是表现形式不太一样。要想把这个图形设计工整,就是要处理好空格与※之间的关系,从而通过循环求得,并且分成两部分赖考虑:在第一部分中,当我们输入len之后,第一行是由len-1个,和一个※号,组成随着行数的增加,空格随之减少,二※号不停增加。从而我们就可以得到两个循环取值范围。for ((j= l e n − 1 ; j > = len-1;j>= len1;j>=i;j–))表示空格的循环,for((m=1;m<= i ; m + + ) ) 表 示 ※ 号 的 循 环 。 在 第 二 部 分 中 , 只 有 l e n − 1 行 , 随 着 行 数 的 减 少 , 空 格 不 断 增 加 , 而 ※ 号 却 在 不 停 的 减 少 。 从 而 我 又 可 以 得 到 两 者 的 循 环 的 取 值 范 围 。 f o r ( ( j = 1 ; j < = i;m++))表示※号的循环。在第二部分中,只有len-1行,随着行数的减少,空格不断增加,而※号却在不停的减少。从而我又可以得到两者的循环的取值范围。for((j=1;j<= i;m++))len1for((j=1;j<=i;j++))表示空格的循环;for((n= l e n − 1 ; n > = len-1;n>= len1;n>=i;n–))表示※号的循环。
  • 1
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值