Bài toán mảng 1 chiều

- 0 / 0
(Tài liệu chưa được thẩm định)
Nguồn:
Người gửi: Võ Văn Dũng (trang riêng)
Ngày gửi: 08h:07' 27-06-2022
Dung lượng: 15.7 KB
Số lượt tải: 0
Nguồn:
Người gửi: Võ Văn Dũng (trang riêng)
Ngày gửi: 08h:07' 27-06-2022
Dung lượng: 15.7 KB
Số lượt tải: 0
Số lượt thích:
0 người
Bài toán mảng 1 chiều:
DẠNG 1: Duyệt mảng để tìm các phần tử thoả mãn một yêu cầu nào đó?
Yêu cầu các phần tử đó có thể là:
+ Là số chẵn
+ Là số lẻ
+ Là số chia hết cho một số K
+ Là số nguyên tố
+ Là số hoàn hảo
+ Là số chính phương
Bài tập 1: Viết chương trình nhập vào từ bàn phím số nguyên N và mảng A gồm N phần tử.
Thông báo ra màn hình các số chẵn có trong mảng đã nhập và số lượng của chúng.
Bài tập 2: Viết chương trình nhập vào từ bàn phím số nguyên N và mảng A gồm N phần tử.
Thông báo ra màn hình các số lẻ có trong mảng đã nhập và số lượng của chúng.
Bài tập 3: Viết chương trình nhập vào từ bàn phím số nguyên N, số K và mảng A gồm N phần tử. Thông báo ra màn hình các số chia hết cho K có trong mảng đã nhập và số lượng của chúng.
Bài tập 4: Viết chương trình nhập vào từ bàn phím số nguyên N và mảng A gồm N phần tử.
Thông báo ra màn hình các số nguyên tố có trong mảng đã nhập và số lượng của chúng.
Bài tập 5: Viết chương trình nhập vào từ bàn phím số nguyên N và mảng A gồm N phần tử.
Thông báo ra màn hình các số hoàn hảo có trong mảng đã nhập và số lượng của chúng.
DẠNG 2:
Bài 1: Nhập dãy số thực a. Tính trung bình cộng các số âm.
Bài 2: Nhập dãy số nguyên. Tính trung bình cộng các số lẻ.
Bài 3: Sinh ngẫu nhiên dãy n số nguyên. Tìm các số trong dãy thỏa mãn định lý Pytago.
Bài 4: Nhập dãy số nguyên. Tìm các số trong dãy thỏa tính chất a3+b3+c3 = 100a+10b+c.
Bài 5: Sinh ngẫu nhiên n số nguyên (n<200). Đếm và tính tổng các số lẻ của chúng.
Bài 6: Nhập dãy số nguyên. Tìm phần tử lớn nhất.
Bài 7: Nhập dãy số thực. Tìm phần tử bé nhất.
Bài 8: Nhập dãy số thực. Tìm hai phần tử có tổng lớn nhất.
Bài 9: Cho dãy số thực a và nhập số thực x. Kiểm tra xem x có thuộc dãy không. Nếu có chỉ ra vị trí của nó.
Bài 10: Cho dãy số thực a và nhập số thực x. Hãy xóa mọi số lớn hơn x trong dãy.
Bài 11: Nhập dãy số thực a. Tìm các số trong dãy bằng tổng hai số khác trong dãy.
Bài 12: Cho dãy n số nguyên a1;a2;…;an. Xếp lại dãy số theo nguyên tắc: a1 đổi chỗ cho an; a2 đổi chỗ với an-1…
Hướng dẫn: công thức đổi: 1 và n – i +1.
Bài 14: Sinh ngẫu nhiên dãy n số nguyên ( n<2000). Không dùng mảng phụ, hãy chuyển các số âm về đầu dãy, các số dương về cuối dãy sao cho không làm thay đổi trật tự trước sau của các số cùng dấu.
Bài 15: Sinh ngẫu nhiên n số nguyên. Sắp xếp các số này theo thứ tự tăng dần. Nhập vào một số nguyên x bất kì. Hãy chen số x vào dãy và luôn thỏa mãn là dãy tăng dần. Chỉ ra vị trí chèn.
Bài 16: Sinh ngẫu nhiên n số nguyên dương (n<200).
a) Xóa các số trong dãy nhỏ hơn 10.
b) Xóa các số trong dãy thuộc đoạn [50,99].
DẠNG 3:
Bài 1: Viết chương trình nhập vào từ bàn phím mảng một chiều A gồm M phần tử, mảng một chiều B gồm N phần tử, sắp xếp 2 dãy A và B tăng dần sau đó trộn 2 dãy thành dãy C sao cho dãy C cũng là dãy đã được sắp xếp tăng dần. In mảng A, B, C ra màn hình.
Bài 2: Viết chương trình nhập vào một dãy số nguyên có n phần tử.
a. Đưa những phần tử lẻ ra đầu danh sách, những phần tử chẵn về cuối danh sách và in kết quả ra màn hình.
b. Sắp xếp các phần tử lẻ đầu danh sách theo thứ tự tăng dần, sắp xếp các phần tử chẵn cuối danh sách theo thứ tự giảm dần. In danh sách ra màn hình.
Code tham khảo Bài 3 dạng 3:
uses crt;
var a,b,c: array[1..50] of integer;
i,n,j,e,m,: integer;
BEGIN
clrscr;
write('nhap so phan tu n cua mang A: '); readln(n);
for i:=1 to n do
begin
write('a[',i,']:'); readln(a[i]);
end;
write('nhap so phan tu m cua mang B: '); readln(m);
for i:=1 to m do
begin
write('b[',i,']:');readln(b[i]);
end;
{tự sắp xếp mảng a và mảng b rồi in ra nhé bạn}
{nối mảng c = a+b}
c:=a;
e:=0;
for i:=n+1 to n+m do
begin
e:=e+1;
c[i]:=b[e];
end;
for i:=1 to n+m-1 do {sắp xếp mảng c}
for j:=i+1 to n+m do
if c[i]>c[j] then
begin
tam:=c[i];
c[i]):=c[j];
c[j]:=tam;
end;
for i:=1 to n+m do write(c[i]:3); {in mảng c ra màn hình}
readln;
END.
Code tham khảo Bài 2 dạng 3:
uses crt;
var a:array[1..100] of integer;
i,n,j,k,b,c:integer;
BEGIN
clrscr;
write('nhap so phan tu cua day:'); readln(n);
for i:=1 to n do
begin
write('a[',i,']:');readln(a[i]);
end;
for i:=1 to n-1 do
for j:=i+1 to n do
if (a[i] mod 2=0) and (a[j] mod 2=1) then
begin
tam:=a[i];
a[i]:=a[j];
a[j]:=tam;
end;
writeln('mang sau khi sap xep giai doan 1:');
for i:=1 to n do write(a[i]:3);
for i:=1 to n-1 do
for j:=i+1 to n do
if (a[i] begin
tam:=a[i];
a[i]:=a[j];
a[j]:=tam;
end;
for i:=1 to n-1 do
for j:=i+1 to n do
if (a[i]>a[j]) and (a[i] mod 2=0) and (a[j] mod 2=0) then
begin
tam:=a[i];
a[i]:=a[j];
a[j]:=tam;
end;
writeln;
writeln('mang sau khi sap xep giai doan 2:');
for i:=1 to n do write(a[i]:3);
readln;
END.
DẠNG 1: Duyệt mảng để tìm các phần tử thoả mãn một yêu cầu nào đó?
Yêu cầu các phần tử đó có thể là:
+ Là số chẵn
+ Là số lẻ
+ Là số chia hết cho một số K
+ Là số nguyên tố
+ Là số hoàn hảo
+ Là số chính phương
Bài tập 1: Viết chương trình nhập vào từ bàn phím số nguyên N và mảng A gồm N phần tử.
Thông báo ra màn hình các số chẵn có trong mảng đã nhập và số lượng của chúng.
Bài tập 2: Viết chương trình nhập vào từ bàn phím số nguyên N và mảng A gồm N phần tử.
Thông báo ra màn hình các số lẻ có trong mảng đã nhập và số lượng của chúng.
Bài tập 3: Viết chương trình nhập vào từ bàn phím số nguyên N, số K và mảng A gồm N phần tử. Thông báo ra màn hình các số chia hết cho K có trong mảng đã nhập và số lượng của chúng.
Bài tập 4: Viết chương trình nhập vào từ bàn phím số nguyên N và mảng A gồm N phần tử.
Thông báo ra màn hình các số nguyên tố có trong mảng đã nhập và số lượng của chúng.
Bài tập 5: Viết chương trình nhập vào từ bàn phím số nguyên N và mảng A gồm N phần tử.
Thông báo ra màn hình các số hoàn hảo có trong mảng đã nhập và số lượng của chúng.
DẠNG 2:
Bài 1: Nhập dãy số thực a. Tính trung bình cộng các số âm.
Bài 2: Nhập dãy số nguyên. Tính trung bình cộng các số lẻ.
Bài 3: Sinh ngẫu nhiên dãy n số nguyên. Tìm các số trong dãy thỏa mãn định lý Pytago.
Bài 4: Nhập dãy số nguyên. Tìm các số trong dãy thỏa tính chất a3+b3+c3 = 100a+10b+c.
Bài 5: Sinh ngẫu nhiên n số nguyên (n<200). Đếm và tính tổng các số lẻ của chúng.
Bài 6: Nhập dãy số nguyên. Tìm phần tử lớn nhất.
Bài 7: Nhập dãy số thực. Tìm phần tử bé nhất.
Bài 8: Nhập dãy số thực. Tìm hai phần tử có tổng lớn nhất.
Bài 9: Cho dãy số thực a và nhập số thực x. Kiểm tra xem x có thuộc dãy không. Nếu có chỉ ra vị trí của nó.
Bài 10: Cho dãy số thực a và nhập số thực x. Hãy xóa mọi số lớn hơn x trong dãy.
Bài 11: Nhập dãy số thực a. Tìm các số trong dãy bằng tổng hai số khác trong dãy.
Bài 12: Cho dãy n số nguyên a1;a2;…;an. Xếp lại dãy số theo nguyên tắc: a1 đổi chỗ cho an; a2 đổi chỗ với an-1…
Hướng dẫn: công thức đổi: 1 và n – i +1.
Bài 14: Sinh ngẫu nhiên dãy n số nguyên ( n<2000). Không dùng mảng phụ, hãy chuyển các số âm về đầu dãy, các số dương về cuối dãy sao cho không làm thay đổi trật tự trước sau của các số cùng dấu.
Bài 15: Sinh ngẫu nhiên n số nguyên. Sắp xếp các số này theo thứ tự tăng dần. Nhập vào một số nguyên x bất kì. Hãy chen số x vào dãy và luôn thỏa mãn là dãy tăng dần. Chỉ ra vị trí chèn.
Bài 16: Sinh ngẫu nhiên n số nguyên dương (n<200).
a) Xóa các số trong dãy nhỏ hơn 10.
b) Xóa các số trong dãy thuộc đoạn [50,99].
DẠNG 3:
Bài 1: Viết chương trình nhập vào từ bàn phím mảng một chiều A gồm M phần tử, mảng một chiều B gồm N phần tử, sắp xếp 2 dãy A và B tăng dần sau đó trộn 2 dãy thành dãy C sao cho dãy C cũng là dãy đã được sắp xếp tăng dần. In mảng A, B, C ra màn hình.
Bài 2: Viết chương trình nhập vào một dãy số nguyên có n phần tử.
a. Đưa những phần tử lẻ ra đầu danh sách, những phần tử chẵn về cuối danh sách và in kết quả ra màn hình.
b. Sắp xếp các phần tử lẻ đầu danh sách theo thứ tự tăng dần, sắp xếp các phần tử chẵn cuối danh sách theo thứ tự giảm dần. In danh sách ra màn hình.
Code tham khảo Bài 3 dạng 3:
uses crt;
var a,b,c: array[1..50] of integer;
i,n,j,e,m,: integer;
BEGIN
clrscr;
write('nhap so phan tu n cua mang A: '); readln(n);
for i:=1 to n do
begin
write('a[',i,']:'); readln(a[i]);
end;
write('nhap so phan tu m cua mang B: '); readln(m);
for i:=1 to m do
begin
write('b[',i,']:');readln(b[i]);
end;
{tự sắp xếp mảng a và mảng b rồi in ra nhé bạn}
{nối mảng c = a+b}
c:=a;
e:=0;
for i:=n+1 to n+m do
begin
e:=e+1;
c[i]:=b[e];
end;
for i:=1 to n+m-1 do {sắp xếp mảng c}
for j:=i+1 to n+m do
if c[i]>c[j] then
begin
tam:=c[i];
c[i]):=c[j];
c[j]:=tam;
end;
for i:=1 to n+m do write(c[i]:3); {in mảng c ra màn hình}
readln;
END.
Code tham khảo Bài 2 dạng 3:
uses crt;
var a:array[1..100] of integer;
i,n,j,k,b,c:integer;
BEGIN
clrscr;
write('nhap so phan tu cua day:'); readln(n);
for i:=1 to n do
begin
write('a[',i,']:');readln(a[i]);
end;
for i:=1 to n-1 do
for j:=i+1 to n do
if (a[i] mod 2=0) and (a[j] mod 2=1) then
begin
tam:=a[i];
a[i]:=a[j];
a[j]:=tam;
end;
writeln('mang sau khi sap xep giai doan 1:');
for i:=1 to n do write(a[i]:3);
for i:=1 to n-1 do
for j:=i+1 to n do
if (a[i] begin
tam:=a[i];
a[i]:=a[j];
a[j]:=tam;
end;
for i:=1 to n-1 do
for j:=i+1 to n do
if (a[i]>a[j]) and (a[i] mod 2=0) and (a[j] mod 2=0) then
begin
tam:=a[i];
a[i]:=a[j];
a[j]:=tam;
end;
writeln;
writeln('mang sau khi sap xep giai doan 2:');
for i:=1 to n do write(a[i]:3);
readln;
END.
 






Các ý kiến mới nhất