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

BT kiểu mảng 1 chiều, câu lệnh lặp

14 4 0

Đ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

Tiêu đề BT kiểu mảng 1 chiều, câu lệnh lặp
Trường học Trường Đại học Công Nghệ Thông Tin - Đại học Quốc Gia Hà Nội
Chuyên ngành Công nghệ thông tin
Thể loại Bài tập
Năm xuất bản 2023
Thành phố Hà Nội
Định dạng
Số trang 14
Dung lượng 84,5 KB
File đính kèm BT kiểu mảng 1 chiều, câu lệnh lặp.rar (22 KB)

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

Nội dung

1 8 TÓM TẮT LÝ THUYẾT PASCAL 1 Khai báo a Thư viện màn hình, âm thanh USES CRT; (Để dùng các lệnh CLRSCR; READKEY ) b Hằng CONST biến = giá trị (vd CONST m=10) Thường dùng khi làm bài tập với mảng c B.

Trang 1

TÓM TẮT LÝ THUYẾT PASCAL

1 Khai báo :

a Thư viện màn hình, âm thanh…: USES CRT; (Để dùng các lệnh: CLRSCR;

READKEY…)

b Hằng: CONST biến = giá trị (vd: CONST m=10) Thường dùng khi làm bài tập

với mảng.

c Biến: VAR biến : kiểu dữ liệu Ví dụ: (xem bảng bên dưới)

integer hoa Set ofchar

2 Một số câu lệnh và lưu ý:

a IF <Điều kiện> THEN <Lệnh > hoặc IF <Điều kiện> THEN <Lệnh 1> ELSE

<Lệnh 2>;

b CASE <biến> OF

giá trị 1: lệnh 1;

giá trị 2: lệnh 2;

……

giá trị n: lệnh n;

ELSE lệnh 0;

END; (lưu ý phải có END-kết thúc lệnh CASE, nếu không chương trình báo lỗi em sẽ khó phát

hiện được)

c FOR biến := giá trị đầu TO/DOWN TO giá trị cuối DO <câu lệnh>

Lưu ý: Đối với TO giá trị đầu =< giá trị cuối, đối với DOWN TO giá trị đầu >= giá

trị cuối; nhiều câu lệnh thì phải dùng BEGIN…END.

d REPEAT <các lệnh> UNTIL <điều kiện đúng>

e WHILE <Điều kiện đúng> DO <câu lệnh>

Lưu ý: Nhiều câu lệnh thì phải dùng BEGIN…END.

* Đối với các câu lệnh lặp phải có điều kiện thoát, nếu không chương trình

sẽ bị treo Khi giải toán có câu lệnh lặp nên lưu tập tin trước khi chạy chương trình.

3 Một số hàm, thủ tục

a Kiểu nguyên:

Phép toán: MOD : Chia lấy phần dư (10 mod 3 = 1);

DIV: Chia lấy phần nguyên (10 div 3 =3)

b Kiểu Thực:

Hàm TRUNC(X): Lấy phần nguyên của X không lấy phần lẻ

(TRUNC(32,456)=32)

c Kiểu kí tự:

Hàm CHR(x): Trả về giá trị là kí tự trong mã ASCII ứng với số thứ tự x.

