PHP: Bài tập phần mảng (Array)


Khóa học qua video:
Lập trình Python All Lập trình C# All SQL Server All Lập trình C All Java PHP HTML5-CSS3-JavaScript
Đăng ký Hội viên
Tất cả các video dành cho hội viên

Bài tập phần mảng số 1 chiều:

Bài tập 1:

Hãy tạo ngẫu nhiên một mảng a gồm N phần tử nguyên sau đó thực hiện:

  • Sắp xếp a theo thứ tự tăng dần
  • Loại bỏ bớt các phần tử có giá trị giống nhau sao cho mỗi giá trị chỉ xuất hiện trong a duy nhất 1 lần.

Hướng dẫn làm bài.

Bài tập 2: Coin Change

Với một giá trị N, nếu chúng ta muốn đổi N xu và chúng ta có nguồn cung vô hạn đối với mỗi đồng xu có giá trị S = {S1, S2, .., Sm}, chúng ta có thể thực hiện bao nhiêu cách để thực hiện thay đổi? Thứ tự của các đồng xu không quan trọng.

Ví dụ:

  • Với N = 4 và S = {1,2,3}, có bốn nghiệm: {1,1,1,1}, {1,1,2}, {2,2}, {1, 3}.
  • Với N = 10 và S = {2, 5, 3, 6}, có năm nghiệm: {2,2,2,2,2}, {2,2,3,3}, {2,2,6}, {2,3,5} và {5,5}.

Hướng dẫn làm bài.

Bài tập 3: Tìm phần tử thiếu

Đôi khi bạn cần so sánh danh sách số lượng, nhưng việc sắp xếp từng danh sách thông thường sẽ mất quá nhiều thời gian. Thay vào đó, bạn có thể sử dụng các phương pháp thay thế để tìm sự khác biệt giữa mỗi danh sách.

Thử thách

Bạn Nam đang sắp xếp hai danh sách A và B giống hệt nhau thành những thứ tự cụ thể. Sự sắp xếp của hai mảng là ngẫu nhiên, Nam rất tự hào về sự sắp xếp của mình. Thật không may, một số số đã bị loại khỏi Danh sách A. Bạn có thể tìm thấy các số còn thiếu từ A mà không làm rối thứ tự của anh ta không?

Chi tiết:

Có nhiều bản sao trong danh sách, nhưng bạn cần tìm các số thừa, tức là B - A. In các số theo thứ tự tăng. In mỗi số bị thiếu một lần, ngay cả khi số đó bị thiếu nhiều lần.

Định dạng đầu vào:

Sẽ có bốn dòng đầu vào:

  • n - kích thước của danh sách đầu tiên
  • Tiếp theo là n số tạo nên danh sách đầu tiên.
  • m - kích thước của danh sách thứ hai
  • Tiếp theo là m số tạo nên danh sách thứ hai.

Định dạng đầu ra:

Đưa ra tất cả các số (theo thứ tự tăng dần) có trong B nhưng không thuộc A.

Ràng buộc:

1 <= n, m <= 200000

-10000 <= x <= 10000, x ∈ B

Xmax - Xmin <101

Đầu vào mẫu

10

203 204 205 206 207 208 203 204 205 206

13

203 204 204 205 206 207 205 208 203 206 205 206 204

Đầu ra mẫu

204 205 206

Giải thích:

Mặc dù 204 được trình bày trong cả hai mảng, nhưng số lần xuất hiện của 204 ở A ít hơn của B. Tương tự như vậy, 205 và 206 xuất hiện hai lần ở A nhưng ba lần ở B. Vì vậy, ba số này tạo thành đầu ra. Các số còn lại ở A và B là như nhau - vì vậy chúng không phải là "số bị thiếu".

Hướng dẫn làm bài.

Bài tập 4:

Viết chương trình dạng Menu chọn thực hiện các công việc sau (lưu ý mỗi công việc được thực hiện trên một hàm):

1. Nhập một số nguyên N (0<N<50).

2. Nhập một mảng gồm N số thực.

3. Tìm số lớn nhất trong mảng.

4. Tìm số nhỏ nhất trong mảng.

5. Tìm số dương chẵn lớn nhất trong mảng.

6. Tìm số âm lẻ nhỏ nhất trong mảng.

7. Tìm các số chính phương trong mảng.

8. Tính tổng mảng.

9. Tính trung bình cộng các phần tử mảng.

10. Tìm những phần tử lớn hơn trung bình cộng.

11. Sắp xếp mảng theo trật tự tăng dần.

12. Sắp xếp mảng theo trật tự giảm dần.

Bài tập mảng số 2 chiều:

Yêu cầu: Viết chương trình dưới dạng không dùng hàm và dùng hàm.

Cho mảng 2 chiều A, là ma trận vuông cấp n x n, lập chương trình:

a) Tính tổng tất cả các phần tử dương của mảng.

b) Tính tổng các phần tử A[i][j] trong đó (i + j) chia hết cho 5.

c) In ra các số nguyên tố theo từng hàng.

d) Sắp xếp tăng dần theo hàng.

e) Sắp xếp giảm dần theo cột .

f) Sắp xếp tăng dần theo hàng và cột.

g) Tính tổng các phần tử trên đường chéo chính (i = j) và trên đường biên.

