Ngân hàng 1000 bài code C/C++

53905

Đây là 1000 bài tập lập trình C/C++ của thầy Minh Khang, gồm 13 chương. Dưới đây là lời giải 1000 bài tập của thầy Khang theo từng chương. Các bạn có thể tham khảo trong trường hợp chưa tìm ra hướng giải cũng như tham khảo cách làm, phương pháp tiếp cận bài toán để học được nhiều hơn.

Mục lục

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

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

    1. Tam giác cân đặc nằm giữa màn hình
    2. Tam giác cân rỗng nằm giữa màn hình
    3. Tam giác  vuông cân đặc
    4. Tam giác  vuông cân rỗng
    1. Hình chữ nhật đặc
    2. Hình chữ nhật rỗng

Chương 4: Hàm

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

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

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

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

Bài tập luyện tập tư duy

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

Kỹ thuật tính tổng

Kỹ thuật đếm

Kỹ thuật sắp xếp

Kỹ thuật thêm

Kỹ thuật xóa

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

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

Xây dựng mảng

Chương 6: Ma trận

Kỹ thuật tính toán

Kỹ thuật đếm

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

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

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

Sắp xếp ma trận

Xây dựng ma trận

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

Tính toán

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

Kỹ thuật đếm

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

Sắp xếp

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

SourceCode

Đ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

SourceCode (còn 1 số câu chưa test)

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ố

SourceCode

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ố

SourceCode

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

SourceCode

Đ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?

SourceCode

Đ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

SourceCode

Đườ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 đó

SourceCode

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

SourceCode

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)

SourceCode

Ngày

  • 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
  • Tính thứ của ngày bất kỳ trong năm(Dùng CT Zeller)

SourceCode

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

SourceCode

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

SourceCode

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

SourceCode

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

SourceCode

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

SourceCode

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

SourceCode

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

SourceCode

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

SourceCode

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

SourceCode

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

SourceCode

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

SourceCode

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

SourceCode

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

SourceCode

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

SourceCode

Chương 10: Đệ quy

Đệ quy tuyến tính

Đệ quy nhị phân

Đệ quy hỗ tương

Bài 712: Viết hàm tính số hạng thứ n của hai dãy sau:

X(0) = 1
Y(0) = 0
X(n) = x(n – 1) + y(n – 1) (n > 0)
Y(n) = 3 * x(n – 1) + 2 * y(n – 1) (n > 0)

Đệ quy phi tuyến

Bài 713: Tính số hạng thứ n của dãy

X(0) = 1
X(n) = n^2.x(0) + (n – 1)^2.x(1) + … + (n – i)^2.x(i) +… + 2^2.x(n – 2) + 1^2.x(n – 1)

Một số bài toán đệ quy thông dụng

Bài toán tháp Hà Nội

Bài 714: Có 3 chồng đĩa đánh số 1, 2 và 3. Đầu tiên chồng 1 có n đĩa được xếp sao cho đĩa lớn hơn nằm bên dưới và hai chồng đĩa còn lại không có đĩa nào. Yêu cầu: chuyển tất cả các đĩa từ chồng 1 sang chồng 3, mỗi lần chỉ chuyển một đĩa và được phép sử dụng chồng hai làm trung gian. Hơn nữa trong quá trình chuyển đĩa phải bảo đảm qui tắc đĩa lớn hơn nằm bên dưới

Bài toán phát sinh hoán vị

Bài 715: Cho tập hợp A có n phần tử được đánh số từ 1, 2, …, n. Một hoán vị của A là một dãy a1, a2, … , an. Trong đó (a.i) thuộc A và chúng đôi một khác nhau. Hãy viết hàm phát sinh tất cả các hoán vị của tập hợp A.

Bài toán Tám Hậu

Bài 716: Cho bàn cờ vua kích thước (8 x 8). Hãy sắp 8 quân hậu vào bàn cờ sao cho không có bất kỳ 2 quân hậu nào có thể ăn nhau

Bài toán Mã Đi Tuần

Bài 717: Cho bàn cờ vua kích thước (8 x 8). Hãy di chuyển quân mã trên khắp bàn cờ sao cho mỗi ô đi qua đúng một lần

Đệ quy và mảng 1 chiều

Xuất mảng

Kỹ thuật đếm

Kỹ thuật tính toán

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

Kỹ thuật tìm kiếm

Kỹ thuật sắp xếp

Giải bài tập đệ quy

Chương 11: Con trỏ

Con trỏ cơ bản

+ Khai báo và khởi tạo

+ Tham số là con trỏ

+ Cần nhớ các toán tử của con trỏ

+ Kích thước của con trỏ

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

+ Nhập xuất

+ Thêm, Xóa, Cộng, Trừ

+ Liệt kê hoán vị

+ Bài tập tổng hợp

Con trỏ nâng cao

+ Thay đổi con trỏ sau khi ra khỏi hàm

+ Con trỏ vô kiểu

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

+ Nhập xuất

+ Thêm xóa

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

Chương trình minh họa

  • Bài 787: Viết chương trình thực hiện các yêu cầu sau:
    1. Nhập danh sách liên kết đơn các số nguyên
    2. Xuất danh sách liên kết đơn các số nguyên
    3. Tính tổng các node trong DSLK

SourceCode

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

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

– Họ tên: tối đa 30 ký tự
– Điểm toán: kiểu số nguyên
– Điểm văn: kiểu số nguyên
– Điểm trung bình: kiểu số thực

SourceCode

  • Bài 797: Hãy khai báo cấu trúc dữ liệu cho danh sách liên kết đơn các thí sinh. Giả sử thí sinh gồm những thành phần thông tin như sau:

– Mã thí sinh: tối đa 5 ký tự
– Họ tên: 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

SourceCode

  • Bài 798: Hãy khai báo cấu trúc dữ liệu cho danh sách liên kết đơn các phòng trong khách sạn (PHONG). Giả sử phòng khách sạn gồm những thông tin như sau:

– Mã phòng: tối đa 5 ký tự
– Tên phòng: tối đa 30 ký tự
– Đơn giá thuê: kiểu số thực
– Số lượng giường: kiểu số nguyên
– Tình trạng giường: 0 rảnh 1 bận

SourceCode

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à chia sẻ 1000 bài tập lập trình C/C++ có lời giải của thầy Khang từ blog của bạn Vương Trí Tài.

BÌNH LUẬN

Vui lòng nhập bình luận của bạn
Vui lòng nhập tên của bạn ở đây