Chinh phục 1000 bài tập lập trình (có lời giải)

Bạn đang tìm kiếm bài tập lập trình? Hôm nay, Luyện Code vô cùng hân hạnh giới thiệu tới các bạn một bộ sưu tập quý giá gồm 1000 bài tập lập trình được biên soạn bởi thầy Nguyễn Tấn Trần Minh Khang – một chuyên gia giàu kinh nghiệm trong lĩnh vực lập trình.

Ảnh chụp 1 phần của bộ 1000 bài tập lập trình
Ảnh chụp 1 phần của bộ 1000 bài tập lập trình

Bộ bài tập này được thiết kế từ cơ bản đến nâng cao, giúp các bạn rèn luyện tư duy logic và kỹ năng giải quyết vấn đề. Để bắt đầu, bạn có thể tải xuống file đề bài và thử sức với các bài tập. Đối với mỗi bài tập, chúng tôi đã chuẩn bị sẵn lời giải chi tiết – bạn chỉ cần click vào đề bài tương ứng để xem source code mẫu và cách giải được trình bày rõ ràng, dễ hiểu.

Nếu bạn muốn có trải nghiệm thực hành tốt hơn, hãy trải nghiệm LCOJ (hoàn toàn miễn phí).

Đề bài tập lập trình (PDF file)

Dưới đây là đề bài 1000 bài tập lập trình của thầy Nguyễn Tấn Trần Minh Khang đã được tổng hợp thành một file pdf. Các bạn chỉ cần download nó về là sẽ xem được toàn bộ đề bài của 1000 bài tập này.

Tiếp theo, sẽ là lời giải tham khảo của 1000 bài tập được viết bằng ngôn ngữ C/C++. Bạn nên lưu ý rằng, lời giải này không đảm bảo chính xác 100%.

Chương 1: Lưu đồ thuật toán

Chương 2: Lập trình với ngôn ngữ C

Chương 3: Các cấu trúc điều khiển

Chương 4: Hàm

Chương 5: Mảng một chiều

5.1. Kỹ thuật nhập, xuất mảng

5.2. Kỹ thuật đặt lính canh, các bài tập cơ bản

5.3. Các bài tập luyện tập

5.4. Bài tập lập trình luyện tập tư duy

5.5. Các bài tập tìm kiếm và liệt kê

5.6. Kỹ thuật tính tổng

5.7. Kỹ thuật đếm

5.8. Kỹ thuật sắp xếp

5.9. Kỹ thuật thêm

5.10. Kỹ thuật xóa

5.11. Kỹ thuật xử lý mảng

5.12. Kỹ thuật xử lý mảng con

5.13. Xây dựng mảng

Chương 6: Ma trận

6.1. Kỹ thuật tính toán

6.2. Kỹ thuật đếm

6.3. Kỹ thuật đặt cờ hiệu

6.4. Kỹ thuật đặt lính canh

6.5. Kỹ thuật xử lý ma trận

6.6. Sắp xếp ma trận

6.7. Xây dựng ma trận

Chương 7: Ma trận vuôn

7.1. Tính toán

7.2. Kỹ thuật đặt lính canh

7.3. Kỹ thuật đếm

7.4. Kỹ thuật đặt cờ hiệu

7.5. Sắp xếp

7.6. Các phép toán trên ma trận

Chương 8: Trừu tượng hóa dữ liệu

Đơn thức

  • Bài 486: Tính tích 2 đơn thức
  • Bài 487: Tính đạo hàm cấp 1 đơn thức
  • Bài 488: Tính thương 2 đơn thức
  • Bài 489: Tính đạo hàm cấp k đơn thức
  • Bài 490: Tính giá trị đơn thức tại vị trí x=x0
  • Bài 491: Định nghĩa toán tử (operator *) cho 2 đơn thức
  • Bài 492: Định nghĩa toán tử (operator /) cho 2 đơn thức

Xem lời giải

Đa thức

  • Bài 493: Tính hiệu 2 đa thức
  • Bài 494: Tính tổng 2 đa thức
  • Bài 495: Tính tích 2 đa thức
  • Bài 496: Tính thương 2 đa thức
  • Bài 497: Tính đa thức dư của phép chia đa thức thứ nhất cho đa thức thứ hai
  • Bài 498: Tính đạo hàm cấp 1 của đa thức
  • Bài 499: Tính đạo hàm cấp k của đa thức
  • Bài 500: Tính giá trị của đa thức tại vị trí x = x0
  • Bài 501: Định nghĩa toán tử cộng (operator +) cho hai đa thức
  • Bài 502: Định nghĩa toán tử trừ (operator -) cho hai đa thức
  • Bài 503: Định nghĩa toán tử nhân (operator *) cho hai đa thức
  • Bài 504: Định nghĩa toán tử thương (operator /) cho hai đa thức
  • Bài 505: Tìm nghiệm của đa thức trong đoạn [a, b] cho trước

