Linux|shell编程|实验总结|期末考查试题

1.编写一个Linux的shell编程,计算输入两个年份之间的闰年之和。

#!/bin/bash# 获取用户输入的两个年份
echo "请输入两个年份,用空格隔开:"
read year1 year2# 检查输入的年份是否有效
if [[ ! $year1 =~ ^[0-9]+$ ]] || [[ ! $year2 =~ ^[0-9]+$ ]]; thenecho "输入的年份格式不正确"exit 1
fiif (( year1 > year2 )); thenecho "第一个年份必须小于第二个年份"exit 1
fi# 计算闰年之和
sum=0
for((year=$year1; year<=$year2; year++)); doif (( year % 4 == 0 && (year % 100 != 0 || year % 400 == 0) )); then(( sum++ ))fi
done# 输出闰年之和
echo "从 $year1 年到 $year2 年之间的闰年之和是 $sum"

2.编写一个linux编程,要求用*号打印一个倒梯形。

#!/bin/bash# 获取倒梯形的行数
echo "请输入倒梯形的高度:"
read height# 创建一个与高度相同的二维数组
stars=( )
for ((i=0; i<height; i++)); dostars[$i]=""
done# 在二维数组中填充星号
for ((i=0; i<height; i++)); dofor ((j=0; j<height-i; j++)); dostars[$i]+="*"done
done# 打印二维数组
for ((i=0; i<height; i++)); doecho ${stars[$i]}
done

3.编写一个linux的shell编程,实现列出当前目录里的目录和文件的个数的功能。

#!/bin/bash# 获取当前目录的路径
current_dir=$(pwd)# 使用 find 命令列出当前目录下的所有文件和目录
files_and_dirs=$(find "$current_dir" -maxdepth 1 -type f -o -type d)# 将 find 命令的输出按换行符分割,并保存到数组中
files_and_dirs_array=( $files_and_dirs )# 将数组的长度作为文件和目录的总数
total_files_and_dirs=${#files_and_dirs_array[@]}# 分别计算文件和目录的数量
num_files=0
num_dirs=0
for file_or_dir in "${files_and_dirs_array[@]}"; doif [ -f "$file_or_dir" ]; then((num_files++))elif [ -d "$file_or_dir" ]; then((num_dirs++))fi
done# 打印文件和目录的数量
echo "当前目录 $current_dir 中有 $total_files_and_dirs 个文件和目录,其中包括 $num_files 个文件和 $num_dirs 个目录。"

4.编写一个linux的shell编程,实现打印九九乘法表的功能。

#!/bin/bash# 打印九九乘法表的标题
echo "九九乘法表:"# 使用 for 循环遍历 1 到 9
for i in $(seq 1 9); do# 使用嵌套的 for 循环遍历 1 到 9for j in $(seq 1 9); do# 计算 i 和 j 的乘积product=$((i * j))# 格式化输出,确保每列的宽度相同printf "%2d x %-2d = %-3d  " $i $j $productdone# 换行echo
done

5.编写一个linux的shell编程,实现在当前目录中添加test1,test2, test3文件,并把这三个文件分别剪切到dir1,dir2,dir3目录中去。

#!/bin/bash# 创建test1、test2和test3文件
touch test1 test2 test3# 创建dir1、dir2和dir3目录
mkdir dir1 dir2 dir3# 将test1文件剪切到dir1目录
mv test1 dir1# 将test2文件剪切到dir2目录
mv test2 dir2# 将test3文件剪切到dir3目录
mv test3 dir3

6.编写一个linux的shell编程,制作一个计算器,能进行加减乘除运算。

#!/bin/bash# 获取用户输入的两个数字和运算符
echo "请输入第一个数字:"
read num1echo "请输入第二个数字:"
read num2echo "请输入运算符(+、-、*、/):"
read operator# 根据运算符进行计算
case $operator in"+")result=$((num1 + num2));;"-")result=$((num1 - num2));;"*")result=$((num1 * num2));;"/")if [ $num2 -eq 0 ]; thenecho "除数不能为0"elseresult=$((num1 / num2))fi;;*)echo "无效的运算符";;
esac# 打印计算结果
if [ -n "$result" ]; thenecho "计算结果为:$result"
fi

