【无标题】

一、绪论
1.设计背景
Linux是一套免费使用和自由传播的类Unix操作系统,是一个基于POSIX和UNIX的多用户、多任务、支持多线程和多CPU的操作系统。Linux继承了Unix以网络为核心的设计思想,是一个性能稳定的多用户网络操作系统。它主要用于基于Intel x86系列CPU的计算机上。这个系统是由全世界各地的成千上万的程序员设计和实现的。
2.设计目的
设计一个数学运行系统,该系统包含两个数由小到大排序、输出两个数之间所有数之和、输出三个数最小值、输出三个数中间值、输出回文数、输出一组整数中最大偶数和输出一组整数中最小奇数等功能。
二、需求分析
1.系统概述
(1)任务概述
Linux作为多用户、多任务的操作系统,其系统资源是所有用户共享的。Linux设计要用Shell脚本编程实现,将理论学习付诸实践。设计一个数学运算系统,该Shell脚本程序能实现两个数由小到大排序、输出两个数之间所有数之和、输出三个数最小值、输出三个数中间值、输出两个数之间回文数、输出一组整数中最大偶数和输出一组整数中最小奇数等功能。
(2)需求规定
数学运算系统包括一个主程序和七个函数,七个函数分别是两个数由小到大排序、输出两个数之间所有数之和、输出三个数最小值、输出三个数中间值、输出两个数之间回文数、输出一组整数中最大偶数和输出一组整数中最小奇数。
其中主程序运行时能显示一个菜单供用户选择。
2.功能需求
在主Shell脚本文件中有一个多操作选项的菜单以便用户从中选择。在不同任务中,这些操作能自动实现以下功能:
(1)两个数由小到大排序
(2)两个数之间所有数之和
(3)输出三个整数最小值
(4)输出三个数中间值
(5)输出两个数之间回文数
(6)输出一组整数中最大偶数
(7)输出一组整数中最小奇数
三、系统设计
1.模块结构图

2.菜单模块
程序代码:

3.两个数由小到大排序模块
程序代码:

4.两个数之间所有数之和模块
程序代码:

5.输出三个整数最小值模块
程序代码:

6.输出三个数中间值模块
程序代码:

7.输出两个数之间回文数模块
程序代码:

8.输出一组整数中最大偶数模块
程序代码:

9.输出一组整数中最小奇数模块
程序代码:

四、运行结果
1.菜单模块

2.两个整数由小到大排序模块

3.两个数之间所有数之和模块

4.输出三个整数最小值模块

5.输出三个整数中间数模块

6.输出两个数之间回文数模块

7.输出一组整数中最大偶数模块

8.输出一组整数中最小奇数模块

参考脚本

#!/bin/bash

# 函数:两个数由小到大排序
sort_numbers() {
    echo "请输入两个数字,以空格分隔:"
    read num1 num2
    echo "排序后的结果为:"
    echo "$num1 $num2" | tr " " "\n" | sort -n | tr "\n" " "
    echo
}

# 函数:两个数之间所有数之和
sum_between() {
    echo "请输入两个数字,以空格分隔:"
    read num1 num2
    sum=0
    for ((i=num1; i<=num2; i++)); do
        ((sum += i))
    done
    echo "两个数之间所有数之和为:$sum"
}

# 函数:输出三个整数最小值
min_of_three() {
    echo "请输入三个整数,以空格分隔:"
    read num1 num2 num3
    min=$num1
    if [ $num2 -lt $min ]; then
        min=$num2
    fi
    if [ $num3 -lt $min ]; then
        min=$num3
    fi
    echo "三个整数中最小值为:$min"
}

# 函数:输出三个数中间值
median_of_three() {
    echo "请输入三个数字,以空格分隔:"
    read num1 num2 num3
    echo "三个数中间值为:"
    echo "$num1 $num2 $num3" | tr " " "\n" | sort -n | sed -n '2p'
}

# 函数:输出两个数之间的回文数
palindromes_between() {
    echo "请输入两个数字,以空格分隔:"
    read num1 num2
    echo "两个数之间的回文数为:"
    for ((i=num1; i<=num2; i++)); do
        reversed=$(echo $i | rev)
        if [ $i -eq $reversed ]; then
            echo $i
        fi
    done
}

# 函数:输出一组整数中最大偶数
max_even() {
    echo "请输入一组整数,以空格分隔:"
    read -a numbers
    max_even=-1
    for num in "${numbers[@]}"; do
        if [[ $num%2 -eq 0 && $num -gt $max_even ]]; then
            max_even=$num
        fi
    done
    echo "一组整数中最大偶数为:$max_even"
}

# 函数:输出一组整数中最小奇数
min_odd() {
    echo "请输入一组整数,以空格分隔:"
    read -a numbers
    min_odd=999999999
    for num in "${numbers[@]}"; do
        if [[ $num%2 -ne 0 && $num -lt $min_odd ]]; then
            min_odd=$num
        fi
    done
    echo "一组整数中最小奇数为:$min_odd"
}

# 主菜单
while true; do
    echo "请选择操作:"
    echo "1) 两个数由小到大排序"
    echo "2) 两个数之间所有数之和"
    echo "3) 输出三个整数最小值"
    echo "4) 输出三个数中间值"
    echo "5) 输出两个数之间回文数"
    echo "6) 输出一组整数中最大偶数"
    echo "7) 输出一组整数中最小奇数"
    echo "8) 退出"
    read choice
    case $choice in
        1) sort_numbers ;;
        2) sum_between ;;
        3) min_of_three ;;
        4) median_of_three ;;
        5) palindromes_between ;;
        6) max_even ;;
        7) min_odd ;;
        8) echo "退出程序."; exit ;;
        *) echo "无效的选择,请重新输入." ;;
    esac
done

需要不同脚本实现方式可按照如下方式获取:
https://laowangall.oss-cn-beijing.aliyuncs.com/studentall.pdf

  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值