Tải bản đầy đủ (.pdf) (17 trang)

Tồng hợp bài tập Shell có lời giải

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (242.32 KB, 17 trang )

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; ido
echo -n " nhap vao phan tu a[$i] ="
read a[$i]
done
for (( i=0; ido
echo -n " ${a[$i]} ="
done
echo ""
max=${a[0]}
for (( i=0; ido
if [ ${a[$i]} -gt $max ]
then
max=${a[$i]}
fi
done
min=${a[0]}
for (( i=0; i4


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



×