Xem lời giải

Phân Số

  • Bài 506: rút gọn phân số
  • Bài 507: Tính tổng 2 phân số
  • Bài 508: Tính hiệu 2 phân số
  • Bài 509: Tính tích 2 phân số
  • Bài 510: Tính thương 2 phân số
  • Bài 511: Kiểm tra phân số tối giản
  • Bài 512: Qui đồng phân số
  • Bài 513: Kiểm tra phân số dương
  • Bài 514: Kiểm tra phân số âm
  • Bài 515: So sánh 2 phân số: hàm trả về 1 trong 3 giá trị: 0,-1,1
  • Bài 516: Định nghĩa toán tử operator + cho 2 phân số
  • Bài 517: Định nghĩa toán tử operator – cho 2 phân số
  • Bài 518: Định nghĩa toán tử operator * cho 2 phân số
  • Bài 519: Định nghĩa toán tử operator / cho 2 phân số
  • Bài 520: Định nghĩa toán tử operator ++ cho 2 phân số
  • Bài 521: Định nghĩa toán tử operator — cho 2 phân số

Xem lời giải

Hỗn Số

  • Bài 522: Khai báo dữ liệu để biểu diễn thông tin của một hỗn số
  • Bài 523 Nhập hỗn số
  • Bài 524 Xuất hỗn số
  • Bài 525 Rút gọn hỗn số
  • Bài 526 Tính tổng 2 hỗn số
  • Bài 527 Tính hiệu 2 hỗn số
  • Bài 528 Tính tích 2 hỗn số
  • Bài 529 Tính thương 2 hỗn số
  • Bài 530 Kiểm tra hỗn số tối giản
  • Bài 531 Qui đồng 2 hỗn số

Xem lời giải

Số phức

  • Bài 532: Khai báo biểu diễn thông tin số phức
  • Bài 533: Nhập số phức
  • Bài 534: Xuất số phức
  • Bài 535: Tính tổng 2 số phức
  • Bài 536: Tính hiệu 2 số phức
  • Bài 537: Tính tích 2 số phức
  • Bài 538: Tính thương 2 số phức
  • Bài 539: Tính lũy thừa bậc n số phức

Xem lời giải

Điểm trong mặt phẳng Oxy

  • Bài 540: khai báo dữ liệu điểm OXY
  • Bài 541: Nhập tọa độ điểm trong mặt phẳng
  • Bài 542: Xuất tọa độ điểm trong mặt phẳng
  • Bài 543: Tính khoảng cách giữa 2 điểm
  • Bài 544: Tính khoảng cách 2 điểm theo phương Ox
  • Bài 545: Tính khoảng cách 2 điểm theo phương Oy
  • Bài 546: Tìm tọa độ điểm đối xứng qua gốc tọa độ
  • Bài 547: Tìm điểm đối xứng qua trục hoành
  • Bài 548: Tìm điểm đối xứng qua trục tung
  • Bài 549: Tìm điểm đối xứng qua đường phân giác thứ 1 (y=x)
  • Bài 550: Tìm điểm đối xứng qua đường phân giác thứ 2 (y=-x)
  • Bài 551: Kiểm tra điểm thuộc phần tư thứ 1 ko?
  • Bài 552: Kiểm tra điểm thuộc phần tư thứ 2 ko?
  • Bài 553: Kiểm tra điểm thuộc phần tư thứ 3 ko?
  • Bài 554: Kiểm tra điểm thuộc phần tư thứ 4 ko?

Xem lời giải

