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

Đề cương ôn tập nhâp môn tin học

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 (194.27 KB, 39 trang )

Tài liệu ôn tập Nhập môn tin học CĐ ĐT K12
Chơng III: Chỉ thị lựa chọn
A. Bài tập giải mẫu:
Bài 1. Viết chơng trình nhập một số nguyên từ bàn phím. Đa thông báo ra màn hình xem
số vừa nhập là số chẵn hay số lẻ.
Hớng dẫn:
Để kiểm tra một số nguyên là chẵn hay lẻ có thể sử dụng hai cách sau:
- Cách 1: Sử dụng hàm odd để kiểm tra số nguyên vừa nhập là chẵn hay lẻ. Hàm này trả về
giá trị TRUE nếu số cần kiểm tra là lẻ. Hàm trả về giá trị FALSE nếu số cần kiểm tra là
chẵn.
- Cách 2: Sử dụng phép chia lấy phần d (MOD). Lấy số cần kiểm tra chia cho 2 lấy phần
d. Nếu phần d bằng không thì số cần kiểm tra là số chẵn. Nếu phần d bằng 1 thì số
cần kiểm tra là số lẻ.
(*********Bài giải***********)
(*********Giải theo cách 1***********)
Program B1C1;
Uses crt;
Var
I:integer;
Begin
Clrscr;
Write('Moi ban nhap mot so nguyen can kiem tra: i = ');
Readln(i);
If odd(i)=True Then
Writeln(' So ',i,' la so le')
Else
Writeln(' So ',i,' la so chan');
Readln;
End.
(**********Giải theo cách 2************)
Program B1C2;


Uses crt;
Var
I:integer;
Begin
Clrscr;
Write('Moi ban nhap mot so nguyen can kiem tra: i = ');
Readln(i);
If i Mod 2 = 0 Then
Writeln(' So ',i,' la so chan')
Else
Writeln(' So ',i,' la so le');


Readln;
End.
Bài 2. Viết chơng trình giải phơng trình bậc nhất một ẩn: ax + b = 0. Trong đó a, b là các
hệ số thực nhập từ bàn phím. Đa kết quả giải đợc ra màn hình.
Hớng dẫn:
Để giải phơng trình bậc nhất đầu tiên phải xét hệ số a. Nếu hệ số a khác 0 thì phơng trình
có một nghiệm x = -b/a. Nếu a = 0 thì phải xét tiếp hệ số b. Nếu b = 0 thì phơng trình có vô
số nghiệm. Nếu b khác 0 thì phơng trình vô nghiệm.
Có hai cách giải: Cách 1 Dùng cấu trúc IF lồng nhau. Cách 2 không dùng IF lồng nhau
(*******Giải*******)
Program B2C1;
Uses crt;
Var
a,b,x:Real;
Begin
clrscr;
Write(' Moi ban nhap he so a = ');

Readln(a);
Write(' Moi ban nhap he so b = ');
Readln(b);
if a = 0 then
if b = 0 then
Writeln(' Phuong trinh da cho vo so nghiem')
Else
Writeln(' Phuong trinh da cho vo nghiem')
Else
Begin
x:=-b/a;
Writeln(' phuong trinh co nghiem la: x = ',x:8:2);
End;
Readln;
End.
(********Giải theo cách 2**********)
Program B2C2;
Uses crt;
Var


a,b,x:Real;
Begin
Clrscr;
Write(' Moi ban nhap he so a = ');
Readln(a);
Write(' Moi ban nhap he so b = ');
Readln(b);
If a<>0 then
Begin

x:=-b/a;
Writeln(' phuong trinh co nghiem la: x = ',x:8:2);
End;
If (a=0) And (b = 0) then
Writeln(' Phuong trinh da cho vo so nghiem');
If (a=0) And (b <> 0) then
Writeln(' Phuong trinh da cho vo nghiem');
Readln;
End.
Bài 3. Viết chơng trình nhập vào 3 số thực a, b, c từ bàn phím. Đa các số vừa nhập ra màn
hình. Sắp xếp 3 số vừa nhập theo chiều tăng dần. Đa 3 số sau khi sắp xếp ra màn hình.
Hớng dẫn:
Để sắp xếp 3 số theo chiều tăng dần ta làm nh sau: Lấy số thứ nhất so sánh với số
thứ hai, nếu số thứ hai lớn hơn số thứ nhất thì tiến hành đổi chỗ số thứ nhất cho số thứ hai,
nếu số thứ hai không lớn hơn số thứ nhất thì không làm gì cả. Tiếp theo lấy số thứ nhất so
sánh với số thứ ba, nếu số thứ ba lớn hơn số thứ nhất thì tiến hành đổi chỗ số thứ ba cho số
thứ nhất, trái lại thì không làm gì cả. Cuối cùng lấy số thứ hai so sánh với số thứ ba, nếu số
thứ hai lớn hơn số thứ ba thì tiến hành đổi chỗ thứ ba cho số thứ hai, nếu không thì không
làm gì cả.
(*******Giải*******)
Program BT3;
Uses Crt;
Var
a,b,c,tg:Real;
Begin
Clrscr;
Write(' Moi nhap so thu nhat: a = ');
Readln(a);