7.编写一个linux的shell编程,计算100以内的质数和。

#!/bin/bash# 初始化质数和的变量
sum=0# 遍历100以内的数字
for ((i=2; i<=100; i++)); do# 假设i是质数is_prime=1# 从2到i的平方根遍历for ((j=2; j<=$(echo "sqrt($i)" | bc); j++)); do# 如果i被j整除,则i不是质数if (( i % j == 0 )); thenis_prime=0breakfidone# 如果i是质数,则将i添加到质数和中if (( is_prime == 1 )); thensum=$((sum + i))fi
done# 打印质数和
echo "100以内的质数和为:$sum"

8.编写linux的shell编程,把100以内能被3整除但不能被5整除的数列出来,3个一行。

#!/bin/bash# Initialize a counter
i=1# Iterate until i is greater than 100
while [ $i -le 100 ]
do# Check if i is divisible by 3 and not divisible by 5if [ $((i % 3)) -eq 0 ] && [ $((i % 5)) -ne 0 ]then# Print i, followed by a space characterprintf "%3d " $i# Increment the counter by 3((i += 3))# Check if the counter is greater than 100if [ $i -gt 100 ]then# Print a newline character to terminate the lineechofielse# Increment the counter by 1((i += 1))fi
done

9.编写linux的shell编程,制作一个电话本,要有添加,删除,查询,修改,退出功能。

#!/bin/bash# 定义电话本数据结构
declare -A phonebook# 定义主菜单函数
function main_menu() {echo "-----------------------------------------"echo "电话本"echo "-----------------------------------------"echo "1. 添加联系人"echo "2. 删除联系人"echo "3. 查询联系人"echo "4. 修改联系人"echo "5. 退出"echo "-----------------------------------------"echo "请选择一个选项:"
}# 定义添加联系人函数
function add_contact() {echo "请输入联系人姓名:"read nameecho "请输入联系人电话号码:"read phone_numberphonebook[$name]=$phone_numberecho "联系人已添加。"
}# 定义删除联系人函数
function delete_contact() {echo "请输入要删除的联系人姓名:"read nameif [ -z "${phonebook[$name]}" ]; thenecho "联系人不存在。"elseunset phonebook[$name]echo "联系人已删除。"fi
}# 定义查询联系人函数
function query_contact() {echo "请输入要查询的联系人姓名:"read nameif [ -z "${phonebook[$name]}" ]; thenecho "联系人不存在。"elseecho "联系人电话号码:${phonebook[$name]}"fi
}# 定义修改联系人函数
function modify_contact() {echo "请输入要修改的联系人姓名:"read nameif [ -z "${phonebook[$name]}" ]; thenecho "联系人不存在。"elseecho "请输入新的联系人电话号码:"read new_phone_numberphonebook[$name]=$new_phone_numberecho "联系人已修改。"fi
}# 主循环
while true; domain_menuread choicecase $choice in1)add_contact;;2)delete_contact;;3)query_contact;;4)modify_contact;;5)echo "退出电话本。"exit 0;;*)echo "无效的选项。";;esac
done

10.编写linux的shell编程,制作一个石头,剪刀,布的游戏。

#!/bin/bash# 定义游戏手势
declare -a gestures=("石头" "剪刀" "布")# 定义游戏规则
declare -A rules=(["石头"]["剪刀"]="石头赢"["石头"]["布"]="布赢"["剪刀"]["石头"]="石头赢"["剪刀"]["布"]="剪刀赢"["布"]["石头"]="布赢"["布"]["剪刀"]="剪刀赢"
)# 获取玩家手势
function get_player_gesture() {echo "请输入您的手势(石头、剪刀或布):"read player_gesturewhile [[ ! "${gestures[@]}" =~ "$player_gesture" ]]; doecho "无效的手势,请重新输入:"read player_gesturedone
}# 获取电脑手势
function get_computer_gesture() {computer_gesture=${gestures[$RANDOM % 3]}
}# 判断胜负
function judge_winner() {if [[ $player_gesture == $computer_gesture ]]; thenecho "平局"elif [[ ${rules[$player_gesture][$computer_gesture]} == "$player_gesture赢" ]]; thenecho "玩家赢"elseecho "电脑赢"fi
}# 打印结果
function print_result() {echo "玩家手势:$player_gesture"echo "电脑手势:$computer_gesture"echo "胜负结果:$(judge_winner)"
}# 主循环
while true; doget_player_gestureget_computer_gestureprint_resultecho "是否继续游戏(y/n)?"read continue_gameif [[ $continue_game != "y" ]]; thenbreakfi
done

