编写一个弹出式菜单的shell程序,利用函数实现简单的菜单功能,n的值由键盘输入: ***************************************** ** (1)计算1到n的奇数之和; ** ** (2)计算1到n的阶乘; ** ** (3)计算1到n的所有质数; ** ** (4)退出程序。 ** *****************************************
时间: 2023-07-18 17:48:09 浏览: 132
好的,以下是一个可能的解决方案:
```bash
#!/bin/bash
# 计算1到n的奇数之和
function sum_odd {
read -p "请输入n的值:" n
sum=0
for (( i=1; i<=n; i+=2 ))
do
sum=$((sum+i))
done
echo "1到$n的奇数之和为:$sum"
}
# 计算1到n的阶乘
function factorial {
read -p "请输入n的值:" n
result=1
for (( i=1; i<=n; i++ ))
do
result=$((result*i))
done
echo "1到$n的阶乘为:$result"
}
# 计算1到n的所有质数
function prime_numbers {
read -p "请输入n的值:" n
echo "1到$n的所有质数为:"
for (( i=2; i<=n; i++ ))
do
prime=true
for (( j=2; j<i; j++ ))
do
if [ $((i%j)) -eq 0 ]
then
prime=false
break
fi
done
if $prime
then
echo $i
fi
done
}
# 主程序
while true
do
echo "*****************************************"
echo "** (1)计算1到n的奇数之和; **"
echo "** (2)计算1到n的阶乘; **"
echo "** (3)计算1到n的所有质数; **"
echo "** (4)退出程序。 **"
echo "*****************************************"
read -p "请选择菜单项(1-4):" choice
case $choice in
1) sum_odd ;;
2) factorial ;;
3) prime_numbers ;;
4) break ;;
*) echo "无效的选择,请重新输入。" ;;
esac
done
```
这段代码使用了 Bash 脚本语言,定义了三个函数分别用于计算1到n的奇数之和、1到n的阶乘和1到n的所有质数。主程序使用 while 循环不断显示菜单,并根据用户选择调用不同的函数,直到用户选择退出程序。
注意,这个程序是一个交互式程序,需要在终端中运行,并且只能输入数字 1 到 4 来进行选择。如果用户输入了其他的内容,程序会提示无效的选择并重新显示菜单。
阅读全文
相关推荐
















