c高级day4作业

  1. 终端输入一个字符,判断是大写字母小写字母还是数字字符。
    #!/bin/bash
    read -p "input字符--->" a 
    case $a in
    	[[:upper:]])
    		echo 大写字母$a
    		;;
    	[[:lower:]])
    		echo 小写字母$a
    		;;
    	[0-9])
    		echo 数字字符$a
    		;;
    	*)
    		echo "error"
    esac
    
  2. 终端输入年月,需要考虑闰平年,判断该月有多少天(2月闰年29天,平年28天)
    #!/bin/bash
    read -p "输入年份" year
    read -p "输入月份" month
    
    if test $((year%4)) -eq 0 && test $((year%100)) -ne 0 || test $((year%400))	-eq 0
    then
    	echo "$year是闰年 "
    	case $month in
    		1|3|5|7|8|10|12)
    			echo $month月有31天
    			;;
    		2)
    			echo $month月有29天
    			;;
    		4|6|9|11)
    			echo $month月有30天
    			;;
    		*)
    			echo error
    	esac
    else
    	echo "$year不是闰年"
    	case $month in
    		1|3|5|7|8|10|12)
    			echo $month月有31天
    			;;
    		2)
    			echo $month月有28天
    			;;
    		4|6|9|11)
    			echo $month月有30天
    			;;
    		*)
    			echo error
    	esac
    fi
    
    
  3. 使用循环求100-1000内的水仙花数
    #!/bin/bash
    echo 100-1000内的水仙花数有
    sum=0
    for((i=100;i<1000;i++))
    do
    	a=i%10
    	b=i/10%10
    	c=i/100
    	sum=$((a**3+b**3+c**3))
    	if [ $sum -eq $i ]
    	then
    		echo $sum 
    	fi
    done
    
  4. 求稀疏数组中元素的和(下标不连续)
    #!/bin/bash
    a=([9]=100 [3]=200 [2]=4 [1]=6 [6]=9)
    for i in ${a[*]}
    do
    	((sum+=i))
    done
    echo $sum
    
  5. 使用循环求家目录下目录文件和普通文件的个数
    #!/bin/bash
    n=0
    m=0
    for file in /home/ubuntu/*
    do
    	if test -d $file
    	then
    		((n++))
    	elif [ -f $file ]
    	then
    		((m++))
    	fi
    done
    echo 目录$n个
    echo 文件$m个
    
  6. 用shell写冒泡排序
    #!/bin/bash
    read -a a
    len=${#a[*]}
    for ((i=1;i<$len;i++))
    do
    	for ((j=0;j<$len-1;j++))
    	do
    		if [ ${a[$j]} -gt ${a[$j+1]} ]
    		#lt降序
    		then
    			temp=${a[$j]}
    			a[$j]=${a[$[$j+1]]}
    			a[$[$j+1]]=$temp
    		fi
    	done
    done
    echo ${a[*]} 
    
  7. 终端输入学生成绩,判断等级100-90A,90-80B,80-70C,70-60D,60以下不及格。(把输入不合理也考虑进去)
    #!/bin/bash
    read -p "学生成绩" a
    if [ $a -gt 100 -o $a -lt 0 ]
    then
    	echo "输入错误"
    else
    	case $a in
    		9[0-9]|100)
    			echo "A"
    			;;
    		8[0-9])
    			echo "B"
    			;;
    		7[0-9])
    			echo "C"
    			;;
    		6[0-9])
    			echo "D"
    			;;	
    		[0-5][0-9]|[0-9])
    			echo 不及格
    			;;
    		*)
    			echo "error"
    	esac
    fi
    

思维导图 

  • 9
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值