11.编写linux的shell编程,打印一个五角星

#!/bin/bash
#打印五角星
echo   "输出五角星图案"
for (( i1=1;i1<6;i1++ )) #这是五角星的上面一个角
dolet c=19-$i1for ((  j1=1;$j1<$c;j1++ ))  #这是空格do
echo  -n " "done
let d=2*$i1-1
for (( k1=1;$k1<=$d;k1++ ))  #这是“*”do
echo -n "*"
done
echodonefor (( i2=1;i2<5;i2++ )) #这是五角星的中间两个角do
let e=3*$i2-3for  (( j2=1;$j2<$e;j2++ ))do
echo -n " "
done
let f=42-6*$i2
for (( k2=1;$k2<=$f;k2++ ))do
echo -n "*" 
done
echodonefor (( i3=1;i3<3;i3++ ))  #这是中间与下部相接的部分do
let g=12-$i3for (( j3=1;j3<$g;j3++ ))do
echo  -n " "donelet h=12+2*$i3
for (( k3=1;k3<=$h;k3++ ))do
echo -n "*" done
echodonefor (( i4=1;i4<5;i4++ ))  #这是五角星的下面两个角do
let o=10-$i4for (( j4=1;j4<$o;j4++ ))do
echo  -n " "done
let p=10-2*$i4
for (( k4=1;k4<=$p;k4++ ))do
echo -n  "*" done
let q=6*$i4-3
for (( m4=1;m4<$q;m4++ ))do
echo -n " " done
for (( n4=1;n4<=$p;n4++ ))do
echo  -n  "*"
done
echo
doneecho "    *                        *" #盖上角

12.编写一个shell编程,制作一个猜数字游戏。

#!/bin/bash# 生成随机数
random_number=$((RANDOM % 100 + 1))# 获取用户猜测的数字
echo "请输入您猜测的数字:"
read guess# 判断用户猜测的数字是否正确
while [[ $guess != $random_number ]]; doif [[ $guess -lt $random_number ]]; thenecho "您的猜测太小了,请重新猜测:"elseecho "您的猜测太大了,请重新猜测:"firead guess
done# 告诉用户猜对了
echo "恭喜您,您猜对了!"

13.编写linux的shell编程,打印一个10以内的加法表。

#!/bin/bash# 打印加法表的标题
echo "10以内的加法表:"# 使用 for 循环遍历 1 到 10
for ((i=1; i<=10; i++)); do# 使用嵌套的 for 循环遍历 1 到 10for ((j=1; j<=10; j++)); do# 计算 i 和 j 的和sum=$((i + j))# 格式化输出,确保每列的宽度相同printf "%2d + %-2d = %-3d  " $i $j $sumdone# 换行echo
done

14.编写linux的shell编程,打印一个10以内的减法表。

#!/bin/bash# 打印减法表的标题
echo "10以内的减法表:"# 使用 for 循环遍历 1 到 10
for ((i=1; i<=10; i++)); do# 使用嵌套的 for 循环遍历 1 到 10for ((j=1; j<=10; j++)); do# 计算 i 和 j 的差difference=$((i - j))# 格式化输出,确保每列的宽度相同printf "%2d - %-2d = %-3d  " $i $j $differencedone# 换行echo
done

15.编写linux的shell编程,把输入的数字进行求和。

#!/bin/bash# 获取用户输入的数字
echo "请输入要求和的数字,用空格分隔:"
read numbers# 将数字分割成数组
numbers_array=( $numbers )# 初始化求和结果
sum=0# 遍历数组中的每个数字并将其添加到求和结果中
for number in "${numbers_array[@]}"; dosum=$((sum + number))
done# 打印求和结果
echo "求和结果为:$sum"

16.编写linux的shell编程,打印一个等腰三角形。

