20240217作业

作业:
1.终端输入一个字符,判断是大写字母小写字母还是数字字符。
2.终端输入年月,需要考虑闰平年,判断该月有多少天(2月闰年29天,平年28天)
3.使用循环求100-1000内的水仙花数
4.求稀疏数组中元素的和(下标不连续)
5.使用循环求家目录下目录文件和普通文件的个数
6.用shell写冒泡排序
7.终端输入学生成绩,判断等级100-90A,90-80B,80-70C,70-60D,60以下不及格。(把输入不合理也考虑进去)
8.整理今天的知识点

 1.终端输入一个字符,判断是大写字母小写字母还是数字字符。

 

#!/bin/bash
read -p "请输入一个字符:" -n 1 z
echo
case $z in
    [A-Z])
        echo 该字符为大写字母
        ;;
    [a-z])
        echo 该字符为小写字母
        ;;
    [0-9])
        echo 该字符为数字
        ;;
    *)
        echo 该字符为其他字符
        ;;
esac

 2.终端输入年月,需要考虑闰平年,判断该月有多少天(2月闰年29天,平年28天)

 

 

#!/bin/bash
read -p "请输入年份:" y
read -p "请输入月份:" m
case $m in
    1|3|5|7|8|10|12)
        echo ${y}年${m}月有31天
        ;;
    4|6|9|11)
        echo ${y}年${m}月有30天
        ;;
    2)
        i=$((y%4))
        j=$((y%100))
        k=$((y%400))
        if [ $i == 0 ] && [ $j != 0 ] || [ $k == 0 ]
        then
            echo ${y}年${m}月有29天
        else
            echo ${y}年${m}月有28天
        fi
esac    


3.使用循环求100-1000内的水仙花数

#!/bin/bash
for i in {100..1000}
do
    num=$i
    sum=0
    while [ $num -gt 0 ]
    do
        digit=$((num % 10))
        sum=$((sum + digit ** 3))
        num=$((num/10))
    done
    if [ $sum -eq $i ]
    then
        echo "$i 是水仙花数"
    fi
done


4.求稀疏数组中元素的和(下标不连续)

 

#!/bin/bash

# 定义稀疏数组
sparseArray=(1 3 6 10 15)

# 初始化总和为 0
sum=0

# 遍历稀疏数组的元素
for element in "${sparseArray[@]}"; do
    # 将当前元素加到总和中
    sum=$((sum + element))
done

# 输出总和
echo "稀疏数组中元素的和为: $sum"

5.使用循环求家目录下目录文件和普通文件的个数

# 定义家目录路径
homeDirectory="$(echo ~)"

# 初始化目录文件个数和普通文件个数
directoryCount=0
fileCount=0

# 使用 for 循环遍历家目录下的文件和目录
for file in "$homeDirectory"/*; do
    # 判断文件是否为目录
    if [ -d "$file" ]; then
        # 如果是目录,则目录文件个数加 1
        directoryCount=$((directoryCount + 1))
    elif [ -f "$file" ]; then
        # 如果是普通文件,则普通文件个数加 1
        fileCount=$((fileCount + 1))
    fi
done

# 输出结果
echo "目录文件个数: $directoryCount"
echo "普通文件个数: $fileCount"


6.用shell写冒泡排序

# 冒泡排序函数
bubbleSort() {
    n=${#array[@]}
    for ((i=0; i<n-1; i++)); do
        for ((j=0; j<n-i-1; j++)); do
            if [ ${array[j]} > ${array[j+1]} ]; then
                temp=${array[j]}
                array[j]="${array[j+1]}"
                array[j+1]="$temp"
            fi
        done
    done
}

# 示例数组
array=(10 8 6 4 2)

# 打印原始数组
echo "原始数组:${array[@]}"

# 调用冒泡排序函数进行排序
bubbleSort

# 打印排序后的数组
echo "排序后的数组:${array[@]}"


7.终端输入学生成绩,判断等级100-90A,90-80B,80-70C,70-60D,60以下不及格。(把输入不合理也考虑进去)

#!/bin/bash 
read -p "请输入学生成绩:" m
if [ $m -gt 100 ] || [ $m -lt 0 ]
then
    echo 该输入不合理
else 
    case $m in
        9?|1??)
            echo 该学生成绩为A
            ;;
        8?)
            echo 该学生成绩为B
            ;;
        7?)
            echo 该学生成绩为C
            ;;
        6?)
            echo 该学生成绩为D
            ;;
        *)
            echo 该学生成绩不及格
    esac
fi


8.整理今天的知识点

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值