Chinaunix首页 | 论坛 | 博客
  • 博客访问: 693662
  • 博文数量: 98
  • 博客积分: 3145
  • 博客等级: 中校
  • 技术积分: 1902
  • 用 户 组: 普通用户
  • 注册时间: 2008-12-15 12:52
文章分类
文章存档

2021年(1)

2020年(1)

2016年(8)

2015年(3)

2014年(1)

2013年(5)

2012年(4)

2011年(9)

2010年(12)

2009年(42)

2008年(12)

我的朋友

分类: LINUX

2013-04-24 10:31:36

今天看到一个shell打印伪杨辉三角的问题,觉的好玩,就写了个脚本实现,后续有时间继续整理:
打印需求(以5行为例):
        1         
      2 1 2       
    3 2 1 2 3     
  4 3 2 1 2 3 4   
5 4 3 2 1 2 3 4 5
思想:
  将输出分为2部分,每个打印点为一个空格加1个数,用条件将输出分为2部分,前部分为中心位置之前,后部分为中心位置之后,前部分是先输出空格再根据数的大小递减输出,后部分是先递增输出数,最后输出空格。
实现脚本:
#!/bin/sh
##这个脚本是输出一个类似下面样本的数列
#            1         
#        2  1 2       
#     3 2  1 2 3     
#   4 3 2 1 2 3 4   
#5 4 3 2 1 2 3 4 5
##脚本编写时间2013年4月24日
##by bbzsxjj ver 1.0
echo -n "请输入需要输入的行数:"
read MAX
##设置打印的长度,一般为最大行数的2倍再减一
let "MXLONG=$MAX*2 -1"
#echo $MXLONG
##控制行数
for ((line=1;line<=${MAX};line++))
do
##计算输出的空格数
  space=$(($MAX-$line))
##计算后半部输出时要输出的数字数
  data=$(($MXLONG-$MAX-$space))
##前半部输出
    for ((li=1;li<=${space};li++))
    do
    echo -n "  "
    done
    for ((ni=$line;ni>=1;ni--))
    do
    echo -n "$ni "
    done
##后半部输出
    for ((ei=0;ei<${data};ei++))
    do
##设置输出的数大小
    let "OI=$ei+2"
    echo -n "$OI "
    done
    for ((ci=1;ci<=${space};ci++))
    do
    echo -n "  "
    done
##最后输出空格,完成1行的输出
    echo
done

阅读(1843) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~