shell语言打印矩形、三角形、平行四边形、梯形、菱形、空心菱形等

    科技2022-08-21  133

    shell语言打印三角形、平行四边形、梯形、菱形等

    这是一个循序渐进的过程,请从第一个开始看

    1.打印 ***** ;

    line="";ch="\x2a" # "\x2a"表示星号* for((i=0;i<5;i++));do line=$line$ch done echo -e $line

    2.打印 5*5矩形

    for((j=0;j<5;j++));do line="";ch="\x2a" for((i=0;i<5;i++));do line=$line$ch done echo -e $line done

    3.四种等腰直角三角形

    直角在左下

    for((y=0;y<5;y++));do line="";ch="\x2a" for((x=0;x<=y;x++));do # 看斜线的坐标 line=$line$ch done echo -e $line done

    直角在左上

    for((y=0;y<5;y++));do line="";ch="\x2a" for((x=0;x+y<5;x++));do # 看斜线的坐标 line=$line$ch done echo -e $line done

    直角在右上

    for((y=0;y<5;y++));do line="";ch="\x20" # \x20是空格符 for((x=0;x<5;x++));do if((x==y));then # 当x=y后,空格由星号替代 ch="\x2a" fi line=$line$ch done echo -e $line done

    直角在右下

    for((y=0;y<5;y++));do line="";ch="\x20" for((x=0;x<5;x++));do if((x+y==4));then #过斜线以后 空格由星号替代 ch="\x2a" fi line=$line$ch done echo -e $line done

    4.等腰三角形

    for((y=0;y<5;y++));do line="";ch="\x20" for((x=0;x-y<5;x++));do # 控制右边界 if((x+y==4));then # 控制左边界 ch="\x2a" fi line=$line$ch done echo -e $line done

    5.等腰三角形(距左一定距离)

    left=40;right=40 #左边界顶点位置与右边界顶点位置 for((y=0;y<5;y++));do line="";ch="\x20" for((x=0;x<=right;x++));do if((x==left));then ch="\x2a" fi line=$line$ch done echo -e $line ((left--));((right++)) #控制幅度 也可以写成left-=n; done

    6.等腰梯形

    left=35;right=45 #等腰三角形左右边界顶点位置不同则变成了等腰梯形 for((y=0;y<5;y++));do line="";ch="\x20" for((x=0;x<=right;x++));do if((x==left));then ch="\x2a" fi line=$line$ch done echo -e $line ((left--));((right++)) done

    7.普通三角形(或普通梯形,只需修改left与right不等)

    left=40;right=40;ldlt=-2;rdlt=4 #ldlt rdlt 可以理解成左右边界的斜率 for((y=0;y<5;y++));do line="";ch="\x20" for((x=0;x<=right;x++));do if((x==left));then ch="\x2a" fi line=$line$ch done echo -e $line ((left+=ldlt));((right+=rdlt)) done

    8.平行四边形

    left=40;right=50;ldlt=-4;rdlt=-4 for((y=0;y<5;y++));do line="";ch="\x20" for((x=0;x<=right;x++));do if((x==left));then ch="\x2a" fi line=$line$ch done echo -e $line ((left+=ldlt));((right+=rdlt)) done

    9.菱形

    left=40;right=40;ldlt=-3;rdlt=3;maxy=9 for((y=0;y<maxy;y++));do line="";ch="\x20" for((x=0;x<=right;x++));do if((x==left));then ch="\x2a" fi line=$line$ch done echo -e $line if((y==maxy/2));then ((ldlt*=-1));((rdlt*=-1)) fi ((left+=ldlt));((right+=rdlt)) done

    10.空心菱形

    left=40;right=40;ldlt=-3;rdlt=3;maxy=9 for((y=0;y<maxy;y++));do line="";ch="\x20" for((x=0;x<=right;x++));do if((x==left||x==right));then ch="\x2a" else ch="\x20" fi line=$line$ch done echo -e $line if((y==maxy/2));then ((ldlt*=-1));((rdlt*=-1)) fi ((left+=ldlt));((right+=rdlt)) done
    Processed: 0.008, SQL: 9