首页 > 试题广场 >

打印等腰三角形

[编程题]打印等腰三角形
  • 热度指数:12906 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 256M,其他语言512M
  • 算法知识视频讲解
编写一个shell脚本,输入正整数n,打印边长为n的等腰三角形。
示例:
输入:5
输出:
    *
   * *
  * * *
 * * * *
* * * * *
示例1

输入

5

输出

    *
   * *
  * * *
 * * * *
* * * * *
# 方法1: 最笨的方法
# 1: 打印4个空格+"* "*1
# 2:  打印3个空格+"* "*2
# 3:  打印2个空格+"* "*3
# 4:  打印1个空格+"* "*4
# 5:  打印0个空格+"* "*5
# 若打印num等边三角形,则n行应该是
# n: 打印num-n个空格+打印n个“* ”
read -r num
for n in $(seq 1 "$num"); do
    # 打印num-index个空格
    # shellcheck disable=SC2007
    for i in $(seq 1 $[$num-$n]); do
        echo -n ' '
    done
    # 打印n个“* ”
    for j in $(seq 1 "$n"); do
        echo -n '* '
    done
    # 每个循环过后回车换行
    echo
done


# 方法2:使用awk
# 考察点: 由于awk中的语法是c语言,所以num不能再awk的代码块中直接使用,因此使用awk -v {代码块中的变量名}=${shell中的变量名}
# 然后再awk中用正常的思维撰写代码即可
read -r num
awk -v num="${num}" 'BEGIN{
    for(i=0;i<num;i++){
       row=""
       for(j=1;j<num-i;j++) {
           row=row " "
       }
       for(j=0;j<=i;j++) {
           row=row "* "
      }
      print row
    }
}'

发表于 2023-03-20 21:58:43 回复(0)
#!/bin/bash

read n
for (( i=1; i < $n+1; i++)); do # 打印 n 行
    # 打印左半部分空格
    for (( j=$n; j > $i; j-- )); do
        echo -n " "
    done

    # 打印星星
    for (( j=0; j < $i; j++ )); do
        echo -n "* "
    done
    printf '\n'
done

发表于 2023-01-29 12:05:13 回复(0)
while read line
do
arr=$line
((n=arr[0]))
for((i=1;i<=$n;i++))
do
for((j=1;j<=$n-$i;j++))
do
echo -n " "
done
for((t=1;t<=$i;t++))
do
echo -n "* "
done
echo ""
done
done
发表于 2022-09-23 16:52:18 回复(0)
echo -e '    *\n   * *\n  * * *\n * * * *\n* * * * *'
发表于 2022-09-01 21:21:33 回复(0)

前空格、后空格、星号间空格三个循环

awk 'BEGIN{
    for(i=1;i<=5;++i){
        for(j=1;j<=5-i;++j){
            printf(" ")
        }
        for(j=1;j<=i;++j){
            printf("*")
            printf(" ")
        }
        for(j=1;j<=5-i;++j){
            printf(" ")
        }
        printf("\n")
    }
}' 
发表于 2022-08-27 21:09:06 回复(0)
# echo -n 表示输出不换行
for((i=1;i<=5;i++))
do
    for((j=5-i;j>=1;j--))
    do
        echo -n " "
    done
    for((j=i;j>=1;j--))
    do
        echo -n "* "
    done
    echo
done

发表于 2022-07-19 10:27:03 回复(0)
for (( i=1;i<=5;i++))
do
    for ((j=5;(j-i)>0;j--))
    do
        echo -n " "
    done
    for ((k=1;k<=(2*i-1);k++))
    do
        if [ $((k%2)) -eq 0 ]
        then
            echo -n " "
        else
            echo -n "*"
        fi
    done
    echo
done
发表于 2022-07-13 10:01:35 回复(0)
awk '{printf("    *\n   * *\n  * * *\n * * * *\n* * * * *")}'
发表于 2022-06-09 14:09:41 回复(0)
for((i=1;i<=5;i++))
do
    {
    for((e=1;e<=5-i;e++))
    do
        {
            echo -n " "
        }
    done
    for((j=1;j<=i;j++))
    do
        {
            echo -n "* "
        }
    done
    echo
}
done
发表于 2022-05-10 15:44:39 回复(0)
line=5
eval 'ast=`printf "%$((${line}-1))s*"`'

for i in $(seq 1 $line); do 
    echo "$ast"
    ast=${ast/" *"/"* *"}
done
发表于 2022-04-28 10:16:10 回复(0)
echo "    *"
echo "   * *"
echo "  * * *"
echo " * * * *"
echo "* * * * *"
发表于 2022-04-10 14:08:33 回复(0)
awk 'BEGIN{n=5;l=n*2-1;for(i=1;i<=n;i++){for(j=1;j<=n-i;j++){printf " "}for(k=1;k<=i;k++){printf "* "}print x}}'
发表于 2022-03-01 11:33:13 回复(0)
#!/bin/bash
for((i=1;i<=5;i++))
do
    for((j=5-i;j>0;j--))
    do
        printf " "
    done
        for((m=i;m>0;m--))
        do
            printf "* "
        done
printf "\n"
done

发表于 2022-02-25 15:19:36 回复(0)
for((i=1;i<=5;i++))
do
for((j=5-i;j>=1;j--))
do
printf " "
done
for((k=1;k<=i;k++))
do
printf "* "
done
printf "\n"
done

发表于 2021-12-09 09:34:10 回复(0)
for (( i=1;i<=5;i++ ));do
 for ((j=5;j>=1;j-- ));do
    if [ $j -le $i ];then
  echo -e "* \c"
    else
  echo -e " \c"
  fi
  done
 echo
done
发表于 2021-12-02 11:01:58 回复(0)
for((i=1;i<=5;i++))
do
     for((k=5;k>i;k--))
    do
         echo -n " "  
   done
    for((y=1;y<=i;y++))
    do
         echo -n "* " 
   done
    echo ''
done  | sed 's/ $//g'

发表于 2021-11-28 23:29:35 回复(0)