Linux项目小练习:这样教刚入门Linux的学妹,想不会都难!

Posted 加辣椒了吗?

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux项目小练习:这样教刚入门Linux的学妹,想不会都难!相关的知识,希望对你有一定的参考价值。


前言

这样教刚入门Linux的学妹,想不会都难!
事先说明哈,这篇文章没有什么技术含量,但我相信对入门的Linux的兄弟萌肯定有会有所帮助嗒!我会尽我能力写的详细一点,把这道题当作练习挺不错的其实。当然,大佬的话可以滑走啦!


一、题目

编写一个显示菜单的 shell 程序,利用函数实现简单的菜单功能,n 的值由键盘 输入:
=================================
(1)计算 1 到 n 的奇数之和;
(2)计算 1 到 n 的阶乘;
(3)计算 1 到 n 的所有素数;
(4)退出程序。
=================================
Please enter function select and number: 1 1000
要求: 自行设计程序。关于素数计算功能应尽量选用高效算法实现。

题目就是这样啦!是不是看起来挺简单的。
但我想说的是:
怎么说呢,这种题就是看起来简单,但你真正做起来多多少少都会碰壁的。
至少对于我一个学linux不久的人来说是这样的。
所以!我想来把我的学习心得分享出来!
记录一下这一天!
希望对你有帮助!

代码如下:

二、使用步骤

1.思路

先分享一下我的思路把:
首先嘛,要一个功能选择判断,当输入小于等于0或者大于4的数字时,要求重新输入!
然后嘛对应的功能用对应函数体表示。功能1是函数f1,以此类推。很简单。

2.代码如下

看代码之前可以自己先练一下,这样收获更大。

echo "==========================================="
echo "**    (1)计算1到n的奇数之和;       **"
echo "**    (2)计算1到n的阶乘;           **"
echo "**    (3)计算1到n的所有素数;       **"
echo "**    (4)退出程序。                 **"
echo "==========================================="

echo "Please enter function select and number:"
echo "Please enter function number:"
read fun
echo "Please enter number"
read num

#如果不在14的范围内,则重新输入
#while后要加空格
while [ $fun -le 0 -o $fun -gt 4 ]
do
  echo "The function select error! Please enter again!"
  echo "Please enter function number:"
  read fun
done

function f1(){
        sum=0
        for((i = 1;i<=$1;i++));
        do
            if [ $(($i % 2)) -ne 0 ];then
                echo "$i是奇数"
                sum=$(($i+$sum))
            fi 
        done
        echo "1到$1的奇数和为:$sum"
}
function f2(){
        sum=1
        for((i = 1;i<=$1;i++));
        do
                #echo "$i"
                sum=$(($sum*$i))
        done
        echo "1到n的阶乘为:$sum"
}

function f3(){
        flag=0
        for((i = 2;i<=$1;i++));
        do
                for((j = 2;j<=$(($i/2));j++));
                do
                        if [ $(($i % $j)) -ne 0 ];then
                                flag=0
                        else
                                flag=1
                                break
                        fi
                done

                if [ $flag -eq 0 ];then
                        echo "$i是素数"
                fi
        done
}
function f4(){
        echo "退出程序啦!"
        exit 0
}

case $fun in
        '1')f1 $num;;
        '2')f2 $num;;
        '3')f3 $num;;
        '4')f4;;
esac


3.运行截图:

当输入小于等于0或者大于4的数字时,要求重新输入!
对应代码:

while [ $fun -le 0 -o $fun -gt 4 ]
do
  echo "The function select error! Please enter again!"
  echo "Please enter function number:"
  read fun
done

(1)计算1到n的奇数之和
当选择功能1时,对应执行代码:

function f1(){
        sum=0
        for((i = 1;i<=$1;i++));
        do
            if [ $(($i % 2)) -ne 0 ];then
                echo "$i是奇数"
                sum=$(($i+$sum))
            fi 
        done
        echo "1到$1的奇数和为:$sum"
}

在这里插入图片描述
(2)计算1到n的阶乘;
当选择功能2时,对应执行代码:

function f2(){
        sum=1
        for((i = 1;i<=$1;i++));
        do
                #echo "$i"
                sum=$(($sum*$i))
        done
        echo "1到n的阶乘为:$sum"
}

在这里插入图片描述
(3)计算1到n的所有素数
当选择功能3时,对应执行代码:

function f3(){
        flag=0
        for((i = 2;i<=$1;i++));
        do
                for((j = 2;j<=$(($i/2));j++));
                do
                        if [ $(($i % $j)) -ne 0 ];then
                                flag=0
                        else
                                flag=1
                                break
                        fi
                done

                if [ $flag -eq 0 ];then
                        echo "$i是素数"
                fi
        done
}

在这里插入图片描述
(4)退出程序
当选择功能4时,对应执行代码:

function f4(){
        echo "退出程序啦!"
        exit 0
}

在这里插入图片描述

总结

我把每一步选择的功能,对应的函数体和运行截图都写出来了。
然后,
来说说我踩过的坑吧!有点憨憨,但确实是我遇到的。
不是if () 而是 if []
不是if() 或while() 而是 if空格[空格 条件 空格]
数字判断要eq(等于),gt(大于),lt(小于),le(小于等于)等。
变量引用要加$
数字运算表达式要 ( ( ) ) 位 置 变 量 (()) 位置变量 (())n是指函数第n个参数
退出是exit0不是exit()

就就这样啦,用这程序去教教学妹吧!说不定(你懂的)
反正我已经收到一堆好人卡了(害羞)
@作者:加辣椒了吗?
简介:憨批大学生一枚,喜欢在博客上记录自己的学习心得,也希望能够帮助到你们!
在这里插入图片描述

以上是关于Linux项目小练习:这样教刚入门Linux的学妹,想不会都难!的主要内容,如果未能解决你的问题,请参考以下文章

❤️大数据专业的学妹问我大数据怎么入门,我总结了亲身体验的学习路线推荐给她推荐收藏❤️

❤️大数据专业的学妹问我大数据怎么入门,我总结了亲身体验的学习路线推荐给她推荐收藏❤️

Linux快速入门打开你的学习之道

欢乐的跳——快看,远处的学妹正向你慢慢走来

淦!我问刚上大学的学妹:最想进的大厂是什么?她给了我一个这样的名单....

疑惑,阿里四面后我竟然败给了人事面的小姐姐?直到清华的学妹给了我这份人事重点问题的回答指南,最后四面百度已拿Offer!