h) Tìm phần tử max, phần tử min theo từng hàng, từng cột và toàn bộ ma trận.

Bài tập phần chuỗi:

1. Nhập một chuỗi a bất kỳ từ bàn phím có kích thước trong khoảng (0,50).

2. Kiểm tra xem trong chuỗi a có ký số hay không.

3. Kiểm tra xem trong chuỗi a có ký tự in HOA hay không.

4. Nhập từ bàn phím một ký tự ch bất kỳ, kiểm tra xem trong chuỗi a có chứa ký tự đó hay không?

5. Nhập từ bàn phím một chuỗi b bất kỳ, kiểm tra xem b có nằm trong a hay không? Kiểm tra xem b có độ dài lớn hơn a hay không? Kiểm tra xem b có lớn hơn a hay không?

6. Kiểm tra xem chuỗi a có tính đối xứng hay không?

7. Chuỗi a có bao nhiêu từ?

8. Cắt tất cả dấu cách (space) ở cuối chuỗi.

9. Cắt tất cả dấu cách ở đầu chuỗi.

10. Hãy đảm bảo rằng giữa hai từ bất kỳ của chuỗi a chỉ có một dấu cách.

11. Tính giá trị trung bình của tất cả các ký tự của chuỗi a theo thứ tự ký tự trong bảng mã ASCII (ví dụ nếu chuỗi là "123" thì ký tự '1' có vị trí 49, ký tự '2' có vị trí 50, ký tự '3' có vị trí 51, như vậy giá trị trung bình là 50).

12. Đếm xem mỗi ký tự trong chuỗi a xuất hiện bao nhiêu lần. Ví dụ với chuỗi "V1StudyAll" thì ký tự 'l' xuất hiện 2 lần, các ký tự khác xuất hiện 1 lần.

13. Hãy chèn vào giữa ký tự có chỉ số 4 và 5 của chuỗi a một ký tự '\n'.

14. Hãy chèn vào giữa 2 ký tự in hoa bất kỳ của chuỗi a ký tự '\t';

Xem solution: https://youtu.be/5Ifho-YPcfM

Bài tập phần mảng chuỗi:

1. Nhập N và nhập một mảng a gồm N chuỗi (0<N<=50 và mỗi chuỗi có kích thước tối đa 30).

2. Tìm những chuỗi có kích thước nhỏ nhất, lớn nhất.

3. Tính kích thước trung bình của các chuỗi.

4. Hiển thị những chuỗi có kích thước lớn hơn kích thước trung bình. 

5. Sắp xếp các chuỗi tăng dần, giảm dần theo kích thước.

6. Tìm những chuỗi nhỏ nhất, lớn nhất theo thứ tự ký tự trong bảng mã ASCII.

7. Sắp xếp các chuỗi tăng dần, giảm dần theo thứ tự ký tự trong bảng mã ASCII.

8. Nhập vào từ bàn phím một chuỗi st có kích thước tối đa 30. Tìm những chuỗi trong mảng a có kích thước bằng chuỗi st. Tìm những chuỗi trong mảng a có chứa chuỗi st.

9. Tìm những chuỗi có tính đối xứng trong mảng a.

10. Hiển thị những chuỗi là địa chỉ email chuẩn (ví dụ "abc@def.com").

11. Tìm những chuỗi có chứa ký tự số.

12. Tìm những chuỗi có chứa ký tự in HOA.

13. Nhập từ bàn phím một ký tự c bất kỳ. Tìm những chuỗi có chứa ký tự c.

14. Mỗi chuỗi trong mảng a có bao nhiêu từ?

15. Nhập vào một ký tự rồi chèn ký tự đó vào vị trí thứ 5 của chuỗi cuối cùng.

16. Nhập M chuỗi (0<M<N) sau đó đếm xem mỗi chuỗi trong M chuỗi xuất hiện bao nhiêu lần trong N chuỗi.

17. Nối tất cả các chuỗi và in ra.

18. Hiển thị những chuỗi chứa chuỗi đầu tiên

19. Kiểm tra xem chuỗi đầu tiên có bắt đầu bằng chuỗi "hello" không.

20. Tính giá trị trung bình theo vị trí ký tự trong bảng mã ASCII của từng chuỗi.

21. Hiển thị những chuỗi có độ dài lớn hơn độ dài nhỏ nhất và nhỏ hơn độ dài lớn nhất trong mảng a

22. Nhập vào một độ dài xác định và in ra những chuỗi có độ dài bằng độ dài xác định đó.

23. Đếm số từ trong chuỗi thứ N-1

24. Chuyển chuỗi thứ hai thành chuỗi in hoa.

25. Cắt ký tự trắng ở cuối chuỗi cuối cùng

26. Cắt ký tự trắng ở đầu chuỗi cuối cùng

27. Cắt ký tự trắng thừa ở giữa chuỗi cuối cùng

» Tiếp: Bài tập phần hàm
« Trước: Bài tập phần vòng lặp
Khóa học qua video:
Lập trình Python All Lập trình C# All SQL Server All Lập trình C All Java PHP HTML5-CSS3-JavaScript
Đăng ký Hội viên
Tất cả các video dành cho hội viên
Copied !!!