Write(' Moi nhap so thu hai: b = ');
Readln(b);
Write(' Moi nhap so thu ba: c = ');
Readln(c);
Writeln(' Ba so vua nhap la:',a:8:2,b:8:2,c:8:2);
if b>a then
Begin
tg:=a;
a:=b;
b:=tg;
End;
if c>a then
Begin
tg:=a;
a:=c;
c:=tg;
End;
if c>b then
Begin
tg:=c;
c:=b;
b:=tg;
End;
Write(' Ba so sau khi sap xep la: ',a:8:2,b:8:2,c:8:2);
Readln;
End.
Bài 4. Viết chơng trình nhập 3 số thực a, b, c từ bàn phím. Hãy tìm giá trị lớn nhất và nhỏ
nhất trong 3 số vừa nhập và lần lợt gán cho biến Max và Min. Đa 3 số vừa nhập và giá trị
của Max và Min ra màn hình.
Hớng dẫn:

Để tìm giá trị Max ta gán Max bằng a, tiếp theo lấy Max so sánh với b. Nếu b > Max
thì gán giá trị Max mới bằng b. Cuối cùng lấy Max so sánh với c. Nếu c > Max thì gán Max
mới bằng c.
Để tìm Min thì đầu tiên gán Min bằng a, tiếp theo lấy Min so sánh với b. Nếu b < Min thì
gán giá trị Min mới bằng b. Cuối cùng lấy Min so sánh với c. Nếu c < Min thì gán Min mới
bằng c.
(*******Giải********)
Program BT4;


Uses Crt;
Var
a,b,c,Min,Max:Real;
Begin
clrscr;
Write(' Moi ban nhap so thu nhat: a = ');
Readln(a);
Write(' Moi ban nhap so thu hai: b = ');
Readln(b);
Write(' Moi ban nhap so thu ba: c = ');
Readln(c);
Min:=a;
if Min > b then
Min:=b;
If Min > c then
Min:=c;
Max:=a;
if Max Max:=b;
If Max < c then

Max:=c;
Writeln('Gia tri cua 3 so vua nhap la:',a:8:2,b:8:2,c:8:2);
Writeln('Gia tri lon nhat trong 3 so vua nhap la:',Max:8:2);
Writeln('Gia tri nho nhat trong 3 so vua nhap la:',Min:8:2);
Readln;
End.
Bài 5. Viết chơng trình giải hệ phơng trình bậc nhất 2 ẩn sau:
a1. X + b1.Y = c1

a 2. X + b 2.Y = c 2

Trong đó a1, b1, c1, a2, b2, c2 là các hệ số thực nhập từ bàn phím. Đa kết quả giải đợc ra
màn hình.
Hớng dẫn:
Để giải hệ phơng trình này sử dụng phơng pháp định thức Crame nh sau:
Tính D = a1.b2 - a2.b1; DX = c1.b2 - c2.b1; DY = a1.c2 - a2.c1
+ Nếu D = 0, DX = 0 và DY = 0 thì hệ phơng trình vô định
+ Nếu D = 0, DX<>0 hoặc DY<>0 thì hệ phơng trình vô nghiệm


+ NÕu D<>0 th× hÖ cã nghiÖm duy nhÊt:
x = DX/D
y = DY/D
(******** Gi¶i********)
(******Ph−¬ng ph¸p 1: Dïng cÊu tróc if lång nhau ********)
Program BT5C1;
Uses Crt;
Var
a1,a2,b1,b2,c1,c2,D,DX,DY,x,y:Real;
Begin

clrscr;
Write('Moi nhap cac he so cua phuong trinh thu nhat: a1,b1,c1:');
Readln(a1,b1,c1);
Write(' Moi nhap cac he so cua phuong trinh thu hai: a2,b2,c2:');
Readln(a2,b2,c2);
D:=a1*b2 - a2*b1;
DX:=c1*b2 - c2*b1;
DY:=a1*c2 - a2*c1;
if D=0 then
if DX=0 then
if DY=0 then
Writeln(' He phuong trinh vo dinh ')
else
Writeln(' He phuong trinh vo nghiem ')
else
Writeln(' He phuong trinh vo nghiem ')
else
Begin
x:=DX/D;
y:=DY/D;
Writeln(' Nghiem x = ',x:8:2);
Writeln(' Nghiem y = ',y:8:2);
End;
Readln;
End.
(*******C¸ch 2: Dïng to¸n tö logic And**********)


