Một số bài tập về pascal lớp 11 năm 2024

  1. Khái niệm: Mảng một chiều là một dãy hữu hạn các phần tử có cùng kiểu. Mảng được đặt tên và mỗi phần tử mang một chỉ số.

Với mảng một chiều ta quan tâm đến:

+ Tên kiểu mảng một chiều.

+ Số lượng phần tử trong mảng.

+ Kiểu dữ liệu của phần tử.

+ Cách khai báo biến mảng.

+ Cách tham chiếu đến phần tử.

  1. Khai báo mảng một chiều:

+ Khai báo trực tiếp:

Var<tên biến mảng>: array[<kiểu chỉ số>]of <kiểu phần tử>;

+ Khai báo gián tiếp:

Type <tênkiểumảng>=array[<kiểu chỉ số>] of <kiểu phần tử>;

var <tên biến mảng>: <tên kiểu mảng>;

Trong đó :

+ Kiểu chỉ số thường là đoạn số nguyên liên tục có dạng n1..n2, với n1 là chỉ số đầu và n2 là chỉ số cuối (n1≤n2). Nên đánh chỉ số từ 1;

+ Kiểu phần tử là kiểu dữ liệu của các phần tử mảng.

+ Tham chiếu đến phần tử mảng ta viết :

<tên biến mảng>[chỉ số]

Tham chiếu đến phần tử thứ 20 trong mảng A ta viết A[20].

2. Các thao tác với kiểu mảng một chiều.

  1. Cách nhập mảng A:

write(‘Nhap so phan tu cua mang: ’); readln(n);

write(‘Nhap gia tri cho tung phan tu: ’);

for i:=1 to n do

begin

write(‘Phan tu thu ’ , i , ‘ la: ’); {write(‘A[‘,I,’]=’);}

readln(A[i]);

end;

  1. Cách in mảng A ra màn hình:

writeln(‘Mang vua nhap la: ’);

for i:=1 to n do write(A[i]:4);

3. Ví dụ về mảng một chiều

Bài 1: Nhập vào một dãy số nguyên, tìm số nhỏ nhất trong dãy?

Ý tưởng: Min:=A[1]; Duyệt từ đầu dãy đến cuối dãy, so sánh các phần tử với Min, nếu A[i]<min thì min:=A[i];

Giải quyết bài toán:

Var A:array[1..200] of integer;

I, n: byte; min:integer;

Begin

write(‘Nhap so phan tu cua mang: ’); readln(n);

write(‘Nhap gia tri cho tung phan tu: ’);

for i:=1 to n do

begin

write(‘Phan tu thu ’ , i , ‘ la: ’); {write(‘A[‘,I,’]=’);}

readln(A[i]);

end;

min:=A[1]; For i:=2 to n do

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

write(‘So nho nhat trong mang :’,min);

readln;

END.

Bài 1: Nhập vào một dãy số nguyên, sắp xếp dãy thành dãy không giảm (tăng dần) theo phương pháp nổi bọt (Bubble sort)

Ý tưởng: Để sắp dãy có n phần tử, thực hiện qua n-1 lượt. Ở mỗi lượt, duyệt từ đầu dãy đến cuối dãy (cần xét ở lượt đó), cứ so sánh 2 phần tử kề nhau, nếu phần tử đứng trước lớn hơn phần tử đứng sau thì đổi chỗ chúng.

If j> A[i] - 1 then demnt:=demnt+1; End; Writeln(‘ so luong phan tu la nguyen to la’, demnt); {----Cau h-------} d:=A[2]-A[1]; j:=3; While (j<=n) And (A[j]-A[j-1]=d) do j:=j+1; if j>n then Writeln(‘ mang vua nhap la cap so cong’) else Writeln(‘ mang vua nhap khong phai la cap so cong’); {------Cau i-------} For i:=1 to n do For j:=i+1 to n-1 do If A[j]>A[j+1] then Begin {doi vi tri hai phan tu A[j] va A[j+1]} tg:=A[j]; A[j]:=A[j+1]; A[j+1]:=tg; End; Writeln(‘mang sau khi duoc sap xep la’); For i:=1 to n do write(A[i]: 5); Readln END.