Điểm trong không gian Oxyz

  • Bài 555: Khai báo kiểu dữ liệu biểu diễn tọa độ điểm trong không gian Oxyz
  • Bài 556: Nhập tọa độ điểm trong không gian Oxyz
  • Bài 557: Xuất tọa độ điểm theo định dạng (x, y, z)
  • Bài 558: Tính khoảng cách giữa 2 điểm trong không gian
  • Bài 559: Tính khoảng cách giữa 2 điểm trong không gian theo phương x
  • Bài 560: Tính khoảng cách giữa 2 điểm trong không gian theo phương y
  • Bài 561: Tính khoảng cách giữa 2 điểm trong không gian theo phương z
  • Bài 562: Tìm tọa độ điểm đối xứng qua gốc tọa độ
  • Bài 563: Tìm tọa độ điểm đối xứng qua mặt phẳng Oxy
  • Bài 564: Tìm tọa độ điểm đối xứng qua mặt phẳng Oxz
  • Bài 565: Tìm tọa độ điểm đối xứng qua mặt phẳng Oyz

Xem lời giải

Đường tròn trong mặt phẳng Oxy

  • Bài 566: Khai báo kiểu dữ liệu để biểu diễn đường tròn
  • Bài 567: Nhập đường tròn
  • Bài 568: Xuất đường tròn theo định dạng ((x, y), r)
  • Bài 569: Tính chu vi đường tròn
  • Bài 570: Tính diện tích đường tròn
  • Bài 571: Xét vị trí tương đối giữa 2 đường tròn( không cắt nhau, tiếp xúc, cắt nhau)
  • Bài 572: Kiểm tra 1 tọa độ điểm có nằm trong đường tròn hay không
  • Bài 573: Cho 2 đường tròn. Tính diện tích phần mặt phẳng bị phủ bởi 2 đường tròn đó

Xem lời giải

Hình cầu trong không gian Oxyz

  • Bài 574: Khai báo kiểu dữ liệu để biểu diễn hình cầu trong không gian Oxyz
  • Bài 575: Nhập hình cầu
  • Bài 576: Xuất hình cầu theo định dạng ((x, y, z), r)
  • Bài 577: Tính diện tích xung quanh hình cầu
  • Bài 578: Tính thể tích hình cầu
  • Bài 579: Xét vị trí tương đối giữa 2 hình cầu(không cắt nhau, tiếp xúc, cắt nhau)
  • Bài 580: Kiểm tra 1 tọa độ điểm có nằm bên trong hình cầu hay không

Xem lời giải

Tam giác trong mặt phẳng Oxy

  • Bài 581: Khai báo kiểu dữ liệu để biểu diễn tam giác trong mặt phẳng Oxy
  • Bài 582: Nhập tam giác
  • Bài 583: Xuất tam giác theo định dạng ((x1, y1); (x2, y2); (x3, y3))
  • Bài 584: Kiểm tra tọa độ 3 đỉnh có thật sự lập thành 3 đỉnh của 1 tam giác không
  • Bài 585: Tính chu vi tam giác
  • Bài 586: Tính diện tích tam giác
  • Bài 587: Tìm tọa độ trọng tâm tam giác
  • Bài 588: Tìm 1 đỉnh trong tam giác có hoành độ lớn nhất
  • Bài 589: Tìm 1 đỉnh trong tam giác có tung độ nhỏ nhất
  • Bài 590: Tính tổng khoảng cách từ điểm P(x, y) tới 3 đỉnh của tam giác
  • Bài 591: Kiểm tra 1 tọa độ điểm có nằm trong tam giác hay không
  • Bài 592: Hãy cho biết dạng của tam giác(đều, vuông, vuông cân, cân, thường)

Xem lời giải

Xử lý date (ngày tháng năm)

  • Bài 593: Khai báo kiểu dữ liệu để biểu diễn ngày
  • Bài 594: Nhập ngày
  • Bài 595: Xuất ngày theo định dạng (ng/th/nm)
  • Bài 596: Kiểm tra năm nhuận
  • Bài 597: Tính số thứ tự ngày trong năm
  • Bài 598: Tính số thứ tự ngày kể từ ngày 1/1/1
  • Bài 599: Tìm ngày khi biết năm và số thứ tự của ngày trong năm
  • Bài 600: Tìm ngày khi biết số thứ tự ngày kể từ ngày 1/1/1
  • Bài 601: Tìm ngày kế tiếp
  • Bài 602: Tìm ngày hôm qua
  • Bài 603: Tìm ngày kế đó k ngày
  • Bài 604: Tìm ngày trước đó k ngày
  • Bài 605: Khoảng cách giữa 2 ngày
  • Bài 606: So sánh 2 ngày

Xem lời giải

Bài 607: Hãy khai báo kiểu dữ liệu để biểu diễn thông tin của 1 tỉnh (TINH). Biết rằng một tỉnh gồm những thành phần sau:

  • Mã tỉnh: Kiểu số nguyên 2 byte
  • Tên tỉnh: Chuỗi tối đa 30 ký tự
  • Diện tích: Kiểu số thực