Program BT5;
Uses Crt;

Var
a1,a2,b1,b2,c1,c2,D,DX,DY,x,y:Real;
Begin
clrscr;
Write('Moi nhap cac he so cua phuong trinh thu nhat:a1,b1,c1:');
Readln(a1,b1,c1);
Write('Moi nhap cac he so cua phuong trinh thu hai:a2,b2,c2:');
Readln(a2,b2,c2);
D:=a1*b2 - a2*b1;
DX:=c1*b2 - c2*b1;
DY:=a1*c2 - a2*c1;
if (D<>0) then
Begin
x:=DX/D;
y:=DY/D;
Writeln(' Nghiem x = ',x:8:2);
Writeln(' Nghiem y = ',y:8:2);
End
else
if(DX=0) And (DY=0) then
Writeln(' He phuong trinh vo dinh ')
else
Writeln(' He phuong trinh vo nghiem ');
Readln;
End.
Bài 6. Viết chơng trình nhập vào 3 số thực a, b, c từ bàn phím. Sau đó kiểm tra xem nó có
phải là 3 cạnh của tam giác hay không. Nếu phải thì tiến hành tính diện tích, chu vi và đa ra
tính chất của tam giác (cân, đều, vuông hay thờng). Nếu không phải thì đa thông báo ra
màn hình.
Hớng dẫn: Ba số a, b, c là 3 cạnh của tam giác khi nó thoả mãn đồng thời các điều kiện sau:

a, b, c > 0
a + b > c


a + c > b
b + c > a


Nửa chu vi của tam giác tính theo công thức: p = (a+b+c)/2; Chu vi của tam giác tính theo
công thức: cv = 2*p; Diện tích của tam giác tính theo công
thức: S = p * ( p a ) * ( p b) * ( p c ) . Tam giác là vuông nếu: a2 = b2 + c2 hoặc b2 = a2 + c2
hoặc c2 = a2 + b2. Tam giác là đều nếu a = b = c. Tam giác là cân nếu (a = b) và (b<>c) hoặc
(a=c) và (c<>b) hoặc (b = c) và(c<>a).
(*********Giải**********)
Program BT6;
Uses crt;
Var
a,b,c,p,s:real;
Begin
clrscr;
Write(' Moi nhap so thu nhat: a = ');
Readln(a);
Write(' Moi nhap so thu hai: b = ');
Readln(b);
Write(' Moi nhap so thu ba: c = ');
Readln(c);
if(a>0)And(b>0)And(c>0)And(a+b>c)And(a+c>b)And(b+c>a) then
Begin
p:=(a+b+c)/2;
S:=sqrt(p*(p-a)*(p-b)*(p-c));

Writeln('Dien tich cua tam giac la:',S:8:2);
Writeln('Chu vi cua tam giac la:',2*p:8:2);
if(a=b)and(b=c) then
Writeln('Day la tam giac deu')
else
if (a*a=b*b+c*c)or(b*b=c*c+a*a)or(c*c=a*a+b*b) then
Writeln('Day la tam giac vuong')
else
if((a=b)and(b<>c))or((a=c)and(c<>b))or((b=c)and(c<>a))then
Writeln('Day la tam giac can')
else
Write('Day la tam giac thuong');
End
else
Write('Day khong phai la ba canh cua tam giac');
Readln;


End.
Bài 7. Lập trình đọc vào hai số a và b rồi tính y = 15x2 + x + 72, trong đó
a+b
3

x = 15,172
a-b
a2 b2
+

Nếu a < b
Nếu a = b

Nếu a > b

(*******Giải*******)
Program BT7;
Uses Crt;
Var
a,b,x,y:real;
Begin
clrscr;
Write('Moi nhap so a = ');
Readln(a);
Write('Moi nhap so b = ');
Readln(b);
if ax:=(a+b)/3
else
if a=b then
x:=15.172
else
x:=(a-b)/(a*a+b*b);
y:=15*x*x+x+72;
Write('Gia tri cua bieu thuc la:y=',y:0:2);
Readln;
End.
B. Bài tập tự giải:
Bài 1. Viết chơng trình nhập 3 số thực a, b, c từ bàn phím. Sau đó sắp xếp ba số theo chiều
tăng dần. Đa giá tri của các số trớc và sau khi sắp xếp.
Bài 2. Viết chơng trình nhập 4 số thực a, b, c, d từ bàn phím. Hãy tìm giá trị lớn nhất và nhỏ
nhất trong 4 số vừa nhập và lần lợt gán cho biến Max và Min. Đa 4 số vừa nhập và giá trị
của Max và Min ra màn hình.