(CHR(65)=’A’; hoặc #65=’A’)

Hàm ORD(ch): Trả về giá trị là số thứ tự của ký tự ch trong bảng mã ASCII

(ORD(‘a’)=97.

Vị trí của một số ký tự trong bảng mã ASCII (phải học thuộc lòng):

Phím cách trống 32, phím Enter: 13, phím ESC: 27, A : 65 , a: 97,

Hàm READKEY(Ch:=Readkey): Nhận một ký tự từ bàn phím (gán cho Ch)

nhưng không hiện ký tự này (Dùng cho bài mật khẩu…).

Trang 2

Hàm KEYPRESSED; cho giá trị true nếu có 1 phím được bấm, ngược lại cho

gía trị false.

d Kiểu chuổi:

Hàm LENGTH(S): Trả về giá trị là độ dài của chuổi S

Hàm COPY(S,P,N): Lấy chuổi S tại vị trí P, lấy N kí tự.

Hàm POS(S1,S): Trả về giá trị là vị trí của S1 trong S, nếu không thấy thì

bằng 0.

Thủ tục DELETE(S,P,N): Xoá chuổi S từ vị trí P, xoá đi N kí tự.

Thủ tục INSERT(S1,S,P): Chèn chuổi S1 vào chuổi S tại vị trí P.

Thủ tục STR(X,S): Biếu đổi số X ra thành chuổi S.

Thủ tục VAL(S,X,C): Biến đổi chuổi S thành số X nếu đúng thì C=0, nếu không C sẽ nhận giá trị tại vị trí không biến đổi được.(VD:

Val(‘128b7,x,c) c=4 – không biến đổi được).

*Mảng 1 chiều:

1-Khai báo biết mảng:

Var tênmảng: array[m1 m2] of kiểuphầntử;

Giải thích: Ở đây m1, m2 là hai hằng xác định phạm vi của chỉ số đầu (m1) và chỉ

số cuối (m2), chúng có chung một kiểu dữ liệu

Ví dụ: var a:array[1 100] of integer;

2-Nhập giá trị cho các biến mảng:

for i:=1 to n do

begin

write('nhap so thu ',i,':');

readln(a[i]);

end;

3-Xuất giá trị của các biến mảng:

for i:=1 to n do

write(a[i],' ');

e Kiểu mảng:

Giải thuật sắp xếp mảng: (Phải nắm vững)

For i:=1 to n-1 do

For j:=i+1 to n do

If a[i]<a[j] (hoặc a[i]>a[j]) then

Begin Tam:=a[i];

a[i]:=a[j];

a[j]:=tam;

End;

1.Viết chương trình nhập dãy số, in dãy số đó ra màn hình

program nhap_inds;

Giải thuật tìm kiếm (tìm xem x có trong mảng không)

For i:=1 to n do

If a[i]=x then

Begin vt:=i; break; end;

If vt>0 then write(‘Da tim thay tai’,vt)

Else write(‘Khong thay’);

Trang 3

var a:array[1 100] of integer;

i,n:integer;

begin

write('nhap n: ');readln(n);

for i:=1 to n do

begin

write('nhap so thu ',i,':');

readln(a[i]);

end;

for i:=1 to n do

write(a[i],' ');

readln;

end

2.Viết chương trình nhập dãy số, in dãy số đó ra màn hình, tính tổng của các phần

tử trong danh sách

program tong_ds;

var a:array[1 100] of integer;

i,n,s:integer;

begin

write('nhap n: ');readln(n);

for i:=1 to n do

begin

write('nhap so thu ',i,':');

readln(a[i]);

end;

for i:=1 to n do

write(a[i],' ');

s:=0;

for i:=1 to n do

s:=s+a[i];

write('tong',n:3,' so trong mang la',s:4);

readln;

end

3.Viết chương trình nhập dãy số, in các số lẻ ra màn hình, tính tổng của các số lẻ

có trong danh sách

program tong_ds;

var a:array[1 100] of integer;

i,n,s:integer;

begin

Trang 4

write('nhap n: ');readln(n);

for i:=1 to n do

begin

write('nhap so thu ',i,':');

readln(a[i]);

end;

for i:=1 to n do

if a[i] mod 2<>0 then

write(a[i],' ');

s:=0;

for i:=1 to n do

if a[i] mod 2<>0 then

s:=s+a[i];

write('tong cac so le trong mang la',s:4);

readln;

end

4.Viết chương trình nhập dãy số, in các số chẳn ra màn hình, tính tổng của các số chẳn có trong danh sách

program tong_ds;

var a:array[1 100] of integer;

i,n,s:integer;

begin

write('nhap n: ');readln(n);

for i:=1 to n do

begin

write('nhap so thu ',i,':');

readln(a[i]);

end;

for i:=1 to n do

if a[i] mod 2=0 then

write(a[i],' ');

s:=0;

for i:=1 to n do

if a[i] mod 2=0 then

s:=s+a[i];

write('tong cac so chan trong mang la',s:4);

readln;

end

1 Viết chương trình nhập dãy số, in dãy số ra màn hình, tìm số nhỏ nhất có trong danh sách

program tong_ds;

Trang 5

var a:array[1 100] of integer;

i,n,min:integer;

begin

write('nhap n: ');readln(n);

for i:=1 to n do

begin

write('nhap so thu ',i,':');

readln(a[i]);

end;

for i:=1 to n do

write(a[i],' ');

min:=a[1];

for i:=1 to n do

if a[i]<min then min:=a[i];

write('so nho nhat trong mang la',min:4);

readln;

end

2 Viết chương trình nhập dãy số, in dãy số ra màn hình, tìm số lớn nhất có trong danh sách

program tong_ds;

var a:array[1 100] of integer;

i,n,max:integer;

begin

write('nhap n: ');readln(n);

for i:=1 to n do

begin

write('nhap so thu ',i,':');

readln(a[i]);

end;

for i:=1 to n do

write(a[i],' ');

max:=a[1];

for i:=1 to n do

if a[i]>max then max:=a[i];

write('so lon nhat trong mang la',max:4);

readln;

end

3 Viết chương trình nhập dãy số, in ra màn hình số nhỏ nhất, lớn nhất và tính giá trị trung bình của các ptử trong danh sách

program ln_nn_tb;

Trang 6

var a:array[1 100] of integer;

i,n,s,max,min:integer;

begin

write('nhap n: ');readln(n);

for i:=1 to n do

begin

write('nhap so thu ',i,':');

readln(a[i]);

end;

s:=0;

max:=a[1];

min:=a[1];

for i:=1 to n do

begin

if a[i]>max then max:=a[i];

if a[i]<max then min:=a[i];

s:=s+a[i];

end;

writeln('gia tri nho nhat la', min:4);

writeln('gia tri lon nhat la', max:4);

writeln('gia tri tb la',s/n:5:1);

readln;

end

4 Viết chương trình nhập dãy số, in ra màn hình dãy số đó, sắp xếp dãy số đó theo thứ tự giảm dần

program ds;

var a:array[1 100] of integer;

i,n,sau,vt,tg

:integer;

begin

write('nhap n: ');readln(n);

for i:=1 to n do

begin

write('nhap so thu ',i,':');

readln(a[i]);

end;

write('day so chua sap xep: ');

for i:=1 to n do

write(a[i],' ');

write('day so sap xep giam dan:');

for vt:=1 to n-1 do

for sau:=vt+1 to n do

Trang 7

if a[vt]<a[sau] then

begin

tg:=a[vt];

a[vt]:=a[sau];

a[sau]:=tg;

end;

for i:=1 to n do

write(a[i],' ');

readln;

end

readln;

end

5 Viết chương trình nhập dãy số, in ra màn hình dãy số đó, sắp xếp dãy số đó theo thứ tự giảm dần

program ds;

var a:array[1 100] of integer;

i,n,sau,vt,tg

:integer;

begin

write('nhap n: ');readln(n);

for i:=1 to n do

begin

write('nhap so thu ',i,':');

readln(a[i]);

end;

write('day so sap xep tang dan:');

for vt:=1 to n-1 do

for sau:=vt+1 to n do

if a[vt]>a[sau] then

begin

tg:=a[vt];

a[vt]:=a[sau];

a[sau]:=tg;

end;

for i:=1 to n do

write(a[i],' ');

readln;

end

readln;

end

Trang 8

6 Viết chương trình nhập dãy số, chèn thêm 1 số mới vào vị trí đầu dãy số.

program ds;

var a:array[1 100] of integer;

i,n,x:integer;

begin

write('nhap n: ');readln(n);

for i:=1 to n do

begin

write('nhap so thu ',i,':');

readln(a[i]);

end;

for i:=1 to n do

write(a[i],' ');

write('nhap so bat ki: ');readln(x);

n:=n+1;

for i:=0 to n-2 do a[n-i]:=a[n-i-1];

a[1]:=x;

for i:=1 to n do

write(a[i],' ');

readln;

end

7 Viết chương trình nhập dãy số, chèn thêm 1 số mới vào vị trí cuối dãy số

program ds;

var a:array[1 100] of integer;

i,n,x:integer;

begin

write('nhap n: ');readln(n);

for i:=1 to n do

begin

write('nhap so thu ',i,':');

readln(a[i]);

end;

for i:=1 to n do

write(a[i],' ');

write('nhap so bat ki: ');readln(x);

n:=n+1;

a[n]:=x;

for i:=1 to n do

write(a[i],' ');

readln;

end

Trang 9

8 Viết chương trình nhập dãy số, nhập thêm 1 ptử mới và đếm số lần xuất hiện của nó trong dsố

program ds;

var a:array[1 100] of integer;

i,n,x,dem:integer;

begin

write('nhap n: ');readln(n);

for i:=1 to n do

begin

write('nhap so thu ',i,':');

readln(a[i]);

end;

write('nhap so bat ki: ');readln(x);

dem:=0;

for i:=1 to n do

if a[i]=x then dem:=dem+1;

write('so lan xhien cua',x:3,'la', dem:3);

readln;

end

9 Viết chương trình nhập dãy số, chèn thêm 1 ptử mới vào dsố mà thứ tự trong dsố k thay đổi

program ds;

var a:array[1 100] of integer;

i,n,x,j,vt,sau,tg:integer;

begin

write('nhap n: ');readln(n);

for i:=1 to n do

begin

write('nhap so thu ',i,':');

readln(a[i]);

end;

for vt:=1 to n-1 do

for sau:=vt+1 to n do

if a[vt]>a[sau] then

begin

tg:=a[vt];

a[vt]:=a[sau];

a[sau]:=tg;

end;

for i:=1 to n do

Trang 10

write(a[i],' ');

write('nhap so bat ki: ');readln(x);

i:=0;

while (a[i+1]<=x) and (i<n) do i:=i+1;

for j:=n+1 downto i+1 do a[j]:=a[j-1];

a[i+1]:=x;

for i:=1 to n+1 do

write(a[i],' ');

readln;

end

Ôn tập:

Bài 1: Viết chương trình tính tổng bình phương T = 12 + 22 + + n2, với n là số nguyên dương được nhập từ bàn phím.

Bài 2: Viết chương trình tính tổng A = 1 + 1 1 1

2  3  n, với n là số tự nhiên được nhập từ bàn phím

Bài 3: Viết chương trình tính giá trị của biểu thức sau:

1 + 1/22 + 1/32 + … + 1/n2

Bài 4: Viết chương trình nhập một số nguyên n, tìm tất cả các ước của số n

Bài 5:

Viết chương trình in ra các số lẻ nhỏ hơn hoặc bằng n (Với n được nhập từ bàn phím)

Bài 6:

Viết chương trình in ra tổng các số lẻ nhỏ hơn hoặc bằng n (Với n được nhập)

Bài 7: Viết chương trình in ra các số lẻ nhỏ hơn hoặc bằng số nguyên dương n Bài làm:

Bài 1: Viết chương trình tính tổng bình phương T = 12 + 22 + + n2, với n là số nguyên dương được nhập từ bàn phím.

Var I: integer;

T:longint;

Begin

Write(‘nhap n: ’); readln(n);

For i:= 1 to n do T:= t + i*i ;

Write(‘ Tong binh phuong’,n,’ so tu nhien dau tien T = ‘, t);

Readln

End

Bài 2: viết chương trình tính tổng A = 1 + 1 1 1

2  3  n, với n là số tự nhiên được nhập từ bàn phím

Trang 11

Var I,n: integer; A: real;

Begin

Write(‘nhap n: ’); readln(n);

For i:= 1 to n do A:= A + 1/i;

Write(‘Tong A = ’, A:5:1);

Readln

End

Bài 3: Viết chương trình tính giá trị của biểu thức sau:

1 + 1/22 + 1/32 + … + 1/n2

Var n , i : Word ;

S : Real ;

BEGIN

Write (' Nhap n : ') ; Readln (n) ;

S := 0 ;

For i := 1 To n Do

S := S + 1 / sqr(i) ;

Writeln (' S = ', S:0:2) ;

Readln ;

END

Bài 4: viết chương trình nhập một số nguyên n, tìm tất cả các ước của số n

Var I,n: integer;

Begin

Write(‘nhap n: ’); readln(n);

Write(‘ uoc cua ’, n, ‘ la: ‘);

For i:= 1 to n do if n mod I = 0 then Write(i:4);

Readln

End

Bài tập 5:

Viết chương trình in ra các số lẻ nhỏ hơn hoặc bằng n (Với n được nhập từ bàn phím)

a Hướng dẫn:

- Cho biến i chạy từ 1 đến n

- Nếu i chẵn ( i chia 2 dư 0) thì in ra số n

b Mã chương trình:

Program In_So_Le;

Uses crt;

var i,n: integer;

Begin

Clrscr;

Write('Nhap so n ='); readln(n);

Trang 12

For i:=1 to n do if i mod 2 =1 then

Write(i:3,',');

readln

end.

Bài 6:

Viết chương trình in ra tổng các số lẻ nhỏ hơn hoặc bằng n ( Với n được nhập)

a Hướng dẫn:

- Cho S = 0

- Cho biến i chạy từ 1 đến n

- Nếu i chẵn ( i chia 2 <> 0) thì cộng thêm i vào S

- In ra S

b Mã chương trình:

Program In_So_Le;

Uses crt;

var S,i,n: integer;

Begin

Clrscr;

Write('Nhap so n ='); readln(n);

S:= 0;

For i:=1 to n do if i mod 2 =1 then S:= S+i;

Writeln('Tong cac so le nho hon ',n,' la: ',S); readln

end.

c Nhận xét: Ta dùng biến S để cộng dồn nên nó được khởi tạo giá trị đầu bằng 0.

Bài 7: Viết chương trình in ra các số lẻ nhỏ hơn hoặc bằng số nguyên dương n

var i,n:integer;

begin

write(‘nhap n:’);readln(n);

i:=1;

while i<=n do

begin

write(i:3,', ');

i:=i+2;

end;

readln

end.

Bài 5: viết chương trinh tính giá trị của biểu thức sau:

1 + 1/2! + 1/3! + … + 1/n!

Trang 13

Bài 3: Cho số tự nhiên n, hãy lập trình để tính các tổng sau:

a a 1 + 1/2 2 + 1/32 + … + 1/n2

b b 1 + 1/2! + 1/3! + … + 1/n!

GIẢI

a)

Var n , i : Word ;

S : Real ;

BEGIN

Write (' Nhap n : ') ; Readln (n) ;

S := 0 ;

For i := 1 To n Do

S := S + 1 / sqr(i) ;

Writeln (' S = ', S:0:2) ;

Readln ;

END

b)

Var n , i , j , p : Word ;

S : Real ;

BEGIN

Write (' Nhap n : ') ; Readln(n) ;

p := 1 ;

s := 0 ;

For i :=1 To n Do

Begin

p := p * i ; (* tính i *)

S := S + 1 / p ;

End ;

Writeln (' S = ', S:0:2) ;

Readln ; END

*Bài 4 :

Tính giá trị của biểu thức sau:

( 1 + 1/12 ) ( 1 + 1/22 ) … ( 1 + 1/n2 )

GIẢI

Var i , n : Byte ;

p : Real ;

Begin

Write(' Nhap n : ') ; Readln (n) ;

p := 1 ;

For i := 1 To n Do p := p * ( 1 + 1/sqr(i) ) ;

Writeln(' p = ', p:10:5 ) ;

Readln ; End

Ngày đăng: 07/08/2022, 08:17

TỪ KHÓA LIÊN QUAN

w