Sau đó viết hàm nhập, xuất cho kiểu dữ liệu này.

Xem lời giải

Bài 608: Hãy khai báo kiểu dữ liệu để biểu diễn thông tin của một hộp sữa (HOPSUA). Biết rằng một hộp sữa gồm các thành phần sau:

  • Nhãn hiệu: chuỗi tối đa 20 ký tự
  • Trọng lượng: kiểu số thực
  • Hạn sử dụng: Kiểu dữ liệu Ngày (NGAY)

Sau đó viết hàm nhập, xuất cho kiểu dữ liệu này.

Xem lời giải

Bài 609: Hãy khai báo kiểu dữ liệu để biểu diễn thông tin của 1 vé xem phim (VE). Biết rằng 1 vé xem phim gồm những thành phần sau:

  • Tên phim: Chuỗi tối đa 20 ký tự
  • Giá tiền: kiểu số nguyên 4 byte
  • Xuất chiếu: kiểu thời gian (THOIGIAN)
  • Ngày xem: kiểu dữ liệu ngày (NGAY)

Sau đó viết hàm nhập, xuất cho kiểu dữ liệu này.

Xem lời giải 

Bài 610: Hãy khai báo kiểu dữ liệu để biểu diễn thông tin của một mặt hang (MATHANG). Biết rằng một mặt hang gồm những thành phần sau:

  • Tên mặt hàng: chuỗi tối đa 20 ký tự
  • Đơn giá: kiểu số nguyên 4 byte
  • Số lượng tồn: kiểu số nguyên 4 byte

Sau đó viết hàm nhập, xuất cho kiểu dữ liệu này. 

Xem lời giải

Bài 611: Hãy khai báo kiểu dữ liệu để biểu diễn thông tin của một chuyến bay. Biết rằng một chuyến bay gồm những thành phần sau:

  • Mã chuyến bay: chuỗi tối đa 5 ký tự
  • Ngày bay: kiểu dữ liệu ngày
  • Giờ bay: kiểu thời gian
  • Nơi đi: chuỗi tối đa 20 ký tự
  • Nơi đến: chuỗi tối đa 20 ký tự

Sau đó viết hàm nhập, xuất cho kiểu dữ liệu này

Xem lời giải 

Bài 612: Hãy khai báo kiểu dữ liệu để biểu diễn thông tin của một cầu thủ. Biết rằng một cầu thủ gồm những thành phần sau:

  • Mã cầu thủ: chuỗi tối đa 10 ký tự
  • Tên cầu thủ: chuỗi tối đa 30 ký tự
  • Ngày sinh: kiểu dữ liệu ngày

Sau đó viết hàm nhập, xuất cho kiểu dữ liệu này 

Xem lời giải 

Bài 613: Hãy khai báo kiểu dữ liệu để biểu diễn thông tin của một đội bóng. (DOIBONG). Biết rằng một đội bóng gồm những thành phần sau:

  • Mã đội bóng: chuỗi tối đa 5 ký tự
  • Tên đội bóng: chuỗi tối đa 30 ký tự
  • Danh sách các cầu thủ: mảng 1 chiều các cầu thủ (tối đa 30 phần tử)

Sau đó viết hàm nhập, xuất cho kiểu dữ liệu này

Xem lời giải 

Bài 614: Hãy khai báo kiểu dữ liệu để biểu diễn thông tin của một nhân viên (NHANVIEN). Biết rằng một nhân viên gồm những thành phần sau:

  • Mã nhân viên: chuỗi tối đa 5 ký tự
  • Tên nhân viên: chuỗi tối đa 30 ký tự
  • Lương nhân viên: kiểu số thực

Sau đó viết hàm nhập, xuất cho kiểu dữ liệu này 

Xem lời giải

Bài 615: Hãy khai báo kiểu dữ liệu để biểu diễn thông tin của một thí sinh (THISINH). Biết rằng một thí sinh gồm những thành phần sau:

  • Mã thí sinh: chuỗi tối đa 5 ký tự
  • Họ tên thí sinh: chuỗi tối đa 30 ký tự
  • Điểm toán: kiểu số thực
  • Điểm lý: kiểu số thực
  • Điểm hóa: kiểu số thực
  • Điểm tổng cộng: kiểu số thực

Sau đó viết hàm nhập, xuất cho kiểu dữ liệu này 