#!/bin/bash# 获取用户输入的行数
echo "请输入等腰三角形的高度:"
read height# 打印等腰三角形的每一行
for ((i=1; i<=height; i++)); do# 计算当前行的空格数和星号数num_spaces=$((height - i))num_stars=$((2 * i - 1))# 打印空格for ((j=1; j<=num_spaces; j++)); doecho -n " "done# 打印星号for ((j=1; j<=num_stars; j++)); doecho -n "*"done# 换行echo
done

17.编写linux的shell编程,求1-1000中偶数之和。

#!/bin/bash# 初始化偶数之和
even_sum=0# 遍历1到1000
for ((i=1; i<=1000; i++)); do# 如果i是偶数,则将其添加到偶数之和中if (( i % 2 == 0 )); theneven_sum=$((even_sum + i))fi
done# 打印偶数之和
echo "1-1000中偶数之和为:$even_sum"

18.编写linux的shell编程,要求输入一个数字,输出一个*的菱形。

#!/bin/bash# 获取用户输入的行数
echo "请输入菱形的高度:"
read height# 打印菱形的每一行
for ((i=1; i<=height; i++)); do# 计算当前行的空格数和星号数num_spaces=$((height - i))num_stars=$((2 * i - 1))# 打印空格for ((j=1; j<=num_spaces; j++)); doecho -n " "done# 打印星号for ((j=1; j<=num_stars; j++)); doecho -n "*"done# 换行echo# 打印菱形的下半部分for ((i=$((height-1)); i>=1; i--)); do# 计算当前行的空格数和星号数num_spaces=$((i))num_stars=$((2 * i - 1))# 打印空格for ((j=1; j<=num_spaces; j++)); doecho -n " "done# 打印星号for ((j=1; j<=num_stars; j++)); doecho -n "*"done# 换行echodone

19.编写linux的shell编程,要求输入一个数字,以数字输出一个直角三角形。

#!/bin/bash# 获取用户输入的行数
echo "请输入直角三角形的高度:"
read height# 打印直角三角形的每一行
for ((i=1; i<=height; i++)); do# 打印i个数字for ((j=1; j<=i; j++)); doecho -n "$j"done# 换行echo
done

20.编写linux的shell编程,输入一个年份,判断是不是闰年。

#!/bin/bash# 获取用户输入的年份
echo "请输入年份:"
read year# 判断年份是否能被4整除
if (( year % 4 == 0 )); then# 判断年份是否能被100整除if (( year % 100 == 0 )); then# 判断年份是否能被400整除if (( year % 400 == 0 )); thenecho "$year是闰年。"elseecho "$year不是闰年。"fielseecho "$year是闰年。"fi
elseecho "$year不是闰年。"
fi

21.编写一个linux的shell编程,要求输入一个数字n并计算1~n的和,如果输入的数字小于1,则重新输入,直到输入正确的数字为止。

#!/bin/bash# 循环获取用户输入的数字,直到输入正确的数字
while true; doecho "请输入一个数字n:"read n# 判断n是否大于等于1if (( n >= 1 )); thenbreakelseecho "输入的数字必须大于等于1,请重新输入。"fi
done# 计算1到n的和
sum=0
for ((i=1; i<=n; i++)); dosum=$((sum + i))
done# 打印1到n的和
echo "1到$n的和为:$sum"

22.编写linux的shell编程,要求批量创建用户user_00,user_01,.....,user_99.

#!/bin/bash# 定义要创建的用户名的前缀
user_prefix="user_"# 循环创建用户
for i in $(seq -f "%02g" 0 99); dousername="${user_prefix}${i}"useradd -m $username
done

23.编写linux的shell编程,求1-1000以内的奇数之和。

#!/bin/bash# 初始化奇数之和
odd_sum=0# 遍历1到1000
for ((i=1; i<=1000; i++)); do# 如果i是奇数,则将其添加到奇数之和中if (( i % 2 != 0 )); thenodd_sum=$((odd_sum + i))fi
done# 打印奇数之和
echo "1-1000以内的奇数之和为:$odd_sum"

