shell脚本实现图形打印(三角形 平行四边形等)

1.首先先引入一个使用 “”打印一个55的图形 如图:

image.png

实现如下

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

2.然后打印一个左直角三角形 如图

image.png

解题思路 定义一个坐标系 x<=y的时候 输出 *


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

3.打印一个倒左直角三角形 如图

image.png

解题思路:当x+y<5的时候输出 *

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

4.打印一个右直角三角形 如图:

image.png

解题思路 :第一行首次输出 * 的坐标在(4,0)第二行在(3,1)...第五行在(0,4),观察可得,x+y=4的时候开始输出 * 其余输出空格
实现如下

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

5.打印一个倒右直角三角形 如图 :

image.png

解题思路 :当x==y的时候开始输出 *
实现如下

for((y=0;y<5;y++));do
   line="";ch="\x20"
   for((x=0;x<5;x++));do
    if((x==y));then
     ch="\x2a"
    fi
     line=$line$ch
   done
   echo -e $line
done

6. 打印一个等腰三角形 如图

image.png

解题思路 :x起始点往左偏移,终止点往右增加,同时起始点以左分量为开始值,右分量为结束值,所以定义左右分量,每循环一次,left--,right++
实现如下:

left=5;right=5
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.平移 如图:

image.png

解题思路:将左右分量变大,然后思路同上题
实现

 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++))
 done

8.打印一个平行四边形,如图

image.png

解题思路:left和right不相等,引入左右偏移量(ldlt和rdlt)当x开始等于left时,输出 * ,大于right时停止输出,每次循环过后,left和right进行偏移

 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.打印一个等腰梯形 如图:

image.png

解题思路:left和right不相等,引入偏移量,左右偏移量相等,当x开始等于left时,输出 * ,大于right时停止输出,每次循环过后,left和right进行偏移
实现

 left=30;right=50;dlt=2
 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-=dlt));((right+=dlt))
 done

你可能感兴趣的:(shell脚本实现图形打印(三角形 平行四边形等))