使用go语言:
package main
import (
"fmt"
)
func main() {
jinzhita()
ninenine()
}
func jinzhita() {
// 声明变量
var input_num int
// 获取用户输入
fmt.Print("请输入金子塔的层数:")
fmt.Scanln(&input_num)
// for循环打印控制塔的层数
for i := 1; i <= input_num; i++ {
// 控制每层的输出内容
// 输出前方的空格 空格等于总层数-当前层数
for k := 1; k <= input_num-i; k++ {
fmt.Printf(" ")
}
// 输出*号
for j := 1; j <= i*2-1; j++ {
// if判断打印空心金字塔
// j==1 意为开始的第一个* j==i*2-1 意为最后一个* i==input_num 意思为最后一行
if j == 1 || j == i*2-1 || i == input_num {
fmt.Print("*")
} else {
fmt.Printf(" ")
}
}
fmt.Println()
}
}
// 打印99乘法表
func ninenine() {
var user_answer string
fmt.Print("是否需要展示乘法表?(yes|no)")
fmt.Scanln(&user_answer)
if user_answer == "y" || user_answer == "yes" {
for i := 1; i <= 9; i++ {
for j := 1; j <= i; j++ {
fmt.Printf("%d*%d=%d ", j, i, i*j)
}
fmt.Println()
}
} else if user_answer == "n" || user_answer == "no" {
return
}
}
使用shell
#!/bin/bash
jzt () {
while :
do
read -p "请输入金字塔的层数:" user_input
if [ ! -z $user_input ];
then
for ((i=1;i<=$user_input;i++))
do
for ((k=1;k<=$[user_input-i];k++))
do
echo -n " "
done
for ((j=1;j<=$[i*2-1];j++))
do
if [[ $j -eq 1 || $j -eq $[i*2-1] || $i -eq $user_input ]];
then
echo -n "*"
else
echo -n " "
fi
done
echo
done
break
else
echo "请输入一个数字!"
fi
done
}
nine () {
read -p "是否要打印99乘法表(yes|no)" user_input
if [ $user_input == "yes" -o $user_input == "y" ]
then
for i in {1..9}
do
for ((j=1;j<=$i;j++))
do
echo -n "${j}x${i}=$[j*i] "
done
echo
done | column -t
elif [ $user_input == "no" -o $user_input == "n" ]
then
return
else
return
fi
}
jzt
nine