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
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/161833.html
標籤:其他
上一篇:Mysql資料庫優化
下一篇:Python 使用 asyncio 時出現 RuntimeError: This event loop is already running 的解決方法
