Linux编程题

ops/2024/12/28 9:30:45/

编写一个shell脚本,从键盘上输入若干数,计算其平均值

#!/bin/bash# 提示用户输入数字
echo "请输入若干个数字,输入完成后按 Enter,结束输入时请输入 'done':"# 初始化变量
sum=0
count=0# 循环获取用户输入
while true; doread num# 如果输入是 'done',则结束输入if [[ "$num" == "done" ]]; thenbreakfi# 检查输入是否为数字if [[ "$num" =~ ^-?[0-9]+(\.[0-9]+)?$ ]]; thensum=$(echo "$sum + $num" | bc)((count++))elseecho "无效输入,请输入一个数字或 'done' 结束。"fi
done# 计算并输出平均值
if ((count > 0)); thenaverage=$(echo "scale=2; $sum / $count" | bc)echo "输入数字的平均值是:$average"
elseecho "没有有效的数字输入,无法计算平均值。"
fi
  • 用户输入: read num 用于从用户输入接收数字。如果用户输入的是 'done',则退出循环。
  • 验证输入: 使用正则表达式 [[ "$num" =~ ^-?[0-9]+(\.[0-9]+)?$ ]] 检查输入是否为数字,包括正负数和浮点数。
  • 求和与计数: 如果输入有效数字,程序会累加求和并增加计数器 count
  • 计算平均值: 当用户输入完成后,计算平均值并输出。如果没有有效的数字输入,脚本会提示无法计算平均值。

编写一个shell脚本,对输入的整数序列排序,实现插入排序

#!/bin/bash# 提示用户输入整数序列
echo "请输入整数序列,以空格分隔:"
read -a arr  # 读取用户输入的整数序列到数组 arr# 插入排序算法
for ((i=1; i<${#arr[@]}; i++)); dokey=${arr[$i]}  # 当前元素j=$((i - 1))  # 比较的位置,从当前元素的前一个位置开始# 向左移动元素,直到找到合适的位置while [[ j -ge 0 && ${arr[$j]} -gt $key ]]; doarr[$((j + 1))]=${arr[$j]}  # 元素向右移动((j--))  # 继续向左比较done# 将当前元素插入到正确的位置arr[$((j + 1))]=$key
done# 输出排序后的结果
echo "排序后的整数序列:${arr[@]}"

解释:

  1. 读取输入read -a arr 会将用户输入的整数序列(以空格分隔)读取到数组 arr 中。

  2. 插入排序

    • 外循环for ((i=1; i<${#arr[@]}; i++)) 遍历数组,从第二个元素开始。
    • 内循环while [[ j -ge 0 && ${arr[$j]} -gt $key ]] 检查当前元素是否大于它前面的元素,如果大于就将前面的元素右移一位,直到找到合适的位置。
    • 插入当前元素:通过 arr[$((j + 1))]=$key 将当前元素插入到正确的位置。
  3. 输出结果:排序后,通过 ${arr[@]} 输出排序后的数组。


http://www.ppmy.cn/ops/145624.html

相关文章

游戏开发-UE4高清虚幻引擎教程

简介 Unreal Engine 4 相关教程&#xff0c;涵盖美术流程、独立游戏制作编程、虚拟现实实战、高级材质系统、蓝图可视化编程及进阶、RPG 游戏与特效开发、VR 交互虚拟漫游等方面。包含大量视频教程、工程文件及源码&#xff0c;如 UE4 零基础美术教程中有火焰材质等案例及模型…

PDF书籍《手写调用链监控APM系统-Java版》第11章 插件与链路的结合:HttpClient插件实现跨进程传输TraceSegment

本人阅读了 Skywalking 的大部分核心代码&#xff0c;也了解了相关的文献&#xff0c;对此深有感悟&#xff0c;特此借助巨人的思想自己手动用JAVA语言实现了一个 “调用链监控APM” 系统。本书采用边讲解实现原理边编写代码的方式&#xff0c;看本书时一定要跟着敲代码。 作者…

【机器学习】机器学习的基本分类-半监督学习-半监督生成对抗网络(Semi-supervised GANs)

半监督生成对抗网络&#xff08;Semi-supervised GANs&#xff0c;简称 SGAN&#xff09;是一种结合生成对抗网络&#xff08;GAN&#xff09;和半监督学习的模型&#xff0c;能够在有限标注数据和大量未标注数据的情况下训练分类器。它扩展了传统 GAN 的结构&#xff0c;使得判…

高校网络安全存在的问题与对策研究

目 录 摘 要1 第1章 引言2 1.1研究背景2 1.2研究意义2 第2章系统开发的相关技术简介3 2.1 Spring boot框架3 2.2 MySQL简介3 2.3 Vue框架3 2.4 JAVA简介3 第3章 系统需求分析4 3.1可行性分析4 3.1.1技术可行性4 3.1.2运行可行性4 3.1.3经济可行性5 3.2功能需求…

深入了解 Java 字符串:基础、操作与性能优化

在 Java 编程中&#xff0c;字符串 是最常用的数据类型之一。几乎所有的 Java 应用程序都会涉及到字符串操作&#xff0c;无论是读取用户输入、处理文件内容&#xff0c;还是与数据库进行交互。因此&#xff0c;掌握 Java 字符串的使用方式和相关技巧&#xff0c;对开发者来说至…

笔记本电脑需要一直插着电源吗?电脑一直充电的利弊介绍

笔记本电脑属于常用电子设备&#xff0c;它的便携性和功能性给我们带来了很多便利。但是&#xff0c;我们在使用笔记本电脑的时候&#xff0c;是否应该一直插着电源呢&#xff1f;这个问题可能困扰了很多人&#xff0c;因为不同的使用方式可能会对笔记本电脑的性能和寿命产生不…

AI 机器人外呼:智能沟通,开启全新营销与服务篇章

在当今数字化高速发展的时代&#xff0c;企业的营销与客户服务方式正经历着深刻变革。 AI 机器人外呼作为一项创新技术&#xff0c;正逐渐崭露头角&#xff0c;成为众多企业提升效率、优化客户体验的得力助手。 你是否接到过这样的电话&#xff1a;声音清晰流畅&#xff0c;对…

【开源免费】基于Vue和SpringBoot的海滨学院班级回忆录系统(附论文)

本文项目编号 T 114 &#xff0c;文末自助获取源码 \color{red}{T114&#xff0c;文末自助获取源码} T114&#xff0c;文末自助获取源码 目录 一、系统介绍二、数据库设计三、配套教程3.1 启动教程3.2 讲解视频3.3 二次开发教程 四、功能截图五、文案资料5.1 选题背景5.2 国内…