兄弟们,花了点时间整理了一下,希望对兄弟有用,提醒一点的是做练习的时候,写代码就别把代码里面的中文全部写进去了,写一点就好。哪里有问题的,还请兄弟们指正!!!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/235344.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Spring MVC控制层框架

三、Spring MVC控制层框架 目录 一、SpringMVC简介和体验 1. 介绍2. 主要作用3. 核心组件和调用流程理解4. 快速体验 二、SpringMVC接收数据 1. 访问路径设置2. 接收参数&#xff08;重点&#xff09; 2.1 param 和 json参数比较2.2 param参数接收2.3 路径 参数接收2.4 json参…

旅游景区项目信息化建设运营方案:PPT47页,附下载

关键词&#xff1a;智慧景区解决方案&#xff0c;智慧景区建设&#xff0c;智慧景区开发与管理&#xff0c;智慧景区建设的意义&#xff0c;智慧景区管理 一、旅游景区项目信息化建设背景 1、旅游业发展迅速&#xff1a;随着旅游业的不断发展&#xff0c;游客对旅游体验的需求…

Flink(十)【处理函数】

前言 冬天学习成本太高了&#xff0c;每天冻得要死&#xff0c;自习室人满为患&#xff0c;确实是辛苦。学校基本的硬件条件差的一批&#xff08;图书馆贼小贼偏僻、老教室暖气还没有地板热、空教室还得自己一个一个挨着找&#xff09;&#xff0c;个体无法改变环境只能顺应了&…

【ARM Trace32(劳特巴赫) 高级篇 21 -- Trace 系统性能分析 Performance Analyzer】

请阅读【Trace32 ARM 专栏导读】 文章目录 Performance AnalyzerPerf 操作步骤采样对象PC采样对象Memory采样对象 TaskPerformance Analyzer sample-based profiling 通常也叫做Trace32 的性能分析(Perf), 这个功能是通过周期性的采样来实现的。被采样到的数据可以被用于统计…

Apache Flink(十七):Flink On Standalone任务提交-Standalone Application模式

🏡 个人主页:IT贫道_大数据OLAP体系技术栈,Apache Doris,Clickhouse 技术-CSDN博客 🚩 私聊博主:加入大数据技术讨论群聊,获取更多大数据资料。 🔔 博主个人B栈地址:豹哥教你大数据的个人空间-豹哥教你大数据个人主页-哔哩哔哩视频 目录

flink sql1.18.0连接SASL_PLAINTEXT认证的kafka3.3.1

阅读此文默认读者对docker、docker-compose有一定了解。 环境 docker-compose运行了一个jobmanager、一个taskmanager和一个sql-client。 如下&#xff1a; version: "2.2" services:jobmanager:image: flink:1.18.0-scala_2.12container_name: jobmanagerports:…

javafx实现图形编辑器

下面是一个简单的示例,使用JavaFX实现了一个基本的图形编辑器,可以绘制矩形和圆形。 import javafx.application.Application; import javafx.scene.Scene; import javafx.scene.canvas.Canvas; import javafx.scene.canvas.GraphicsContext; import javafx.scene.layout.Bo…

基于RocketMQ实现分布式事务

前言 在上一篇文章Spring Boot自动装配原理以及实践我们完成了服务通用日志监控组件的开发&#xff0c;确保每个服务都可以基于一个注解实现业务功能的监控。 而本文我们尝试基于RocketMQ实现下单的分布式的事务。可能会有读者会有疑问&#xff0c;之前我们不是基于Seata完成了…

AIGC:阿里开源大模型通义千问部署与实战

1 引言 通义千问-7B&#xff08;Qwen-7B&#xff09;是阿里云研发的通义千问大模型系列的70亿参数规模的模型。Qwen-7B是基于Transformer的大语言模型, 在超大规模的预训练数据上进行训练得到。预训练数据类型多样&#xff0c;覆盖广泛&#xff0c;包括大量网络文本、专业书籍…

百度侯震宇:AI原生与大模型将从三个层面重构云计算

12月20日&#xff0c;2023百度云智大会智算大会在北京举办&#xff0c;大会以「大模型重构云计算&#xff0c;Cloud for AI」为主题&#xff0c;深度聚焦大模型引发的云计算变革。 百度智能云表示&#xff0c;为满足大模型落地需求&#xff0c;正在基于「云智一体」战略重构…