Bài 3. Viết chơng trình nhập vào 4 số thực a, b, c, d từ bàn phím. Đa các số vừa nhập ra
màn hình. Sắp xếp 4 số vừa nhập theo chiều tăng dần. Đa 4 số sau khi sắp xếp ra màn hình.


Bài 4. Viết chơng trình nhập 4 số thực a, b ,c, d, e vào từ bàn phím. Tính trung bình cộng
các số chẵn, trung bình cộng các số lẻ. Đa 4 số vừa nhập và kết quả ra màn hình.
Bài 5. Viêt chơng trình nhập vào điểm số của một sinh (10>=điểm>=0). Sau đó đa ra màn
hình điểm chữ của sinh viên đo. Biết rằng điểm F từ 0 đến 3,9; điểm D từ 4 đến 5,4; điểm C
từ 5.5 đến 6,9; điểm B từ 7 đến 8.4; điểm A từ 8.5 đến 10.
Bi 6. Viết chơng trình giải phơng trình bậc nhất một ẩn: ax2 + bx+x = 0. Trong đó a, b,c
là các hệ số thực nhập từ bàn phím. Đa kết quả giải đợc ra màn hình.
Bi 7. Viết chơng trình giải phơng trình bậc nhất một ẩn: ax + b = 0. Trong đó a, b là các
hệ số thực nhập từ bàn phím. Đa kết quả giải đợc ra màn hình.

Chơng IV: Cấu trúc lặp
A. Bài tập giải mẫu
Bài 1. Viết chơng trình tính tổng sau:
S = 1 + 2 + 3 + 4 +...+ n
Với n nguyên dơng nhập từ bàn phím. Đa kết quả tính đợc ra màn hình.
Hớng dẫn:
Đây là bài toán kiểu tính tổng tích luỹ, tức là giá trị của tổng mới sinh ra sẽ bằng giá
trị của tổng cũ cộng thêm một giá trị nào đó. Đối với bài toán bên trên thì tổng mới sẽ bằng
tổg cũ lần lợt cộng với 1, 2, 3, 4,..., n. Với giá trị của tổng ban đầu đợc gán bằng 0.
(*********Giải*********)
Program BT1;
Uses Crt;
Var
i,n,S:Integer;
Begin
clrscr;

Write(' Moi ban nhap gia tri cua n: ');
Readln(n);
S:=0;
for i:=1 to n do
S:=S+i;
Write('Gia tri cua tong ',n,' so nguyen duong dau tien la: ',s);
Readln;
End.
Bài 2. Viết chơng trình nhập một số nguyên không âm từ bàn phím. Nếu ngời sử dụng
nhập số âm thì chơng trình phải yêu cầu ngời sử dụng nhập lại cho đến khi nhập đợc số
nguyên không âm thì thôi. Sau đó tính giai thừa của n. Đa kết quả tính đợc ra màn hình.


(*******Giải**********)
Program BT2;
Uses crt;
Var
n,gt,i:Integer;
Begin
clrscr;
Write('Moi nhap so nguyen duong n: ');
Readln(n);
While n<0 do
begin
clrscr;
Write('Moi ban nhap lai gia tri cho n: ');
Readln(n);
end;
gt:=1;
if n>0 then

for i:=2 to n do
gt:=gt*i;
Write('Gia tri cua giai thua ',n,' la: ',gt);
Readln;
End.
Bài 3. Lập chơng nhập một dãy số nguyên từ bàn phím cho đến khi gặp số 0 rồi tính tổng
các số dơng và trung bình cộng các số âm.
Hớng dẫn:
Bài này phải sử dụng vòng lặp không xác định, lặp đi lặp lại các công việc sau nhập
một số nếu nó là số âm thì cộng nó vào tổng âm, tăng biến đếm số số âm lên 1, trái lại thì thì
cộng nó vào tổng dơng, cho đến khi nhập vào số 0. Tính trung bình cộng các số âm theo
công thc: tổng âm/số số âm.
(********Giải**********)
Program BT6;
Uses crt;
Var
ta,td,da,so:integer;
Begin
clrscr;
ta:=0;
td:=0;
da:=0;


Write('Moi ban nhap vao mot so nguyen: so = ');
Readln(so);
While so<>0 do
Begin
if so>0 then td:=td+so
else

Begin
ta:=ta+so;
da:=da+1;
End;
Write('Moi ban nhap vao mot so nguyen(nhap so 0 ket thuc): so = ');
Readln(so);
End;
Writeln('Tong cac so duong la: ',td);
if da<>0 then Write('Trung binh cong cac so am la: ',ta/da:0:2)
else Write('Trong day khong co so am');
Readln;
End.
Bài 4. Viết chơng trình tính EXP(x) với vòng lặp While. Đa kết quả tính toán ra màn hình.
Hớng dẫn:
x
1!

EXP(x)= 1 + +

