Bài thực hành shell
Bài 1. Tính tổng S= 1+1/2 +1/3 +… +1/n
Bài làm:
echo " tinh tong s = 1 +1/2+1/3"
echo -n "nhap vao n = "
read n
s=0
for (( i=1; i<=n; i++))
do
s=$(echo "scale=2; $s+1/$i" |bc)
done
echo " tong s= 1 + 1/2 + 1/3 +...+ 1/$n =$s"
exit 0
*************************************************************
Bài 2: Nhập vào 2 số a và b. Tính tích của 2 số a và b
Bài Làm:
tich=0
echo "tinh tich cua hai so"
echo "nhap vao gia tri cua a= "
read a
echo "nhap vao gia tri cua b ="
read b
tich=$(($a * $b))
echo "ket qua = $tich"
****************************************************
Bài 3: Nhập vào số n. Tính tổng chắn và lẻ từ 1 đến n
Bài làm
echo "Tong chan le"
echo "nhap so n"
read n
s1=0
s2=0
for (( i=0; i<=n; i++ ))
do
m=`expr $i % 2`
if [ $m -eq 0 ]
then
s1=$(($s1+$i))
else
s2=$(($s2+$i))
fi
done
echo "tong chan = $s1"
1
echo "tong le = $s2"
exit 0
*****************************************************
Bài 4 Tính tổng các giai thừa từ 1 đến n!
Bài làm
echo "tinh tong giai thua"
echo "nhap vao n"
read n
s=1
s1=0
for (( i=1; i<=n; i++))
do
s=$(($s*$i))
s1=$(($s1+$s))
done
echo "tong giai thua = $s1"
exit 0
*******************************************************
Bài 5. Giải phương trình bậc nhất
Bài Làm
echo "Giai phuong trinh bac nhat"
echo "nhap so a ="
read a
echo "nhao so b ="
read b
if [ $a -eq 0 ] && [ $b -eq 0 ]
then
echo "phuong trinh co vo so nghiem"
elif [ $a -ne 0 ] && [ $b -ne 0 ]
then
x=$(echo "scale=2; -$b/$a" | bc)
echo "phuong trinh co nghiem = $x"
else
echo "phuong trinh vo nghiem"
fi
exit 0
*******************************************************************
2
Bài 6 Giải phương trình bậc 2: A x2 + Bx + C =0 (A<>0)
Bài làm
echo " Giai phuong trinh bac 2"
a=0
while [ $a -eq 0 ]
do
echo " nhap vao a ="
read a
done
echo " nhap vao b ="
read b
echo " nhap vao c ="
read c
delta=$(($b*$b-4*$a*$c))
m=
if [ $delta -lt 0 ]
then
echo " phuong trinh vo nghiem"
elif [ $delta -eq 0 ]
then
x=$((-$b/$((2*$a))))
echo "phuong trinh co nghiem kep $x"
else
x1=$(echo "scale=2; -($b + sqrt($delta))/(2*$a)" | bc)
x2=$(echo "scale=2; -($b - sqrt($delta))/(2*$a)" | bc)
echo " nghiem x1 =$x1"
echo "nghiem x2 = $x2"
fi
exit 0
*****************************************************
Bài 7 Nhập vào 2 số a và b khác 0. Tìm số lớn nhất và nhỏ nhất
Bài Làm
echo "Tim so lon nhat va nho nhat giua hai so khac 0"
a=0
b=0
while [ $a -eq 0 ]
do
echo -n "nhap vao a = "
read a
done
while [ $b -eq 0 ]
do
3
echo -n "nhap vao b = "
read b
done
if [ $a -gt $b ]
then
echo "Max =$a va Min =$b"
elif [ $a -eq $b ]
then
echo "Max =Min =$a"
else
echo "Max =$b va Min =$a"
fi
exit 0
**************************************************
Bài 8 nhập vào một mảng. Tìm giá trị lớn nhất và nhỏ nhất trong mảng
echo "tim so lon nhat va nho nhat trong mang"
n=0
while [ $n -eq 0 ]
do
echo -n "nhap vao so n "
read n
done
for (( i=0; i
do
echo -n " nhap vao phan tu a[$i] ="
read a[$i]
done
for (( i=0; i
do
echo -n " ${a[$i]} ="
done
echo ""
max=${a[0]}
for (( i=0; i
do
if [ ${a[$i]} -gt $max ]
then
max=${a[$i]}
fi
done
min=${a[0]}
for (( i=0; i
4
do
if [ ${a[$i]} -lt $min ]
then
min=${a[$i]}
fi
done
echo "max =$max"
echo "min=$min"
exit 0
******************************************************************
Bài 9 Giải hê ̣ phương trình bậc nhấ t
echo "Giai va bien luan he phuong trinh bac nhat"
echo -n "Nhap vao gia tri A1= "
read A1
echo -n "Nhap vao gia tri B1= "
read B1
echo -n "Nhap vao gia C1= "
read C1
echo -n "nhap vao gia tri A2= "
read A2
echo -n "nhap vao gia tri B2= "
read B2
echo -n "nhap vao gia tri C2= "
read C2
D=0
Dx=0
Dy=0
D=$(($A1*$B2-$A2*$B1))
Dx=$(($C1*$B2-$C2*$B1))
Dy=$(($A1*$C2-$A2*$C1))
if [ $D -ne 0 ]
then
echo "He co nghiem: "
x=$(echo "scale=2; $Dx/$D" |bc)
y=$(echo "scale=2; $Dy/$D" |bc)
echo "x= $x; y=$y"
elif [ $D -eq 0 ] && [ $Dx -eq 0 ] && [ $Dy -eq 0 ]
then
echo "He phuong trinh vo so nghiem "
else
echo "He phuong trinh vo nghiem"
5
fi
exit 0
*******************************************************************
Bài 10 Giải phương trình bậc 2 ax2+bx+c =0 voi a ≠0
echo " gia phuong trinh ax^2 +bx +c =0 voi a<>0"
a=0
while [ $a -eq 0 ]
do
echo -n "nhap vao a= "
read a
done
echo -n "nhap vao b= "
read b
echo -n "nhap vao c = "
read c
delta=$(($b*$b-4*$a*$c))
if [ $delta -eq 0 ]
then
x=$(echo "scale=2; -$b/2*$a" |bc)
echo "phuong trinh co nghiem kep x= $x"
elif [ $delta -gt 0 ]
then
x1=$(echo "scale=2; -($b- sqrt($delta))/2*$a"|bc)
x2=$(echo "scale=2; -($b+ sqrt($delta))/2*$a"|bc)
echo "phuong trinh co hai nghiem x1= $x1, x2=$x2"
else
echo "phuong trinh vo nghiem"
fi
exit 0
****************************************************************
Bai 11 Nhập vào mảng một chiều với n phầ n tử biế t 2 ≤n ≤100
- Nhập vào giá tri ̣ x, cho biế t phàn tử x xuấ t hiê ̣n bao nhiêu lầ n trong mảng vừa nhập
- In ra các phầ n tử âm trong mảng
-Tính tổ ng các phầ n tử chia hế t cho 6 trong mảng
echo "nhap vao mang voi 2<= n <100"
n=1
while [ $n -lt 2 ] || [ $n -ge 100 ]
do
echo -n "nhap vao gia tri n= "
read n
done
6
for (( i=1; i<=n; i++))
do
echo -n "nhap phan tu a[$i] = "
read a[$i]
done
dem=0
echo -n "nhap vao gia tri x= "
read x
for (( i=1; i<=n; i++))
do
if [ ${a[$i]} -eq $x ]
then
dem=$(($dem+1))
fi
done
echo "phan tu $x xuat hien $dem lan trong mang"
echo -n "cac phan tu am cua mang: "
d=0
for (( i=1; i<=n; i++))
do
if [ ${a[$i]} -lt 0 ]
then
d=$(($d+1))
echo "${a[$i]}"
fi
done
if [ $d -eq 0 ]
then
echo "khong co phan tu am"
fi
s=0
for (( i=1; i<=n; i++))
do
if [ $((${a[$i]}%6)) -eq 0 ]
then
s=$(($s+${a[$i]}))
fi
done
echo "tong cac phan tu chia het cho 6 = $s"
exit 0
******************************************************
Bài 12: Nhập vào giá tri ̣ n và x Biế t x≠ 0 và n≠ 0
7
S (x,n)= x^2 +x^4 +x^6 +….+x^2n
echo "s(x,n)=x^2+x^4+x^6+....+x^2n"
n=0
while [ $n -eq 0 ]
do
echo -n "nhap vao gia tri n= "
read n
done
x=0
while [ $x -eq 0 ]
do
echo -n "nhap vao gia tri x= "
read x
done
s=0
s1=0
tg=1
if [ $n -gt 0 ]
then
for (( i=1; i<=n; i++))
do
tg=$(($tg*$x*$x))
s=$(($s+$tg))
done
else
n1=-$n
for (( i=1; i<=n1; i++))
do
tg=$(($tg*$x*$x))
s=$(echo "scale=2; $s+1/$tg"|bc)
done
fi
echo "s(x,n)=$x^2+$x^4+$x^6+....+$x^2$n = $s "
exit 0
********************************************************
Bai 13 Tính tổ ng S(n) = x/1+ x^2/(1*2)+x^3/(1*2*3)+...+x^n/(1*2+*3***n)
Với x, n nhâ ̣p từ bàn phím, và x≠ 0 và n≠ 0
echo "tinh tong S(n) = x/1+ x^2/(1*2)+x^3/(1*2*3)+...+x^n/(1*2+*3***n)"
n=0
while [ $n -eq 0 ]
do
echo -n "nhap vao phan tu n= "
read n
8
done
x=0
while [ $x -eq 0 ]
do
echo -n "nhap vao gia tri cua x= "
read x
done
s=0
tu=1
mau=1
if [ $n -gt 0 ]
then
for (( i=1; i<=n; i++))
do
tu=$(($tu*$x))
mau=$(($mau*$i))
s=$(echo "scale=2; $s+$tu/$mau"|bc)
done
echo "tong s=$s"
else
n1=-$n
for (( i=1; i<=n1; i++))
do
tu=$(($tu*$x))
mau=$(($mau*(-$i)))
s=$(echo "scale=2; $s+1/($mau*$tu)"|bc)
done
echo "tong s=$s"
fi
exit 0
***********************************************************************
Bai 14 Tính tổ ng S(x,n) = - x + x2 – x3 +……..+(-1)^n *x^n
x≠ 0 và n≠ 0
echo " s(x,n)= -x +x^2 -x^3 +.....+ (-1)^n*x^n"
x=0
n=0
while [ $n -eq 0 ]
do
echo -n " nhap vao gia tri n= "
read n
done
while [ $x -eq 0 ]
do
9
echo -n "nhap vao gia tri x= "
read x
done
s=0
s1=0
tg=1
if [ $n -gt 0 ]
then
for (( i=1; i<=n; i++))
do
m=$(($i%2))
tg=$(($tg*$x))
if [ $m -eq 0 ]
then
s=$(($s+$tg))
else
s=$(($s-$tg))
fi
done
echo "tong = $s"
else
n1=-$n
for (( i=1; i<=n1; i++))
do
m=$(($i%2))
tg=$(($tg*$x))
if [ $m -eq 0 ]
then
s1=$(echo "scale=2; $s1+1/$tg"|bc)
else
s1=$(echo "scale=2; $s1-1/$tg"|bc)
fi
done
echo "tong = $s1"
fi
exit 0
***********************************************************************
Bai 15 Nhâ ̣p vào mảng môitj chiề u n phầ n tử với 2≤ n ≤100
- In ra phầ n tử lớn nhấ t trong mảng
- Tính tổ ng các phầ n tử chia hế t cho 4 và 5
10
- Hãy cho biế t phầ n tử 2 xuấ t hiêṇ bao nhiêu lầ n trong dãy
echo " mang mot chieu"
n=0
while [ $n -lt 2 ] || [ $n -gt 100 ]
do
echo -n " nhap vao gia tri n= "
read n
done
for (( i=1; i<=n; i++))
do
echo -n "nhap vao phan tu a[$i]= "
read a[$i]
done
echo -n "mang vua nhap : "
for (( i=1; i<=n; i++))
do
echo -n "${a[$i]} "
done
echo ""
max=${a[1]}
for (( i=1; i<=n; i++))
do
if [ $max -lt ${a[$i]} ]
then
max=${a[$i]}
fi
done
echo "phan tu lon nhat trong mang = $max"
s=0
for (( i=1; i<=n; i++))
do
if [ $((${a[$i]}%4)) -eq 0 ] && [ $((${a[$i]}%5)) -eq 0 ]
then
s=$(($s+${a[$i]}))
fi
done
echo "tong cacs han tu chia het cho 4 va 5 la $s "
dem=0
for (( i=1; i<=n; i++))
do
if [ ${a[$i]} -eq 2 ]
then
dem=$(($dem+1))
fi
11
done
echo "phan tu 2 xuat hien $dem lan"
exit 0
****************************************************************************
Bai 16 Nhâ ̣p vào mảng mô ̣t chiề u gồ m n phầ n tử 2<= n <=100
- In ra phầ n tử nhỏ nhấ t trong mảng
- In ra các phầ n tử chẵn và nhỏ hơn 50
- Tính tổ ng các phầ n tử không chia hế t cho 3
#mang 1 chieu n phan tu 2<= n <=100
# In ra phan tu nho nhat trong mang
# In ra cac phan tu chan va nho hon 50
# Tinh tong cac phan tu khong chia het cho 3
n=1
while [ $n -lt 2 ] || [ $n -gt 100 ]
do
echo -n "nhap vao so phan tu cua n= "
read n
done
for (( i=1; i<=n; i++))
do
echo -n "a[$i]= "
read a[$i]
done
echo -n "mang mot chieu vua nhap:"
for (( i=1; i<=n; i++))
do
echo -n "${a[$i]} "
done
echo ""
min=${a[1]}
for (( i=1; i<=n; i++))
do
if [ $min -gt ${a[$i]} ]
then
min=${a[$i]}
fi
done
echo "phan tu mang nho nhat trong mang : $min"
echo -n "phan tu chan nho hon 50: "
for (( i=1; i<=n; i++))
do
if [ ${a[$i]} -lt 50 ] && [ $((${a[$i]}%2)) -eq 0 ]
12
then
echo -n "${a[$i]} "
fi
done
echo ""
s=0
for (( i=1; i<=n; i++))
do
if [ $((${a[$i]}%3)) -ne 0 ]
then
s=$(($s+${a[$i]}))
fi
done
echo "tong cac phan tu ko chia het cho 3 trong mang : $s"
exit 0
***************************************************************************
Bai 17
#mang 1 chieu n phan tu 2<= n <=100
# In ra phan tu nho nhat trong mang
# In ra cac phan tu chan va nho hon 50
# Tinh tong cac phan tu khong chia het cho 3
n=1
while [ $n -lt 2 ] || [ $n -gt 100 ]
do
echo -n "nhap vao so phan tu cua n= "
read n
done
for (( i=1; i<=n; i++))
do
echo -n "a[$i]= "
read a[$i]
done
echo -n "mang mot chieu vua nhap:"
for (( i=1; i<=n; i++))
do
echo -n "${a[$i]} "
done
echo ""
min=${a[1]}
for (( i=1; i<=n; i++))
do
if [ $min -gt ${a[$i]} ]
13
then
min=${a[$i]}
fi
done
echo "phan tu mang nho nhat trong mang : $min"
echo -n "phan tu chan nho hon 50: "
for (( i=1; i<=n; i++))
do
if [ ${a[$i]} -lt 50 ] && [ $((${a[$i]}%2)) -eq 0 ]
then
echo -n "${a[$i]} "
fi
done
echo ""
s=0
for (( i=1; i<=n; i++))
do
if [ $((${a[$i]}%3)) -ne 0 ]
then
s=$(($s+${a[$i]}))
fi
done
echo "tong cac phan tu ko chia het cho 3 trong mang : $s"
exit 0
*****************************************************************
Bai 18 Tinh tong S(x,n) = - x + 1/x2 – x3 +1/x^4-……..+(-1)^n *1/x^n
(x va n khac 0)
echo " Tinh tong S(x,n)"
x=0
n=0
s1=0
s2=0
s=0
tg=1
while [ $x -eq 0 ]
do
echo -n " nhap gia tri x= "
read x
done
while [ $n -eq 0 ]
do
echo -n "nhap gia tri n= "
14
read n
done
if [ $n -gt 0 ]
then
for (( i=1; i<=n; i++))
do
tg=$(($tg*$x))
if [ $(($i%2)) -eq 0 ]
then
s1=$( echo "scale=2; $s1+1/$tg" |bc)
else
s2=$(($s2-$tg))
fi
done
s=$(echo "scale=2; $s1+$s2" |bc)
echo " tong S= $s"
else
n1=-$n
for (( i=1; i<=n1; i++))
do
tg=$(($tg*$x))
if [ $(($i%2)) -ne 0 ]
then
s1=$( echo "scale=2; $s1-1/$tg" |bc)
else
s2=$(($s2+$tg))
fi
done
s=$(echo "scale=2; $s1+$s2" |bc)
echo " tong S= $s"
fi
exit 0
************************************************************************
Bai 19 Tinh tong S(x,n) = x+x^3 + x^5+ x^7 +…….+x^(2*n+1)
(x va n khac 0)
echo "tinh tong mu le"
x=0
n=0
while [ $x -eq 0 ]
do
echo -n "nhap vao gia tri x= "
read x
15
done
while [ $n -eq 0 ]
do
echo -n "nhap vao gia tri n= "
read n
done
s=$x
s1=0
tg=$x
if [ $n -gt 0 ]
then
for (( i=1; i<=n; i++))
do
if [ $(($i%2)) -ne 0 ]
then
tg=$(($tg*$x*$x))
s=$(($s+$tg))
fi
done
echo "tong s= $s"
else
n1=-$n
s1=$(echo "scale=3; $s1+1/$x" |bc)
for (( i=1; i<=n1; i++))
do
if [ $(($i%2)) -ne 0 ]
then
tg=$(($tg*$x*$x))
s1=$(echo "scale=3;$s1+1/$tg" |bc)
fi
done
echo "tong s= $s1"
fi
exit 0
**************************************************************************
Bai 20 Tinh tong S(x,n) = 1/x + 1*2/x2 +1*2*3/ x3 +…..+1*2*3*...*n/x^n
(x va n khac 0)
echo "bai tinh tong "
x=0
n=0
while [ $n -eq 0 ]
16
do
echo -n "nhap vao gia tri n= "
read n
done
while [ $x -eq 0 ]
do
echo -n "nhap vao gia tri x= "
read x
done
tu=1
mau=1
s1=0
s=0
if [ $n -gt 0 ]
then
for (( i=1; i<=n; i++))
do
tu=$(($tu*$i))
mau=$(($mau*$x))
s=$(echo "scale=2; $s+$tu/$mau"|bc)
done
echo "tong =$s"
else
n1=-$n
for (( i=1; i<=n1; i++))
do
tu=$(($tu*(-$i)))
mau=$(($mau*$x))
s1=$(($s1+$tu*$mau))
done
echo "tong s= $s1"
fi
exit 0
17