ubuntu qt 源码编译

官方源码下载地址 : 源码地址 选择要下载的版本 dmg结尾的是MacOS系统里使用的Qt库&#xff0c;qt-everywhere-opensource-src-4.7.0是Qt源码包&#xff0c;有zip和tar.gz两个压缩格式的&#xff0c;两个内容是一样的&#xff0c;只是zip一般在Windows下比较流行&#xff0c;…

Java:语法速通

参考 菜鸟教程 java 继承 class 父类 { }class 子类 extends 父类 { }继承的特性&#xff1a; 子类拥有父类非private的属性和方法子类可以对父类进行扩展子类可以重写父类的方法使用extends只能单继承&#xff0c;使用implements可以变相的多继承&#xff0c;即一个类继承…

无人机支持的空中无蜂窝大规模MIMO系统中上行链路分布式检测

无人机支持的空中无蜂窝大规模MIMO系统中上行链路分布式检测 无人机支持的空中无蜂窝大规模MIMO系统中上行链路分布式检测介绍题目一. 背景&#xff08;解决的问题&#xff09;二. 系统模型2.1 信道模型2.1.1 信道系数2.1.2 进行标准化 2.2 信道估计 和 数据传输2.2.1 信道估计…

技术面试的斗智斗勇III

上回说到在面试过程中&#xff0c;识别假简历的初级方法&#xff0c;也就是力争3句话就能确定是否假简历&#xff0c;省得后面再费口舌进行技术问题的沟通。 这回说说&#xff0c;用过初级方法后&#xff0c;还有哪些招数可以继续的。真正的高级方法放到下一篇。并且在最后一篇…

在Windows系统平台下部署运行服务端Idea工程的jar服务

前言 目前云原生docker等技术&#xff0c;加上部署流水线大大的简化了各种流程&#xff0c;我们后端开发的人员只需要提交代码后&#xff0c;构建、部署、测试、发布等环节都无需人员接入&#xff0c;完全的自动化交付了。那么你肯定不禁想问&#xff0c;如题的需求不是点击一…

Web 前端—HTML+CSS系列

HTML、CSS 一、HTMLCSS1.1什么是HTML、CSS1.2宇宙第一编辑器VS Code1.3Chrome浏览器1.4、深入了解网站开发 一、HTML基本操作1.web前端三大核心技术2.HTML初始代码3.HTML注释4.HTML语义化5.标题与段落6.文本修饰标签7.图片标签与图片属性8.引入文件的地址路径9.跳转链接10.跳转…

Leetcode—75.颜色分类【中等】

2023每日刷题&#xff08;六十五&#xff09; Leetcode—75.颜色分类 实现代码 class Solution { public:void sortColors(vector<int>& nums) {int red 0, white 0, blue 0;for(auto num: nums) {if(num 0) {red;} else if(num 1) {white;} else {blue;}}for…

在 Docker 上部署 Nacos 并连接到 MySQL

前言 本文旨在指导如何使用 Docker Compose 在 Docker 上部署 Nacos&#xff0c;并配置它连接到一个 MySQL 数据库。 前提条件 安装了 Docker 和 Docker Compose。 步骤 步骤 1: 创建 docker-compose.yml 文件 创建一个名为 docker-compose.yml 的文件&#xff0c;并将以…

机械、电气、自动化与人工智能融合:发展历程、问题与前景

导言 机械、电气、自动化行业与人工智能的结合&#xff0c;推动了工业革命的新浪潮。本文将深入研究这一融合的发展历程、遇到的问题、解决过程&#xff0c;以及未来的可用范围&#xff0c;着重分析在各国的应用现状和未来的研究趋势。同时&#xff0c;探讨在哪些方面能够取得胜…

环境搭建及源码运行_java环境搭建_idea版本下载及安装

1、介绍 Idea是一款被广泛使用的Java集成开发环境&#xff0c;它提供了丰富的功能和工具来帮助开发人员更高效地编写和调试代码。作为一款开源软件&#xff0c;Idea不仅提供了基本的代码编辑、自动完成和调试功能&#xff0c;还支持大量的插件和扩展&#xff0c;可为开发人员提…