x2 x3
xn
+
+ ... +
2! 3!
n!

EXP(x) chính là một tổng tích luỹ, với các thừa số lần lợt đợc ghép vào tổng là:
x x2 x3 x n
, ,...
, Để áp dụng đợc cấu trúc lặp thì các thừa số sau của tổng phải tính đợc

1! 2! 3!
n!

1, ,

dựa vào thừa số đứng trớc nó. và thừa số đầu tiên của tổng phải biết. Trong trờng hợp bài
này thừa số đầu tiên là 1. Sau đó phải tìm ra công thức truy hồi để tính các thừa số của tổng.
Ta có thừa số đầu tiên của tổng là: T(0)=1
x
1!

T(1) = = T (0).

x
1

x2
x
T(2)= = T (1).
2!
2
T (3) =

x3
x
= T (2).
3!
3

.

.
.T(i)=T(i-1)*x/i


Với i từ 1 đến n.
(***********Giải***********)
Program BT12;
Uses Crt;
Var
i,n:Integer;
x,S,T:real;
Begin
clrscr;
Write('Moi nhap n: ');
Readln(n);
Write('Nhap x: ');
Readln(x);
i:=1;
T:=1;
S:=1;
While i<=n do
begin
T:=T*x/i;
S:=S+T;
i:=i+1;
end;
Write('Gia tri cua e mu ',x:0:2,' la:',S:0:4);
Readln;
End.
Bài 5. Viết chơng trình tìm tất cả các số có 3 chữ số abc sao cho tổng các lập phơng của

các chữ số bằng chính số đó. Nghĩa là :
abc = 100a + 10b + c = a 3 + b 3 + c 3 .
Hớng dẫn:
Các chữ số 3 chữ số từ 100 đến 999. Do đó hàng trằm chạy từ 1 đến 9. Hàng chục và hàng
đơn vị chạy từ 0 đến 9.
(********Giải*********)
(***Cách 1: Dùng 3 vòng for lồng nhau*********)
Program BT14C1;
Uses crt;
Var


a,b,c:Integer;
Begin
clrscr;
Write('Cac so thoa man la: ');
for a:=1 to 9 do
for b:=0 to 9 do
for c:=0 to 9 do
if 100*a+10*b+c=sqr(a)*a+sqr(b)*b+sqr(c)*c then
write(a,b,c,' ');
Readln;
End.
(**********Cách 2: Dùng 1 vòng for********)
Program BT14C2;
Uses crt;
Var
a,b,c,i:Integer;
Begin
clrscr;

Write('Cac so thoa man la: ');
for i:=100 to 999 do
begin
a:=i div 100;
b:=(i div 10)mod 10;
c:=i mod 10;
if i=sqr(a)*a+sqr(b)*b+sqr(c)*c then
write(a,b,c,' ');
end;
Readln;
End.
B. Bài tập tự giải
Bài 1. Lập chơng trình đọc x (thực), n (nguyên) từ bàn phím rồi và đa ra màn hình kết quả
tổng sau:

x x 2 x3
xn
S = 1 + + + + ... +
n +1
2 3 4


Bài 2. Đọc vào một dãy số nguyên cho đến khi gặp số 0. Tính tổng và trung bình cộng các số
đã đọc, không tính số 0. Đa kết quả tính đợc ra màn hình.
Bài 3. Đọc vào một dãy kí tự cho đến khi gặp ký tự *. Đếm xem có bao nhiêu chữ a, bao
nhiêu chữ e (thờng và hoa). Đa kết quả ra màn hình.

