编写一个弹出式菜单的shell程序,利用函数实现简单的菜单功能,n的值由键盘输入: ***************************************** ** (1)计算1到n的奇数之和; ** ** (2)计算1到n的阶乘; ** ** (3)计算1到n的所有质数; ** ** (4)退出程序。 ** *****************************************
时间: 2023-07-18 09:48:02 浏览: 76
好的,我可以为您编写这个shell程序。以下是代码:
```shell
#!/bin/bash
function odd_sum() {
sum=0
for (( i=1; i<=$n; i+=2 ))
do
sum=$((sum+i))
done
echo "1到$n的奇数之和为:$sum"
}
function factorial() {
result=1
for (( i=1; i<=$n; i++ ))
do
result=$((result*i))
done
echo "1到$n的阶乘为:$result"
}
function is_prime() {
echo "1到$n的所有质数为:"
for (( i=2; i<=$n; i++ ))
do
flag=0
for (( j=2; j<$i; j++ ))
do
if [ $(($i%$j)) -eq 0 ]
then
flag=1
break
fi
done
if [ $flag -eq 0 ]
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、2、3或4):" choice
case $choice in
1)
read -p "请输入n的值:" n
odd_sum
;;
2)
read -p "请输入n的值:" n
factorial
;;
3)
read -p "请输入n的值:" n
is_prime
;;
4)
exit 0
;;
*)
echo "输入错误,请重新输入!"
;;
esac
done
```
程序中定义了三个函数,分别用于计算1到n的奇数之和、1到n的阶乘和1到n的所有质数。在主循环中,根据用户的选择调用不同的函数。当用户选择退出程序时,程序会调用`exit`函数退出。