1. Trang chủ
  2. » Công Nghệ Thông Tin

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

17 125 1

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 17
Dung lượng 242,32 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Tài liệu sẽ cung cấp cho người dùng những bài tập cơ bản với ngôn ngữ shell trên nền tảng Ubuntu. Bài tập được viết ở dạng base với những lệnh đơn giản dễ dùng, dễ hiểu cho người mới học lập trình shell: như các câu lệnh nhập xuất (các bài tập chủ yếu là đọc dữ liệu từ bàn phím thay vì gán cứng dữ liệu), các câu lệnh for, while và các câu lệnh if...

Trang 1

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"

Trang 2

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

*******************************************************************

Trang 3

Bài 6 Giải phương trình bậc 2: A x 2 + 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

Trang 4

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<n; i++))

do

echo -n " nhap vao phan tu a[$i] ="

read a[$i]

done

for (( i=0; i<n; i++))

do

echo -n " ${a[$i]} ="

done

echo ""

max=${a[0]}

for (( i=0; i<n; i++))

do

if [ ${a[$i]} -gt $max ]

then

max=${a[$i]}

fi

done

min=${a[0]}

for (( i=0; i<n; i++))

Trang 5

do

if [ ${a[$i]} -lt $min ]

then

min=${a[$i]}

fi

done

echo "max =$max"

echo "min=$min"

exit 0

******************************************************************

Ba ̀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"

Trang 6

fi

exit 0

*******************************************************************

Ba ̀i 10 Giải phương trình bậc 2 ax 2 +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 ca ́ c phần tử âm trong mảng

-Ti ́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

Trang 7

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

******************************************************

Ba ̀i 12: Nhập vào giá tri ̣ n và x Biết x≠ 0 và n≠ 0

Trang 8

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 Ti ́nh tổng S(n) = x/1+ x^2/(1*2)+x^3/(1*2*3)+ +x^n/(1*2+*3***n)

́ 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

Trang 9

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 Ti ́nh tổng S(x,n) = - x + x2 – x3 +…… +(-1)^n *x^n

x≠ 0 va ̀ 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

Trang 10

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

- Ti ́nh tổng các phần tử chia hết cho 4 và 5

Trang 11

- Ha ̃y cho biết phần tử 2 xuất hiê ̣n 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

Trang 12

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 ca ́ c phần tử chẵn và nhỏ hơn 50

- Ti ́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 ]

Trang 13

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]} ]

Trang 14

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= "

Trang 15

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

Trang 16

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 ]

Trang 17

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

Ngày đăng: 30/06/2019, 09:20

TỪ KHÓA LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w