Chơng V : Dữ liệu kiểu mảng
A. Bài tập giải mẫu
Bài 1. Lập trình đọc vào một dãy số nguyên gồm n (0

trung bình cộng các số chẵn và các số lẻ. Đa dãy vừa nhập, kết quả tính toán ra màn hình.
Hớng dẫn: Để tính trung bình cộng số chẵn ta phải tính tổng của các số chẵn, và đếm số số
chẵn. Tơng tự cho tính trung bình cộng số lẻ.
(*******Giải*********)
Program BT1;
Uses Crt;
Var
n,i,tc,dc,tl,dl:Integer;
a:array[1..10] of Integer;
Begin
clrscr;
Repeat
Write('Moi nhap n: ');
Readln(n);
if (n<=0) or (n>10) then
Writeln('Moi ban nhap lai gia tri cua n sao cho:0Until (n>0)and(n<=10);
{Nhap mang}
For i:=1 to n do
begin
Write('a[',i,']= ');
Readln(a[i]);
end;
{Tinh tong cac so chan, le, dem so chan va le}
tc:=0;
dc:=0;
tl:=0;


dl:=0;

For i:=1 to n do
if a[i] mod 2 =0 then
Begin
tc:=tc+a[i];
dc:=dc+1;
End
else
Begin
tl:=tl+a[i];
dl:=dl+1;
End;
{Dua day vua nhap ra man hinh}
Write('Day so vua nhap: ');
For i:=1 to n do
Write(a[i]:5);
Writeln;
{Tinh trung binh cong chan, le}
if dc<>0 then
Writeln('Trung binh cong cac so chan:',tc/dc:0:2)
else
Writeln('Trong day khong co so chan');
if dl<>0 then
Writeln('Trung binh cong cac so le:',tl/dl:0:2)
else
Writeln('Trong day khong co so le');
Readln;
End.
Bài 2. Viết chơng trình nhập một dãy số nguyên gồm n phần tử (0Đa dãy vừa nhập ra màn hình. Tìm giá trị nhỏ nhất và lớn nhất trong dãy. Đa kết quả tìm
đợc ra màn hình.

Hớng dẫn: Giải thuật tìm số nhỏ nhất và lơn nhất trong một dãy số là: Gán giá trị phần tử
đầu tiên trong dãy cho max và min ban đầu. Sau đó tiến hành duyệt từ phần tử thứ hai đến
phần tử cuối cùng trong dãy, cứ khi nào gặp phần tử nào lớn hơn max thì gán giá trị mới của
max bằng phần tử đó và khi nào gặp phần tử nào nhỏ hơn min thì gán giá trị của min mới
bằng phần tử đó.
(***********Giải*************)


Program BT2;
Uses Crt;
Var
a:array[1..50] of Integer;
i,n,min,max:Integer;
Begin
clrscr;
Repeat
{Nhap n thoa man dieu kien:0Write('Nhap n = ');
Readln(n);
If (n<=0)or(n>50) then
Writeln('Moi ban nhap lai gia tri cua n sao cho:0Until (n>0)and(n<=50);
{Nhap cac phan tu cua mang}
For i:=1 to n do
begin
Write('a[',i,']= ');
Readln(a[i]);
end;
{Dua day vua nhap ra man hinh}
Write('Day so vua nhap la:');

For i:=1 to n do
Write(a[i]:5);
{Tim gia tri lon nhat va nho nhat cua day}
max:=a[1];
min:=a[1];
For i:=2 to n do
begin
if a[i]>max then max:=a[i];
if a[i]end;
{Dua ra gia tri cua min va max}
Writeln;
Writeln('Gia tri lon nhat cua day so la:',max);
Write('Gia tri nho nhat cua day so la:',min);
Readln;


End.
Bài 3. Lập trình đọc vào một dãy gồm n số thực (0dãy vừa nhập có bao nhiêu số dơng, tính tổng của chúng. Đa dãy vừa nhập và kết quả tính
đợc ra màn hình.
(*******Giải**********)
Program BT4;
Uses Crt;
Var
a:array[1..100] of Real;
Dem,n,i:Integer;
Tong:Real;
Begin
clrscr;

{Nhap n thoa man:0Repeat
Write('Nhap n =');
Readln(n);
If (n<=0)or(n>100) then
Writeln('Moi ban nhap lai gia tri cua n sao cho:0Until (n>0)and(n<=100);
{Nhap day so cung voi dem so duong va tong cua chung }
Dem:=0;
Tong:=0;
For i:=1 to n do
Begin
Write('a[',i,']=');
Readln(a[i]);
if a[i]>0 then
begin
Dem:=Dem+1;
Tong:=Tong+a[i];
end;
End;
{Dua day vua nhap va ket qua tinh toan ra man hinh}
Write('Day vua nhap la:');
For i:=1 to n do


Write(a[i]:5:2);
Writeln;
Writeln('Tong cac so duong trong day la:',Tong:0:2);
Write('So cac so duong trong day la:',Dem);
Readln;

End.
Bài 4. Nhập một dãy số nguyên gồm n phần tử (0chiều tăng dần. Đa dãy trớc và sau khi sắp xếp ra màn hình.
(***********Giải************)
Program BT4;
Uses Crt;
Var
a:array[1..20] of Integer;
i,j,n,tg:Integer;
Begin
Clrscr;
{Nhap n thoa man:0Repeat
Write('Moi nhap n = ');
Readln(n);
if (n<=0)or(n>20) then
Writeln('Nhap lai gia tri cua n sao cho:0Until (n>0)and(n<=20);
{Nhap cac phan tu cua mang}
For i:=1 to n do
Begin
Write('a[',i,']=');
Readln(a[i]);
End;
{Dua day vua nhap ra man hinh}
Write('Day vua nhap la:');
For i:=1 to n do
Write(a[i]:5);
{Sap xep lai day}
For i:=1 to n-1 do

For j:=i+1 to n do


if a[j]Begin
tg:=a[i];
a[i]:=a[j];
a[j]:=tg;
End;
{Dua day sau khi sap xep ra man hinh}
Writeln;
Write('Day sau khi sap xep la:');
For i:=1 to n do
Write(a[i]:5);
Readln;
End.
Bài 5. Viết chơng trình nhập một dãy số nguyên gồm n phần tử (0Sắp xếp lại dãy theo chiều giảm dần trị tuyệt đối các phần tử của dãy. Đa dãy trớc và sau
khi sắp xếp ra màn hình.
(***********Giải***********)
Program BT6;
Uses Crt;
Var
a:array[1..50] of Integer;
i,j,n,tg:integer;
Begin
clrscr;
{Nhap n thoa man dieu kien:0Repeat
Write('Nhap n = ');

Readln(n);
if(n<=0)or(n>50) then
Writeln('Nhap lai n sao cho:0Until (n>0)and(n<=50);
{Nhap day so}
For i:=1 to n do
Begin
Write('a[',i,']=');
Readln(a[i]);


End;
{Dua day vua nhap ra man hinh}
Write('Day so vua nhap la:');
For i:=1 to n do
Write(a[i]:5);
{Sap xep lai day theo chieu giam dan tri tuyet doi}
For i:=1 to n-1 do
For j:=i+1 to n do
if abs(a[j])>abs(a[i]) then
Begin
tg:=a[i];
a[i]:=a[j];
a[j]:=tg;
End;
{Dua day sau khi sap xep ra man hinh}
Writeln;
Write('Day sau khi sap xep la:');
For i:=1 to n do
Write(a[i]:5);

Readln;
End.
Bài 6. Viết chơng trình nhập một dãy số nguyên gồm n phần tử (0Nhập thêm một sô nguyên x và vị trí chèn k(1<=k<=n) từ bàn phím. Sau đó chèn số x vừa
nhập vào vị trí k. Đa dãy trớc và sau khi chèn ra màn hình.
Hớng dẫn: Để chèn thêm một số vào dãy đã cho ta tiến hành làm các bớc sau:
Bớc 1: Tiến hành dãn dãy bằng cách đẩy các phần tử của dãy từ vị trí chèn sang bên phải
một vị trí.
Bớc 2: Chèn số cần chèn vào vị trí chèn.
Bớc 3: Tăng số phần tử của dãy lên 1 để in dãy sau khi chèn lên màn hình.
(********Giải**********)
Program BT7;
Uses Crt;
Var
a:array[1..10] of Integer;
i,k,n,x:integer;
Begin
clrscr;


{Nhap n thoa man dieu kien:0Repeat
Write('Nhap n = ');
Readln(n);
if(n<=0)or(n>10) then
Writeln('Nhap lai n sao cho:0Until (n>0)and(n<=10);
{Nhap so chan chen}
Write('Moi nhap so can chen: x= ');
Readln(x);

{Nhap vi tri chen thoa man dieu kien:1<=k<=n}
Repeat
Write('Nhap vi tri chen:k = ');
Readln(k);
if(k<1)or(k>n) then
Writeln('Nhap lai k sao cho:1<=k<=',n);
Until (k>=1)and(k<=n);
{Nhap day so}
For i:=1 to n do
Begin
Write('a[',i,']=');
Readln(a[i]);
End;
{Dua day vua nhap ra man hinh}
Write('Day so vua nhap la:');
For i:=1 to n do
Write(a[i]:5);
{dan day}
for i:=n downto k do
a[i+1]:=a[i];
{chen}
a[k]:=x;
{tang so phan tu cua day}
n:=n+1;
{Dua day sau khi sap xep ra man hinh}
Writeln;
Write('Day sau khi chen la:');


For i:=1 to n do

Write(a[i]:5);
Readln;
End.

B. Bài tập tự giải
Bài 1. Đọc vào k số nguyên từ bàn phím (10<=k<=20).
a) Tìm giá trị chẵn nhỏ nhất trong k số đã cho.
b) Tìm giá trị âm lớn nhất trong k số đã cho.
Bài 2. Viết chơng trình nhập dãy số nguyên gồm n phần tử ( 0 < n <=100 ) từ bàn phím.Sau đó
thực hiện công việc sau:
Đa dãy va nhập ra màn hình.
Nhập thêm một số nguyên x từ bàn phím .Kiểm tra xem số x vừa nhập có trong dãy hay
không. Nếu không có thì đa ra thông báo số vừa nhập không có trong dãy.
Bài 3. Lập trình đọc vào một dãy gồm n số thực (0
trong dãy vừa nhập có bao nhiêu số dơng, tính tổng của chúng. Đa dãy vừa nhập và
kết quả tính đợc ra màn hình
Bài 4. Viết chơng trình nhập một dãy số thực gồm n(0trung bình cộng các số dơng và số âm.Đa dãy vừa nhập và các kết quả tính toán ra màn
hình.
Bài 5. Viết chơng trình nhập vào một dãy số nguyên gồm n phần tử (0xếp lại dãy sao cho các số chẵn lớn hơn 10 lên đầu dãy,tiếp theo là các số lẻ,các số còn lại ở
cuối dãy.Đa dãy trớc và sau sắp xếp ra màn hình.
Bài 6. Đọc vào n số nguyên (n<=50) từ bàn phím.Sau đó thực hiện các công việc sau:
+ Xoá bỏ số đầu tiên của dãy.
+ Đọc vào 1 số nguyên dơng k, nếu k<=n thì xoá số tại vị trí k,nếu k>n thì xoá số
thứ n ra khỏi dãy. Đa dãy ban đầu và dãy sau mỗi lần xoá ra màn hình.
Bài 7. Đọc vào một dãy số nguyên cho đến khi gặp số 0. Sau đó thực hiện các công việc sau:
+ Tính tổng các số nguyên chia hết cho 3 và trung bình cộng các số âm trong các số
đã đọc, không tính số 0.

+ Đa dãy đã đọc và các kết quả tính toán ra màn hình.
Bài 8. Đọc vào n số nguyên từ bàn phím (3+ Đọc 1 số nguyên x, thay giá trị của số thứ 3 bằng x.
+ Thay tất cả các số âm bằng 0.
+ Thay tất cả các số 0 bằng 2 và các số không âm bằng 1.
Đa dãy trớc và sau mỗi lần thay ra màn hình.


Bi 9. Lập trình đọc vào một dãy số nguyên gồm n phần tử (0
phím). Tính trung bình cộng các số chẵn và các số lẻ. Đa dãy vừa nhập, kết quả tín
toán ra màn hình
Bi 10. Viết chơng trình nhập một dãy số nguyên gồm n phần tử (0phím. Đa dãy vừa nhập ra màn hình. Tìm giá trị nhỏ nhất và lớn nhất trong dãy. Đa
kết quả tìm đợc ra màn hình
Bi 11. Viết chơng trình nhập dãy số nguyên gồm n phần tử ( 0 < n <=100 ) từ bàn phím.Sau

đó thực hiện công việc sau:
- Đa dãy va nhập ra màn hình.
- Nhập thêm một số nguyên x từ bàn phím .Kiểm tra xem số x vừa nhập có trong dãy hay
không. Nếu không có thì đa ra thông báo số vừa nhập không có trong dãy.

Chơng VI : Dữ liệu kiểu xâu
A. Bài tập giải mẫu
Bài 1: Lập trình đọc vào một câu(ít hơn 30 ký tự)từ bàn phím rồi đếm xem trong câu có mấy
từ.Từ đợc hiểu là xâu khác rỗng không chứa dấu cách.
Program BT1;
Uses
crt;
Var

cau:string[30];
l,i,dem:byte;
Begin
clrscr;
Write('Moi nhap vao mot cau:');
Readln(cau);
l:=length(cau);dem:=0;
for i:=1 to l-1 do
if(cau[i]<>' ')and(cau[i+1]=' ') then
dem:=dem+1;
Writeln;
Writeln('Cau ban vua nhap la:',cau);
Writeln('So luong cac tu trong cau vua nhap:',dem);
Write('Bam phim bat ky de tiep tuc ');


Readln;
End.
Bài 2. Một xâu đợc gọi là xâu chuẩn, nếu đầu và cuối xâu không có dấu cách đồng thời
trong xâu không có hai dấu cách kề nhau.Lập trình đọc vào một xâu và đa hai xâu ra ở dạng
chuẩn.Đa cả hai xâu ra màn hình.
Program BT2;
Uses
crt;
Var
cau:string;
i:byte;
Begin
clrscr;
Write('Cho vao mot cau khong qua 250 ky tu:');

Readln(cau);
Clrscr;
Writeln('Cau ban dau:',cau);
{Chuẩn hoá câu}
{Xoá các dấu cách ở đầu câu}
While cau[1]=' ' do delete(cau,1,1);
{Xoá dấu cách ở cuối câu}
While cau[length(cau)]=' ' do
delete(cau,length(cau),1);
{Xoá các dấu cách ở cạch nhau trong câu}
i:=1;
While (i<=length(cau)) do
if (cau[i]=' ')and(cau[i+1]=' ') then
delete(cau,i,1)
else i:=i+1;
Writeln('Cau sau khi duoc chuan hoa la:',cau);
Write('Bam mot phim bat ky de tiep tuc');
Readln;
End.
Bài 3. Lập trình đọc vào một câu từ bàn phím rồi đa ra màn hình mỗi từ trong xâu vừa nhập
trên một dòng.
(********Giải cách 1*********)
Program BT3C1;