#!/bin/bash
#【程序66】
#题目:输入3个数a,b,c,按大小顺序输出。
#1.程序分析:利用指针方法。
#2.程序源代码:
declare -i g1 g2 g3
function main(){
read -p "input 3 numbers: " n1 n2 n3
function swap(){
g1=$1
g2=$2
g3=$3
if [ $g1 -gt $g2 ];then
tmp=$g1
g1=$g2
g2=$tmp
fi
if [ $g1 -gt $g3 ];then
tmp=$g1
g1=$g3
g3=$tmp
fi
if [ $g2 -gt $g3 ];then
tmp=$g2
g2=$g3
g3=$tmp
fi
}
swap $n1 $n2 $n3
echo "$g1 $g2 $g3"
}
main
#!/bin/bash
#题目:输入数组,最大的与第一个元素交换,最小的与最后一个元素交换,输出数组。
#1.程序分析:
#2.程序源代码:
a=()
function inp(){
for i in {0..8};do
read a[$i]
done
}
min=0
max=0
function max_min(){
for i in $(seq 1 $((${#a[*]}-1)) );do
p=$i
if [ ${a[$p]} -gt ${a[$max]} ];then max=$p; fi
if [ ${a[$p]} -lt ${a[$min]} ];then min=$p; fi
done
l=max
k=min
tmp=${a[0]}
a[0]=${a[$l]}
a[$l]=$tmp
tmp=${a[8]}
a[8]=${a[$k]}
a[$k]=$tmp
}
function main(){
inp
for i in {0..8};do
echo -n "${a[$i]} "
done
echo
max_min
for i in {0..8};do
echo -n "${a[$i]} "
done
echo
}
main
#!/bin/bash
#【程序68】
#题目:有n个整数,使其前面各数顺序向后移m个位置,最后m个数变成最前面的m个数
#1.程序分析:
#2.程序源代码:
a=(1 2 3 4 5 6 7 8 9 0)
read -p "back m" m
b=()
#get last m numbers
for i in $(seq $(($m-1)) -1 0);do
b[$(($m -1 - $i))]=${a[$((${#a[*]}-$i-1))]}
done
#shift first numbers
for i in $(seq $((${#a[*]} - 1)) -1 $m );do
a[$i]=${a[$(($i - $m))]}
done
#assign last m numbers to first m numbers.
for i in $(seq 0 $(($m - 1)) );do
a[$i]=${b[$i]}
done
echo "${a[@]}"
#!/bin/bash
#程序69】
#题目:有n个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数),凡报到3的人退出
# 圈子,问最后留下的是原来第几号的那位。
#1. 程序分析:
#2.程序源代码:
function main(){
read -p "Please input the total of numbers: " n
num=()
for i in $(seq 0 $(($n-1)) );do
num[$i]=$(($i+1))
done
i=0
k=0
m=0
while (( m < n - 1));do
if [ ${num[$i]} -ne 0 ];then (( k++ ));fi
if [ $k -eq 3 ];then
num[$i]=0
k=0
(( m++ ))
fi
(( i++ ))
if [ $i -eq $n ];then i=0;fi
done
i=0
while (( ${num[$i]} == 0 ));do (( i++ ));done
echo "${num[$i]}"
}
main
#!/bin/bash
#题目:写一个函数,求一个字符串的长度,在main函数中输入字符串,并输出其长度。
#1.程序分析:
#2.程序源代码
#就这样吧
function main(){
local string="$1"
echo "length of input string is ${#string}"
}
main $1
阅读(974) | 评论(0) | 转发(1) |