使用shell编程,分别使用for和while循环语句,随机产生100个在1-100之间的随机数,并把其中大于50的数值输出
时间: 2024-09-13 13:05:59 浏览: 51
在Shell中,我们可以借助`shuf`命令生成随机数,然后结合`for`或`while`循环遍历并筛选出大于50的数。这里给出两个版本的例子:
**使用`for`循环:**
```bash
#!/bin/bash
random_numbers=$(seq 1 100 | shuf)
echo "$random_numbers" | while IFS= read -r num; do
if (( num > 50 )); then
echo $num
fi
done
```
**使用`while`循环:**
```bash
#!/bin/bash
nums=()
min_max=(1 100) # 这里是范围,也可以直接写成(1 100)
# 生成数组,每个元素为1到100内的随机数
while (( ${#nums[@]} < 100 )); do
nums+=($(( (RANDOM % $((${min_max[1]} - ${min_max[0]} + 1))) + ${min_max[0]} ))
done
# 输出大于50的数字
i=0
while [ $i -lt "${#nums[@]}" ]; do
if (( nums[$i] > 50 )); then
echo ${nums[$i]}
fi
i=$((i+1))
done
```
在这两个例子中,都会先生成100个1到100的随机数,然后遍历它们并过滤大于50的数。
相关问题
shell 输入一个数字 猜 大了 还是猜小了
好的,这可以通过Shell脚本中的条件语句和循环语句实现,代码如下:
```
#!/bin/bash
# 生成1到100之间的一个随机数
target_num=$((RANDOM % 100 + 1))
while true
do
read -p "请猜一个1到100之间的数字:" guess_num
if ! [[ "$guess_num" =~ ^[0-9]+$ ]]; then
echo "输入不合法,请输入一个数字!"
continue
fi
if [ "$guess_num" -lt "$target_num" ]; then
echo "猜小了,请再猜一次!"
elif [ "$guess_num" -gt "$target_num" ]; then
echo "猜大了,请再猜一次!"
else
echo "恭喜你,猜对了!"
break
fi
done
```
你可以将这段代码保存为一个.sh文件,然后在终端中运行。程序会生成一个1到100之间的随机数,然后要求你输入一个数字,如果猜小了,就会提示“猜小了,请再猜一次!”,如果猜大了,就会提示“猜大了,请再猜一次!”,直到你猜对为止。
阅读全文