设计一个shell程序,该程序能接收用户从键盘输入的20个整数while语句
时间: 2023-12-10 15:41:04 浏览: 121
下面是一个简单的shell程序,可以接收用户从键盘输入的20个整数,并将它们打印出来:
```bash
#!/bin/bash
count=0
while [ $count -lt 20 ]
do
echo "Please enter an integer:"
read num
if [[ $num =~ ^[0-9]+$ ]]; then
array[$count]=$num
count=$((count+1))
else
echo "Invalid input. Please enter an integer."
fi
done
echo "The 20 integers you entered are:"
echo "${array[@]}"
```
该程序使用了一个计数器变量 `$count` 来记录已经读取的整数个数,以及一个数组 `$array` 来存储用户输入的整数。每次循环中,程序会提示用户输入一个整数,然后使用 `read` 命令读取用户的输入,并将其保存到变量 `$num` 中。如果用户输入的不是一个整数,则程序会提示用户重新输入。如果用户输入的是一个整数,则程序将其保存到数组 `$array` 中,并将计数器变量 `$count` 加 1。
当用户输入了 20 个整数后,程序会打印出这些整数,然后退出。注意,该程序只能接收正整数,如果需要支持负数和小数,需要对输入进行更严格的校验。
相关问题
设计Shell程序,该程序能接收用户从键盘输入的20个整数,然后求出其总和、最大值及最小值。
可以使用以下Shell脚本来实现:
```bash
#!/bin/bash
# 定义变量,用于存储总和、最大值和最小值
sum=0
max=
min=
# 使用循环读取用户输入的20个整数
for ((i=1; i<=20; i++))
do
echo "请输入第 $i 个整数:"
read num
# 判断用户输入是否为整数,如果不是则重新输入
while ! [[ "$num" =~ ^[0-9]+$ ]]
do
echo "输入错误,请重新输入第 $i 个整数:"
read num
done
# 计算总和
sum=$((sum + num))
# 判断是否为第一个数,如果是则将其设为最大值和最小值
if [[ $i -eq 1 ]]; then
max=$num
min=$num
else
# 判断当前数是否大于最大值,如果是则更新最大值
if [[ $num -gt $max ]]; then
max=$num
fi
# 判断当前数是否小于最小值,如果是则更新最小值
if [[ $num -lt $min ]]; then
min=$num
fi
fi
done
# 输出总和、最大值和最小值
echo "总和为:$sum"
echo "最大值为:$max"
echo "最小值为:$min"
```
解释一下脚本的每个部分:
1. 定义变量 `sum`、`max` 和 `min`,用于存储总和、最大值和最小值。
2. 使用 `for` 循环读取用户输入的20个整数,循环变量为 `i`。
3. 在每次循环中,使用 `echo` 命令提示用户输入一个整数,并使用 `read` 命令读取用户输入的整数。
4. 判断用户输入是否为整数,如果不是,则使用 `while` 循环提示用户重新输入。
5. 计算总和,使用 `sum=$((sum + num))` 语句。
6. 判断当前数是否为第一个数,如果是,则将其设为最大值和最小值。
7. 如果不是第一个数,则判断当前数是否大于最大值或小于最小值,并更新最大值和最小值。
8. 循环结束后,使用 `echo` 命令输出总和、最大值和最小值。
.使用while语句创建一个根据输入的数值求累加和 (1+2+3+4+...+n)的shell程序。
可以使用以下脚本实现:
```shell
#!/bin/bash
echo "请输入一个整数 n:"
read n
sum=0
i=1
while [ $i -le $n ]
do
sum=$(($sum+$i))
i=$(($i+1))
done
echo "1+2+3+...+$n 的和为:$sum"
```
运行脚本后,会提示用户输入一个整数 n,然后通过 while 循环计算出 1+2+3+...+n 的和,并输出结果。
阅读全文