Xem lời giải 

Bài 616: Hãy khai báo kiểu dữ liệu để biểu diễn thông tin của một luận văn (LUANVAN). Biết rằng một luận văn gồm những thành phần sau:

  • Mã luận văn: chuỗi tối đa 10 ký tự
  • Tên luận văn: chuỗi tối đa 100 ký tự
  • Họ tên sinh viên thực hiện: chuỗi tối đa 30 ký tự
  • Họ tên giảng viên hướng dẫn: chuỗi tối đa 30 ký tự
  • Năm thực hiện: kiểu số nguyên 2 byte

Sau đó viết hàm nhập, xuất cho kiểu dữ liệu này 

Xem lời giải 

Bài 617: Hãy khai báo kiểu dữ liệu để biểu diễn thông tin của một học sinh (HOCSINH). Biết rằng một lớp học gồm những thành phần sau:

  • Tên học sinh: chuỗi tối đa 30 ký tự
  • Điểm toán: kiểu số nguyên 2 byte
  • Điểm văn: kiểu số nguyên 2 byte
  • Điểm trung bình: kiểu số thực

Sau đó viết hàm nhập, xuất cho kiểu dữ liệu này 

Xem lời giải 

Bài 618: Hãy khai báo kiểu dữ liệu để biểu diễn thông tin của một lớp học (LOPHOC). Biết rằng một lớp học gồm những thành phần sau:

  • Tên lớp: chuỗi tối đa 30 ký tự
  • Sĩ số: kiểu số nguyên 2 byte
  • Danh sách các học sinh trong lớp ( tối đa 50 học sinh)

Sau đó viết hàm nhập, xuất cho kiểu dữ liệu này 

Xem lời giải 

Bài 619: Hãy khai báo kiểu dữ liệu để biểu diễn thông tin của một sổ tiết kiệm (SOTIETKIEM). Biết rằng một sổ tiết kiệm gồm những thành phần sau:

  • Mã sổ: chuỗi tối đa 5 ký tự
  • Loại tiết kiệm: chuỗi tối đa 10 ký tự
  • Họ tên khách hàng: chuỗi tối đa 30 ký tự
  • Chứng minh nhân dân: kiểu số nguyên 4 byte
  • Ngày mở sổ: kiểu dữ liệu ngày
  • Số tiền gửi: kiểu số thực

Sau đó viết hàm nhập, xuất cho kiểu dữ liệu này 

Xem lời giải

Bài 620: Hãy khai báo kiểu dữ liệu để biểu diễn thông tin của một đại lý (DAILY). Biết rằng một đại lý gồm những thành phần sau:

  • Mã đại lý: chuỗi tối đa 5 ký tự
  • Tên đại lý: chuỗi tối đa 30 ký tự
  • Điện thoại: kiểu số nguyên 4 byte
  • Ngày tiếp nhận: kiểu dữ liệu ngày
  • Địa chỉ: chuỗi tối đa 50 ký tự
  • E-Mail: chuỗi tối đa 50 ký tự
  • Sau đó viết hàm nhập, xuất cho kiểu dữ liệu này 

Xem lời giải

Chương 10: Đệ quy

Đệ quy tuyến tính

Đệ quy nhị phân

Chương 11: Kỹ thuật lập trình con trỏ

Con trỏ cơ bản

Con trỏ và mảng 1 chiều

Con trỏ nâng cao

Con trỏ và mảng 2 chiều

Chương 12: Danh sách liên kết

Khai báo

Khởi tạo danh sách liên kết

Tạo node

Thêm 1 node vào đầu danh sách

Duyệt danh sách liên kết

Nhập danh sách liên kết

Các bài tập lý thuyết

Các bài tập khai báo danh sách

Tạo NODE cho danh sách liên kết đơn

Bài tập string trong C

Viết lại các hàm string

Bài tập thao tác tập tin

Các ví dụ về tập tin

Dùng tập tin lưu và xử lý dữ liệu

Trên đây là bộ sưu tập 1000 bài tập lập trình có lời giải. Hy vọng những bài tập này sẽ giúp các bạn rèn luyện và nâng cao kỹ năng lập trình hiệu quả. Chúc các bạn luôn duy trì sự đam mê, học tập tốt và đạt được những thành tựu vượt bậc trong hành trình lập trình của mình!

Similar Posts

0 0 votes
Article Rating
Subscribe
Notify of
guest
0 Comments
Oldest
Newest Most Voted
Inline Feedbacks
View all comments