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

实现如下
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.然后打印一个左直角三角形 如图

解题思路 定义一个坐标系 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.打印一个倒左直角三角形 如图

解题思路:当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.打印一个右直角三角形 如图:

解题思路 :第一行首次输出 * 的坐标在(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.打印一个倒右直角三角形 如图 :

解题思路 :当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. 打印一个等腰三角形 如图

解题思路 :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.平移 如图:

解题思路:将左右分量变大,然后思路同上题
实现
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.打印一个平行四边形,如图

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

解题思路: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
网友评论