2. 闰年判断。编写一个shell脚本,提示输入一个4位数,检查输入合法性,对合法的4位数判断该年是否为闰年,并输出判决结果。
时间: 2024-03-23 12:39:07 浏览: 82
好的,以下是 Shell 脚本实现:
```bash
#!/bin/bash
read -p "请输入一个4位数:" year
# 判断输入是否为4位数
if [ ${#year} != 4 ]; then
echo "输入不合法!"
else
# 判断是否为闰年
if [ $(($year % 4)) -eq 0 ] && [ $(($year % 100)) -ne 0 ] || [ $(($year % 400)) -eq 0 ]; then
echo "$year 是闰年"
else
echo "$year 不是闰年"
fi
fi
```
解释一下代码:
首先提示用户输入一个4位数,并使用 `read` 命令读取用户输入的变量 `year`。
然后判断输入的合法性,如果不是4位数就输出提示信息。
接下来,判断该年是否为闰年,如果满足以下条件之一,则为闰年:
1. 该年能够被4整除,但不能被100整除;
2. 该年能够被400整除。
如果不满足条件,则不是闰年。
最后输出判断结果。
相关问题
4. 编写一个Shell脚本,使用until循环输出1000以内所有的水仙花数。
以下是一个使用until循环输出1000以内所有的水仙花数的Shell脚本:
```shell
#!/bin/bash
n=1
until ((n>999)); do
sum=0
i=$n
while ((i>0)); do
digit=$((i%10))
sum=$((sum+digit*digit*digit))
i=$((i/10))
done
if ((n==sum)); then
echo $n
fi
n=$((n+1))
done
```
解释一下代码:
1. 在开始Shell脚本之前,我们使用`#!/bin/bash`来指定脚本使用的shell。
2. 我们使用`n`来表示当前数字,初始值为1,每次循环加1,直到1000。
3. 在循环的每个迭代中,我们使用`sum`来表示当前数字的各个位数的立方和,初始值为0。
4. 我们使用`i`来表示当前要计算的位数,初始值为当前数字`n`。
5. 我们使用一个内部的while循环来计算当前数字的各个位数的立方和。
6. 在while循环中,我们使用`digit`来表示当前位数的值,计算方法是将`i`除以10取余数。
7. 我们将`digit`的立方加到`sum`中,然后将`i`除以10,以计算下一个位数。
8. 当while循环结束时,如果当前数字等于`sum`,则说明它是一个水仙花数,我们将其输出。
9. 最后,我们将`n`加1,开始下一个循环迭代,直到`n`大于999时退出循环。
希望这可以帮助你!
编写一个Shell脚本,使用until循环输出1000以内所有的水仙花数。
好的,以下是一个Shell脚本,可以输出1000以内所有的水仙花数:
```bash
#!/bin/bash
echo "1000以内所有的水仙花数为:"
num=0
until [ $num -eq 1000 ]
do
i=$((num/100)) # 百位数
j=$(((num/10)%10)) # 十位数
k=$((num%10)) # 个位数
if [ $((i*i*i+j*j*j+k*k*k)) -eq $num ]
then
echo $num
fi
num=$((num+1))
done
```
在这个脚本中,我们使用 `until` 循环迭代变量 `num`,从0到999。在每个迭代中,我们将 `num` 拆分成百位数、十位数和个位数,并计算它们的立方和。如果这个立方和等于 `num`,那么 `num` 就是一个水仙花数,我们将其输出即可。
你可以将以上脚本保存为一个 `.sh` 文件,并使用 `chmod +x` 命令赋予执行权限,然后执行该文件即可输出1000以内所有的水仙花数。
阅读全文