Bài tập lập trình - Cơ bản
Trang này tổng hợp 200 bài tập lập trình cơ bản, sắp xếp theo chủ đề từ dễ đến khó, mỗi bài có đáp án minh họa bằng nhiều ngôn ngữ lập trình khác nhau. Nếu bạn đã làm quen với các kiến thức cơ bản, hãy thử sức với các bài tập nâng cao hơn ở trang Bài tập lập trình - Nâng cao.
Mỗi bài đều có phần đáp án gợi ý ở dưới, mặc định ẩn đi - bạn nên tự làm trước, sau đó bấm vào “Xem đáp án” để đối chiếu. Đáp án chỉ là một cách giải, không phải cách duy nhất.
Bạn có thể tải file .pdf ở đây: 200 bài tập lập trình cơ bản
Xem playlist video hướng dẫn giải trên YouTube: Playlist bài giải bài tập lập trình cơ bản
Nhóm 1: Input/Output và Toán học cơ bản
Phần tiêu đề “Nhóm 1: Input/Output và Toán học cơ bản”Xem thêm lý thuyết: Nhập dữ liệu từ Bàn phím, In kết quả/thông tin với hàm print().
1. Hello World
Viết chương trình in ra dòng chữ Hello, World!.
Xem đáp án
print("Hello, World!")#include <iostream>
int main() { std::cout << "Hello, World!" << std::endl; return 0;}public class Main { public static void main(String[] args) { System.out.println("Hello, World!"); }}fun main() { println("Hello, World!")}void main() { print("Hello, World!");}2. Tổng hai số
Đọc vào 2 số nguyên a, b từ bàn phím (dùng input()), in ra tổng của chúng.
Xem đáp án
Xem hướng dẫn giải
3. Chu vi và diện tích hình chữ nhật
Đọc vào chiều dài a và chiều rộng b. Tính chu vi (2*(a+b)) và diện tích (a*b).
Xem đáp án
Xem hướng dẫn giải
4. Đổi độ C sang độ F
Đọc vào nhiệt độ theo độ C, in ra nhiệt độ tương ứng theo độ F. Công thức: F = C * 9/5 + 32.
Xem đáp án
Xem hướng dẫn giải
5. Diện tích và chu vi hình tròn
Đọc vào bán kính r, tính chu vi (2×pi×r) và diện tích (pi×r2), làm tròn 2 chữ số thập phân.
Xem đáp án
Xem hướng dẫn giải
6. Đổi giây thành giờ:phút:giây
Đọc vào số giây s, in ra theo định dạng Giờ:Phút:Giây, mỗi phần gồm 2 chữ số (nếu nhỏ hơn 10 thì thêm số 0 ở trước).
Ví dụ:
Input: 3665Output: 01:01:05Xem đáp án
7. Tính lũy thừa
Đọc vào 2 số nguyên a và n, in ra a mũ n (không dùng ** hoặc pow, dùng vòng lặp).
Xem đáp án
8. Điểm trung bình
Đọc vào 3 điểm số Toán, Lý, Hóa. In ra điểm trung bình, làm tròn 1 chữ số thập phân.
Xem đáp án
9. Đảo ngược số có 2 chữ số
Đọc vào một số nguyên dương có 2 chữ số, in ra số đó khi đảo ngược 2 chữ số.
Ví dụ:
Input: 47Output: 74Xem đáp án
10. Hoán đổi giá trị 2 biến
Cho 2 biến a = 5, b = 10. Hoán đổi giá trị của chúng mà không dùng biến tạm, rồi in ra kết quả.
Xem đáp án
11. Tính trung bình cộng của 3 số
Đọc vào 3 số thực a, b, c từ bàn phím (dùng input()), in ra trung bình cộng của chúng.
Xem đáp án
12. Tìm số lớn nhất trong 2 số
Đọc vào 2 số thực a, b từ bàn phím, in ra số lớn hơn.
Xem đáp án
13. Chu vi và diện tích hình vuông
Đọc vào cạnh a của hình vuông, in ra chu vi (4a) và diện tích (a²).
Xem đáp án
14. Đổi từ kilômét sang mét
Đọc vào số km, in ra số mét tương ứng (km × 1000).
Xem đáp án
15. Tính tiền phải trả sau giảm giá
Đọc vào giá gốc price và phần trăm giảm giá percent, tính và in ra số tiền phải trả (price × (1 - percent/100)).
Xem đáp án
16. Tính chỉ số BMI
Đọc vào cân nặng weight (kg) và chiều cao height (m), tính chỉ số BMI (weight / height²) và in kết quả làm tròn 2 chữ số thập phân.
Xem đáp án
17. Tính lãi đơn khi gửi tiết kiệm
Đọc vào vốn gốc P, lãi suất năm r (%) và số năm n. Tiền lãi = P × r/100 × n. In ra tổng tiền nhận được (P + tiền lãi).
Xem đáp án
18. Tính diện tích tam giác bằng công thức Heron
Đọc vào độ dài 3 cạnh a, b, c của một tam giác, tính diện tích bằng công thức Heron: nửa chu vi p = (a+b+c)/2, diện tích S = √(p(p-a)(p-b)(p-c)).
Ví dụ:
Input: a=3, b=4, c=5Output: Diện tích: 6.0Xem đáp án
19. Kiểm tra số chia hết cho cả 3 và 5
Đọc vào số nguyên n, in ra “Có” nếu n chia hết cho cả 3 và 5, ngược lại in “Không”.
Ví dụ:
Input: 15Output: CóXem đáp án
20. Tính tiền cước taxi theo km (giá bậc thang)
Đọc vào số km km (có thể là số thực). Quy tắc: 2km đầu giá 15000đ/km, từ km thứ 3 trở đi giá 12000đ/km. Tính và in ra tổng tiền phải trả.
Ví dụ:
Input: 5Output: 66000Xem đáp án
21. Kiểm tra tam giác vuông
Đọc vào 3 cạnh a, b, c (số dương), kiểm tra chúng có thỏa định lý Pythagoras không (cạnh lớn nhất bình phương bằng tổng bình phương 2 cạnh còn lại). In ra “Là tam giác vuông” hoặc “Không phải tam giác vuông”.
Ví dụ:
Input: 3, 4, 5Output: Là tam giác vuôngXem đáp án
22. Xếp loại chỉ số BMI
Đọc vào chỉ số bmi. Phân loại: < 18.5: Thiếu cân, 18.5 - 24.9: Bình thường, 25 - 29.9: Thừa cân, >= 30: Béo phì.
Ví dụ:
Input: 22Output: Bình thườngXem đáp án
23. Kiểm tra bội số
Đọc vào 2 số nguyên a, b (b khác 0), kiểm tra a có là bội số của b không (a % b == 0).
Ví dụ:
Input: a = 12, b = 4Output: 12 là bội số của 4Xem đáp án
24. Tính tiền vé xem phim theo độ tuổi
Đọc vào tuổi age. Quy định giá vé: dưới 6 tuổi miễn phí (0đ), 6-12 tuổi: 50000đ, 13-59 tuổi: 100000đ, từ 60 tuổi trở lên: 50000đ. In ra giá vé.
Ví dụ:
Input: 30Output: 100000Xem đáp án
25. Phân loại ký tự nhập vào
Đọc vào 1 ký tự ch, kiểm tra và in ra đó là “Chữ hoa”, “Chữ thường”, “Chữ số” hay “Ký tự đặc biệt”.
Ví dụ:
Input: AOutput: Chữ hoaXem đáp án
Nhóm 2: Cấu trúc rẽ nhánh (if/elif/else)
Phần tiêu đề “Nhóm 2: Cấu trúc rẽ nhánh (if/elif/else)”Xem thêm lý thuyết: Cấu trúc rẽ nhánh (If-Elif-Else).
26. Kiểm tra chẵn lẻ
Đọc vào một số nguyên n, in ra "Chẵn" nếu n chẵn, "Lẻ" nếu n lẻ.
Ví dụ:
Input: 7Output: LẻXem đáp án
27. Số dương, âm hay bằng 0
Đọc vào một số n. In "Dương" nếu n > 0, "Âm" nếu n < 0, "Bằng 0" nếu n == 0.
Ví dụ:
Input: -5Output: ÂmXem đáp án
28. Số lớn nhất trong 3 số
Đọc vào 3 số a, b, c. In ra số lớn nhất (không dùng hàm max).
Ví dụ:
Input: a=7, b=12, c=9Output: 12Xem đáp án
29. Kiểm tra năm nhuận
Đọc vào năm N. In "Nhuận" nếu N chia hết cho 400, hoặc chia hết cho 4 nhưng không chia hết cho 100.
Ví dụ:
Input: 2024Output: NhuậnXem đáp án
30. Xếp loại học lực
Đọc điểm trung bình diem (0-10). Xếp loại: >= 8: Giỏi, >= 6.5: Khá, >= 5: Trung bình, còn lại: Yếu.
Ví dụ:
Input: 7.2Output: KháXem đáp án
31. Kiểm tra tam giác
Đọc vào 3 số dương a, b, c. Kiểm tra 3 số đó có tạo thành tam giác hay không (tổng 2 cạnh bất kỳ phải lớn hơn cạnh còn lại).
Ví dụ:
Input: a=3, b=4, c=5Output: Là tam giácXem đáp án
32. Giải phương trình bậc nhất
Đọc vào 2 hệ số a, b của phương trình ax + b = 0. In ra nghiệm, hoặc thông báo phù hợp nếu vô nghiệm/vô số nghiệm.
Ví dụ:
Input: a=2, b=-4Output: x = 2.0Xem đáp án
33. Tính tiền điện
Đọc số điện tiêu thụ kwh. Giá: 50 số đầu 1,678đ/số; 50 số tiếp theo 1,734đ/số; từ số 101 trở lên 2,014đ/số. In ra tổng tiền phải trả.
Ví dụ:
Input: 120Output: 210880 đồngXem đáp án
34. Phân loại tam giác theo độ dài 3 cạnh
Đọc vào độ dài 3 cạnh a, b, c. Kiểm tra đây có phải là một tam giác hợp lệ không (tổng 2 cạnh bất kỳ luôn lớn hơn cạnh còn lại). Nếu hợp lệ, phân loại: “Tam giác đều” (3 cạnh bằng nhau), “Tam giác cân” (2 cạnh bằng nhau), hoặc “Tam giác thường”.
Ví dụ:
Input: a=3, b=3, c=4Output: Tam giác cânXem đáp án
35. Máy tính đơn giản
Đọc vào 2 số a, b và 1 phép toán (+, -, *, /). In ra kết quả tương ứng.
Ví dụ:
Input: a=10, op=+, b=5Output: 15.0Xem đáp án
Nhóm 3: Vòng lặp (for, while)
Phần tiêu đề “Nhóm 3: Vòng lặp (for, while)”Xem thêm lý thuyết: Vòng lặp for với hàm range(), Vòng lặp while, Break, Continue và Pass.
36. In các số từ 1 đến n
Đọc vào số nguyên n, in ra các số từ 1 đến n, mỗi số trên 1 dòng.
Xem đáp án
37. Tính tổng 1 + 2 + … + n
Đọc vào n, tính tổng các số từ 1 đến n.
Xem đáp án
38. Tính giai thừa
Đọc vào n, tính n! (giai thừa của n).
Xem đáp án
39. Bảng cửu chương
Đọc vào số n, in ra bảng cửu chương của n (từ n x 1 đến n x 10).
Xem đáp án
40. Đếm số chữ số của một số
Đọc vào một số nguyên dương, đếm xem nó có bao nhiêu chữ số.
Ví dụ:
Input: 12345Output: 5Xem đáp án
41. Tính tổng các chữ số
Đọc vào một số nguyên dương, tính tổng các chữ số của nó.
Ví dụ:
Input: 12345Output: 15Xem đáp án
42. Kiểm tra số nguyên tố
Đọc vào số nguyên dương n, kiểm tra n có phải số nguyên tố hay không.
Ví dụ:
Input: 17Output: Là số nguyên tốXem đáp án
43. In các số nguyên tố nhỏ hơn n
Đọc vào n, in ra tất cả các số nguyên tố nhỏ hơn n.
Ví dụ:
Input: 20Output: 2 3 5 7 11 13 17 19Xem đáp án
44. Ước chung lớn nhất (ƯCLN)
Đọc vào 2 số nguyên dương a, b, tính ƯCLN của chúng (dùng thuật toán Euclid).
Ví dụ:
Input: a=48, b=18Output: ƯCLN: 6Xem đáp án
45. Bội chung nhỏ nhất (BCNN)
Đọc vào 2 số nguyên dương a, b, tính BCNN của chúng (dựa vào ƯCLN: BCNN = a*b / ƯCLN).
Ví dụ:
Input: a=4, b=6Output: BCNN: 12Xem đáp án
46. Dãy Fibonacci
Đọc vào n, in ra n số đầu tiên của dãy Fibonacci (0, 1, 1, 2, 3, 5, …).
Ví dụ:
Input: 7Output: 0 1 1 2 3 5 8Xem đáp án
47. Số hoàn hảo
Một số được gọi là số hoàn hảo nếu nó bằng tổng các ước số dương nhỏ hơn nó (ví dụ: 6 = 1 + 2 + 3). In ra tất cả số hoàn hảo trong khoảng từ 1 đến n.
Ví dụ:
Input: 30Output: 6 28Xem đáp án
48. In hình tam giác dấu sao
Đọc vào n, in ra hình tam giác vuông bằng dấu * có n dòng.
Ví dụ với n = 4:
**********Xem đáp án
49. In hình tam giác cân dấu sao
Đọc vào n, in ra hình tam giác cân bằng dấu * có n dòng, căn giữa.
Ví dụ với n = 3:
* ********Xem đáp án
50. Đếm số lần xuất hiện
Đọc vào 1 số n, dùng vòng lặp while để đếm xem cần chia n cho 2 bao nhiêu lần thì về 1 (làm tròn xuống).
Xem đáp án
51. Đoán số (dùng while)
Cho trước một số bí mật secret = 42. Dùng vòng lặp while để yêu cầu người dùng nhập số cho đến khi đoán đúng, in "Đoán đúng rồi!" khi thành công.
Xem đáp án
52. Số Armstrong
Một số có 3 chữ số là số Armstrong nếu tổng lập phương các chữ số của nó bằng chính nó (ví dụ: 153 = 13 + 53 + 33). Kiểm tra một số nhập vào có phải số Armstrong không.
Ví dụ:
Input: 153Output: Là số ArmstrongXem đáp án
53. break và continue
Đọc vào n, in ra các số từ 1 đến n, bỏ qua các số chia hết cho 3, và dừng hẳn khi gặp số chia hết cho 7.
Xem đáp án
54. Vòng lặp lồng nhau - in ma trận số
Đọc vào n, in ra ma trận vuông kích thước n x n chứa các số từ 1 đến n*n, theo hàng.
Ví dụ n = 3:
1 2 34 5 67 8 9Xem đáp án
55. Số nguyên tố cùng nhau
Đọc vào 2 số a, b. Kiểm tra chúng có phải là 2 số nguyên tố cùng nhau không (ƯCLN bằng 1).
Ví dụ:
Input: a=8, b=9Output: Nguyên tố cùng nhauXem đáp án
56. In các số chẵn từ 1 đến n
Cho n = 20, in ra tất cả các số chẵn từ 1 đến n.
Xem đáp án
57. Tính tổng các số chẵn từ 1 đến n
Cho n = 20, tính tổng các số chẵn từ 1 đến n và in kết quả.
Xem đáp án
58. In dãy Fibonacci có giá trị nhỏ hơn n
Cho n = 100, in ra các số trong dãy Fibonacci (0, 1, 1, 2, 3, 5, 8, …) có giá trị nhỏ hơn n.
Xem đáp án
59. Tính tổng bình phương các số từ 1 đến n
Cho n = 10, tính tổng 1² + 2² + ... + n² và in kết quả.
Xem đáp án
60. In hình chữ nhật bằng dấu sao
Cho rows = 4, cols = 6, in ra hình chữ nhật đặc kích thước rows x cols bằng ký tự *.
Ví dụ với rows = 4, cols = 6:
************************Xem đáp án
61. In hình vuông rỗng bằng dấu sao
Cho n = 5, in ra hình vuông cạnh n, trong đó chỉ viền là dấu *, bên trong là khoảng trắng.
Ví dụ với n = 5:
****** ** ** ******Xem đáp án
62. Đếm số lượng số nguyên tố trong đoạn [a, b]
Cho a = 10, b = 50, đếm số lượng số nguyên tố trong đoạn [a, b] và in kết quả.
Xem đáp án
63. Liệt kê tất cả ước số của một số n
Cho n = 36, in ra danh sách tất cả các ước số của n theo thứ tự tăng dần.
Xem đáp án
64. Kiểm tra số chính phương (perfect square)
Cho n = 49, kiểm tra n có phải là bình phương của một số nguyên hay không, in kết quả.
Xem đáp án
65. Tính tổng các số chia hết cho 3 hoặc 5 nhỏ hơn n
Cho n = 50, tính tổng các số từ 1 đến n - 1 chia hết cho 3 hoặc 5, in kết quả.
Xem đáp án
Nhóm 4: Chuỗi (String)
Phần tiêu đề “Nhóm 4: Chuỗi (String)”Xem thêm lý thuyết: Chuỗi ký tự (String), Các phương thức của String.
66. Đếm số ký tự trong chuỗi
Đọc vào một chuỗi, in ra độ dài của chuỗi đó (không dùng len()).
Xem đáp án
67. Đảo ngược chuỗi
Đọc vào một chuỗi, in ra chuỗi đó khi đảo ngược thứ tự ký tự.
Xem đáp án
68. Kiểm tra chuỗi đối xứng (Palindrome)
Palindrome (chuỗi đối xứng) là chuỗi khi đọc xuôi và đọc ngược đều giống nhau, ví dụ level, radar, hay madam. Đọc vào một chuỗi, kiểm tra chuỗi đó có phải là palindrome hay không.
Ví dụ:
Input: levelOutput: Là palindromeXem đáp án
69. Đếm số nguyên âm và phụ âm
Đọc vào một chuỗi, đếm số lượng nguyên âm (a, e, i, o, u) có trong chuỗi (không phân biệt hoa thường).
Ví dụ:
Input: Hello WorldOutput: 3Xem đáp án
70. Viết hoa chữ cái đầu mỗi từ
Đọc vào một câu, in ra câu đó với chữ cái đầu mỗi từ được viết hoa (không dùng .title()).
Ví dụ:
Input: toi yeu pythonOutput: Toi Yeu PythonXem đáp án
71. Đếm số lần xuất hiện của 1 ký tự
Đọc vào một chuỗi và một ký tự, đếm xem ký tự đó xuất hiện bao nhiêu lần trong chuỗi.
Ví dụ:
Input: s=banana, c=aOutput: 3Xem đáp án
72. Loại bỏ khoảng trắng thừa
Đọc vào một chuỗi có nhiều khoảng trắng liên tiếp, in ra chuỗi chỉ còn 1 khoảng trắng giữa các từ.
Ví dụ:
Input: " hello world "Output: "hello world"Xem đáp án
73. Kiểm tra Anagram
Anagram là 2 chuỗi được tạo từ cùng một tập ký tự nhưng sắp xếp theo thứ tự khác nhau, ví dụ listen và silent. Đọc vào 2 chuỗi, kiểm tra chúng có phải là anagram của nhau không.
Ví dụ:
Input: s1=listen, s2=silentOutput: Là anagramXem đáp án
74. Tìm từ dài nhất trong câu
Đọc vào một câu, in ra từ dài nhất trong câu đó.
Ví dụ:
Input: Hoc lap trinh rat thu viOutput: trinhXem đáp án
75. Thay thế ký tự trong chuỗi
Đọc vào một chuỗi, thay tất cả các ký tự "a" bằng "@" (không dùng .replace()).
Ví dụ:
Input: bananaOutput: b@n@n@Xem đáp án
76. Nối chuỗi từ danh sách
Cho một list các từ, ví dụ ["Toi", "yeu", "Python"]. In ra thành một câu, các từ cách nhau bởi dấu cách.
Xem đáp án
77. Đếm số từ trong câu
Đọc vào một câu, đếm số lượng từ trong câu đó.
Ví dụ:
Input: Toi dang hoc PythonOutput: 4Xem đáp án
78. Kiểm tra chuỗi con
Đọc vào chuỗi s và chuỗi sub. Kiểm tra sub có phải là chuỗi con của s hay không.
Ví dụ:
Input: s=hello world, sub=lo woOutput: Có chứaXem đáp án
79. Chuyển đổi hoa/thường
Đọc vào một chuỗi, in ra chuỗi đó với mọi ký tự thường thành hoa và ngược lại (không dùng .swapcase()).
Ví dụ:
Input: Hello World 123Output: hELLO wORLD 123Xem đáp án
80. Mã hóa Caesar đơn giản
Đọc vào một chuỗi chỉ gồm chữ thường và một số k. Mã hóa chuỗi bằng cách dịch mỗi ký tự đi k vị trí trong bảng chữ cái (chỉ xử lý 26 chữ cái a-z, có vòng lại từ đầu).
Ví dụ:
Input: s=abc, k=3Output: defXem đáp án
81. Kiểm tra chuỗi có phải biểu diễn của một số hay không
Cho vài chuỗi mẫu như "12345", "12a45", "-123", kiểm tra từng ký tự trong chuỗi có phải là chữ số hay không, in kết quả Có/Không cho từng chuỗi.
Xem đáp án
82. Đếm số từ trong câu bắt đầu bằng một chữ cái cho trước
Cho câu "Con cao con thap con o giua" và chữ cái 'c', đếm số từ trong câu bắt đầu bằng chữ cái đó (không phân biệt hoa thường).
Xem đáp án
83. Loại bỏ các ký tự không phải chữ và số khỏi chuỗi
Cho chuỗi "Hello, World! 123@#", loại bỏ các ký tự không phải chữ cái hoặc chữ số, in ra chuỗi kết quả.
Xem đáp án
84. Tìm ký tự xuất hiện nhiều nhất trong chuỗi
Cho chuỗi mẫu "chuoi vi du de tim ky tu xuat hien nhieu nhat", bỏ qua khoảng trắng, tìm và in ra ký tự xuất hiện nhiều nhất cùng số lần xuất hiện.
Xem đáp án
85. Đếm số lượng chữ số, chữ cái và khoảng trắng trong chuỗi
Cho chuỗi "Hello 123 World 456", đếm và in ra số lượng chữ số, chữ cái và khoảng trắng có trong chuỗi.
Xem đáp án
86. Sắp xếp các từ trong câu theo thứ tự bảng chữ cái
Cho câu mẫu "chuoi vi du sap xep tu theo alphabet", tách thành các từ, sắp xếp theo thứ tự bảng chữ cái rồi in ra câu mới.
Xem đáp án
87. Đếm số lần xuất hiện của một từ trong câu (không phân biệt hoa thường)
Cho câu "Con meo ngoi tren tham con meo ngu con meo kieu" và từ cần đếm "meo", đếm số lần từ đó xuất hiện trong câu.
Xem đáp án
88. Ghép xen kẽ hai chuỗi theo từng ký tự
Cho hai chuỗi "abc" và "123" có cùng độ dài, ghép xen kẽ ký tự của hai chuỗi (kết quả "a1b2c3"), in ra chuỗi kết quả.
Xem đáp án
89. Kiểm tra hai chuỗi có phải là hoán vị của nhau hay không
Cho hai chuỗi mẫu "listen" và "silent", kiểm tra xem hai chuỗi có chứa đúng cùng tập ký tự và số lượng (hoán vị/anagram) của nhau hay không.
Xem đáp án
90. Tính tổng các chữ số xuất hiện trong một chuỗi
Cho chuỗi "a1b2c3d4", duyệt qua từng ký tự, cộng dồn các ký tự là chữ số rồi in ra tổng.
Xem đáp án
Nhóm 5: List
Phần tiêu đề “Nhóm 5: List”Xem thêm lý thuyết: Danh sách (List).
91. Tính tổng và trung bình cộng của list
Cho một list số, tính tổng và trung bình cộng các phần tử.
Xem đáp án
92. Tìm số lớn nhất, nhỏ nhất trong list
Cho một list số, tìm giá trị lớn nhất và nhỏ nhất (không dùng max(), min()).
Ví dụ:
Input: [4, 8, 15, 16, 23, 42]Output: Lớn nhất: 42, Nhỏ nhất: 4Xem đáp án
93. Đảo ngược list
Cho một list, in ra list đó theo thứ tự đảo ngược (không dùng .reverse() hoặc [::-1]).
Xem đáp án
94. Loại bỏ phần tử trùng lặp
Cho một list có phần tử trùng lặp, tạo ra một list mới không có phần tử trùng, giữ nguyên thứ tự xuất hiện đầu tiên.
Ví dụ:
Input: [1, 2, 2, 3, 4, 4, 4, 5]Output: [1, 2, 3, 4, 5]Xem đáp án
95. Tìm số chẵn/lẻ trong list
Cho một list số nguyên, tạo ra 2 list mới chứa các số chẵn và các số lẻ.
Ví dụ:
Input: [1, 2, 3, 4, 5, 6, 7, 8]Output: Số chẵn: [2, 4, 6, 8], Số lẻ: [1, 3, 5, 7]Xem đáp án
96. Sắp xếp list (Bubble Sort)
Bubble sort (sắp xếp nổi bọt) là thuật toán sắp xếp đơn giản: lặp lại việc so sánh 2 phần tử liền kề, nếu sai thứ tự thì đổi chỗ cho nhau, cứ thế đến khi không còn cặp nào cần đổi chỗ (giống bong bóng nổi dần lên trên). Cho một list số, sắp xếp tăng dần bằng thuật toán này, không dùng .sort().
Ví dụ:
Input: [5, 2, 9, 1, 5, 6]Output: [1, 2, 5, 5, 6, 9]Xem đáp án
97. Tìm kiếm tuần tự (Linear Search)
Cho một list và một giá trị cần tìm, trả về vị trí (index) của giá trị đó trong list, hoặc -1 nếu không tìm thấy.
Ví dụ:
Input: numbers=[10, 25, 3, 47, 8], target=47Output: 3Xem đáp án
98. Tính tổng 2 ma trận
Cho 2 ma trận (list 2 chiều) cùng kích thước, tính ma trận tổng.
Ví dụ:
Input: a=[[1,2],[3,4]], b=[[5,6],[7,8]]Output: [[6, 8], [10, 12]]Xem đáp án
99. Làm phẳng list lồng nhau
Cho một list chứa các list con, ví dụ [[1, 2], [3, 4], [5]]. In ra một list phẳng chứa tất cả phần tử.
Ví dụ:
Input: [[1, 2], [3, 4], [5]]Output: [1, 2, 3, 4, 5]Xem đáp án
100. Trộn 2 list đã sắp xếp
Cho 2 list đã sắp xếp tăng dần, trộn chúng thành 1 list mới cũng tăng dần (không dùng sorted()).
Ví dụ:
Input: a=[1, 3, 5, 7], b=[2, 4, 6, 8, 10]Output: [1, 2, 3, 4, 5, 6, 7, 8, 10]Xem đáp án
101. Tìm phần tử xuất hiện nhiều nhất
Cho một list, tìm phần tử xuất hiện nhiều lần nhất trong list đó.
Ví dụ:
Input: [1, 3, 2, 3, 4, 3, 2]Output: 3Xem đáp án
102. Xoay list
Cho một list và một số k, xoay list sang phải k vị trí. Ví dụ [1,2,3,4,5] xoay 2 vị trí thành [4,5,1,2,3].
Ví dụ:
Input: numbers=[1, 2, 3, 4, 5], k=2Output: [4, 5, 1, 2, 3]Xem đáp án
103. Kiểm tra list con
Cho 2 list a và b, kiểm tra tất cả phần tử của b có nằm trong a không.
Ví dụ:
Input: a=[1, 2, 3, 4, 5], b=[2, 4]Output: TrueXem đáp án
104. Tính tổng đường chéo ma trận
Cho một ma trận vuông, tính tổng các phần tử trên đường chéo chính.
Ví dụ:
Input: [[1,2,3],[4,5,6],[7,8,9]]Output: 15Xem đáp án
105. Chia list thành các nhóm nhỏ
Cho một list và một số n, chia list thành các nhóm con có tối đa n phần tử.
Ví dụ:
Input: numbers=[1,2,3,4,5,6,7], n=3Output: [[1, 2, 3], [4, 5, 6], [7]]Xem đáp án
106. Sắp xếp chọn (Selection Sort)
Cho một list số chưa sắp xếp, tự cài đặt thuật toán sắp xếp chọn (Selection Sort) để sắp xếp tăng dần, sau đó in kết quả.
Xem đáp án
107. Sắp xếp chèn (Insertion Sort)
Cho một list số chưa sắp xếp, tự cài đặt thuật toán sắp xếp chèn (Insertion Sort) để sắp xếp tăng dần, sau đó in kết quả.
Xem đáp án
108. Tìm kiếm nhị phân (Binary Search)
Cho một list số ĐÃ sắp xếp tăng dần và một giá trị target, tự cài đặt thuật toán tìm kiếm nhị phân để tìm chỉ số của target trong list (trả về -1 nếu không tìm thấy).
Xem đáp án
109. Tổng các phần tử dương và tổng các phần tử âm
Cho một list số có cả giá trị dương và âm, tính riêng tổng các phần tử dương và tổng các phần tử âm, sau đó in cả hai kết quả.
Xem đáp án
110. Tìm phần tử lớn thứ hai trong list
Cho một list số (không có phần tử trùng nhau), tìm phần tử lớn thứ hai bằng cách duyệt qua list (không dùng sort() rồi lấy phần tử cuối thứ 2).
Xem đáp án
111. Xóa các phần tử trùng lặp, giữ nguyên thứ tự xuất hiện
Cho một list có phần tử trùng lặp, tạo list mới chỉ chứa các phần tử xuất hiện lần đầu, giữ nguyên thứ tự xuất hiện ban đầu.
Xem đáp án
112. Kiểm tra list có đang sắp xếp tăng dần hay không
Cho một list số, kiểm tra xem list đó có đang được sắp xếp tăng dần hay không.
Xem đáp án
113. Tính hiệu của hai list
Cho hai list A và B, tìm các phần tử có trong A nhưng không có trong B.
Xem đáp án
114. Trộn hai list và loại bỏ phần tử trùng lặp
Cho hai list A và B, trộn hai list lại rồi loại bỏ các phần tử trùng lặp trong kết quả, sau đó in ra list đã sắp xếp.
Xem đáp án
115. Vị trí xuất hiện đầu tiên và cuối cùng của một phần tử
Cho một list có phần tử lặp lại nhiều lần và một giá trị target, tìm vị trí xuất hiện đầu tiên và cuối cùng của target trong list.
Xem đáp án
116. Tính trung vị (median) của một list số
Cho một list số, sắp xếp rồi tính trung vị (median): nếu số phần tử lẻ, trung vị là phần tử ở giữa; nếu chẵn, trung vị là trung bình cộng của hai phần tử ở giữa.
Xem đáp án
117. Xoay ma trận vuông 90 độ theo chiều kim đồng hồ
Cho một ma trận vuông (list 2 chiều), xoay ma trận 90 độ theo chiều kim đồng hồ rồi in kết quả.
Xem đáp án
Nhóm 6: Tuple, Dictionary, Set
Phần tiêu đề “Nhóm 6: Tuple, Dictionary, Set”Xem thêm lý thuyết: Tuple, Từ điển (Dictionary), Tập hợp (Set).
118. Đổi list thành tuple và ngược lại
Cho một list, chuyển thành tuple; sau đó chuyển tuple đó ngược lại thành list.
Xem đáp án
119. Đếm số lần xuất hiện của từ (dictionary)
Đọc vào một câu, đếm số lần xuất hiện của mỗi từ, lưu vào dictionary.
Ví dụ:
Input: "con meo con cho con meo"Output: {'con': 3, 'meo': 2, 'cho': 1}Xem đáp án
120. Gộp 2 dictionary
Cho 2 dictionary, gộp chúng thành 1 dictionary mới. Nếu trùng key, lấy giá trị của dictionary thứ 2.
Ví dụ:
Input: a={"x": 1, "y": 2}, b={"y": 3, "z": 4}Output: {'x': 1, 'y': 3, 'z': 4}Xem đáp án
121. Tìm key có giá trị lớn nhất trong dictionary
Cho một dictionary điểm số học sinh, ví dụ {"An": 8, "Binh": 9, "Chi": 7}. Tìm ra học sinh có điểm cao nhất.
Ví dụ:
Input: {"An": 8, "Binh": 9, "Chi": 7}Output: Binh 9Xem đáp án
122. Đảo ngược key-value của dictionary
Cho một dictionary, tạo ra dictionary mới với key và value bị đảo ngược cho nhau.
Ví dụ:
Input: {"a": 1, "b": 2, "c": 3}Output: {1: 'a', 2: 'b', 3: 'c'}Xem đáp án
123. Giao và hợp của 2 set
Cho 2 set số nguyên, tìm giao (phần tử chung) và hợp (tất cả phần tử) của chúng.
Ví dụ:
Input: a={1,2,3,4}, b={3,4,5,6}Output: Giao: {3, 4}, Hợp: {1, 2, 3, 4, 5, 6}Xem đáp án
124. Loại bỏ trùng lặp bằng set
Cho một list có phần tử trùng lặp, dùng set để loại bỏ trùng lặp, sau đó in ra dưới dạng list đã sắp xếp.
Ví dụ:
Input: [3, 1, 2, 3, 4, 1, 5]Output: [1, 2, 3, 4, 5]Xem đáp án
125. Danh bạ điện thoại đơn giản
Tạo một dictionary contacts lưu tên và số điện thoại. Viết chương trình cho phép thêm 1 người mới và in ra toàn bộ danh bạ.
Xem đáp án
126. Kiểm tra 2 tập hợp rời nhau
Cho 2 set, kiểm tra chúng có phần tử chung hay không (rời nhau nghĩa là không có phần tử chung).
Ví dụ:
Input: a={1,2,3}, b={4,5,6}Output: TrueXem đáp án
127. Nhóm học sinh theo xếp loại (dictionary of list)
Cho một dictionary điểm học sinh, nhóm học sinh vào các loại “Giỏi” (>=8), “Khá” (>=6.5), “Trung bình” (còn lại).
Ví dụ:
Input: {"An": 9, "Binh": 7, "Chi": 5, "Dat": 6.8}Output: {'Gioi': ['An'], 'Kha': ['Dat'], 'Trung binh': ['Binh', 'Chi']}Xem đáp án
128. Sắp xếp dictionary theo giá trị tăng dần
Cho dictionary prices chứa tên sản phẩm và giá tiền, sắp xếp dictionary theo giá tăng dần và in kết quả.
Xem đáp án
129. Kiểm tra tuple có phần tử trùng lặp hay không
Viết hàm kiểm tra một tuple có chứa phần tử trùng lặp hay không, thử với hai tuple mẫu.
Xem đáp án
130. Tính hiệu và hiệu đối xứng của hai set
Cho hai set số A và B, tính A - B, B - A và hiệu đối xứng (symmetric difference) giữa chúng.
Xem đáp án
131. Đếm tần suất xuất hiện của từng ký tự trong chuỗi
Cho một chuỗi s, đếm tần suất xuất hiện của từng ký tự (bỏ qua khoảng trắng) và lưu vào dictionary.
Xem đáp án
132. Tạo dictionary từ hai list song song
Cho hai list keys và values cùng độ dài, ghép chúng thành một dictionary và in kết quả.
Xem đáp án
133. Tìm phần tử chung của nhiều list bằng set
Cho ba list số, tìm các phần tử xuất hiện chung trong cả ba list bằng cách sử dụng set.
Xem đáp án
134. Sắp xếp list các tuple theo phần tử thứ hai
Cho list các tuple (tên, điểm), sắp xếp danh sách theo điểm giảm dần.
Xem đáp án
135. Kiểm tra dictionary có phải là tập con của dictionary khác
Viết hàm kiểm tra dictionary A có phải là “tập con” của dictionary B hay không (mọi cặp key-value của A đều tồn tại đúng trong B).
Xem đáp án
Nhóm 7: Hàm (Function)
Phần tiêu đề “Nhóm 7: Hàm (Function)”Xem thêm lý thuyết: Định nghĩa và tạo một hàm, Tham số và Đối số, Giá trị trả về (return).
136. Hàm kiểm tra số nguyên tố
Viết hàm is_prime(n) trả về True/False cho biết n có phải số nguyên tố không.
Xem đáp án
137. Hàm tính giai thừa
Viết hàm factorial(n) trả về giai thừa của n.
Xem đáp án
138. Hàm với tham số mặc định
Viết hàm introduce(name, age=18) in ra câu giới thiệu, nếu không truyền age thì mặc định là 18.
Xem đáp án
*139. Hàm với số lượng tham số bất kỳ (args)
*args cho phép một hàm nhận vào số lượng tham số không giới hạn (xem thêm: *args và **kwargs). Viết hàm total(*num) nhận vào số lượng tham số bất kỳ và trả về tổng của chúng.
Xem đáp án
140. Hàm trả về nhiều giá trị
Viết hàm get_stats(numbers) trả về đồng thời giá trị nhỏ nhất, lớn nhất và trung bình cộng của một list số.
Xem đáp án
141. Hàm lambda
Lambda là cách viết một hàm ngắn gọn trên 1 dòng, không cần đặt tên bằng def (xem thêm: Lambda Function). Dùng lambda để viết một hàm bình phương một số, và một hàm kiểm tra số chẵn.
Xem đáp án
142. Dùng map, filter với lambda
filter(hàm, list) giữ lại các phần tử mà hàm trả về True; map(hàm, list) áp dụng hàm lên từng phần tử và trả về kết quả mới. Cho list số [1, 2, 3, 4, 5, 6]. Dùng filter để lấy các số chẵn, dùng map để bình phương từng số chẵn đó.
Xem đáp án
143. Hàm chuyển đổi nhiệt độ
Viết 2 hàm c_to_f(c) và f_to_c(f) để chuyển đổi qua lại giữa độ C và độ F.
Xem đáp án
144. Hàm kiểm tra chuỗi Palindrome
Viết hàm is_palindrome(s) kiểm tra chuỗi s có phải là palindrome không, bỏ qua khoảng trắng và không phân biệt hoa/thường.
Xem đáp án
145. Hàm đệ quy tính giai thừa
Viết hàm factorial(n) tính giai thừa bằng đệ quy (hàm tự gọi lại chính nó).
Xem đáp án
146. Kiểm tra số hoàn hảo (perfect number)
Viết hàm is_perfect(n) kiểm tra một số có phải là số hoàn hảo hay không (tổng các ước số thực sự bằng chính nó, ví dụ 6 = 1 + 2 + 3).
Xem đáp án
147. Tính đồng thời ƯCLN và BCNN của hai số
Viết hàm gcd_lcm(a, b) trả về đồng thời ƯCLN và BCNN của hai số.
Xem đáp án
148. Hàm với tham số từ khóa tùy ý
Viết hàm in thông tin một người với số lượng thuộc tính tùy ý, sử dụng **kwargs ở Python (các ngôn ngữ khác mô phỏng bằng Map/Dictionary).
Xem đáp án
149. Hàm tính diện tích hình theo tên hình
Viết hàm calc_area(shape, ...) nhận tên hình (hình tròn, hình vuông, hình chữ nhật) cùng các tham số tương ứng và trả về diện tích.
Xem đáp án
150. Hàm đệ quy tính tổng các chữ số
Viết hàm đệ quy sum_digits(n) tính tổng các chữ số của một số nguyên dương.
Xem đáp án
151. Sắp xếp list theo tiêu chí tùy chỉnh
Cho list các cặp (tên, giá), sắp xếp danh sách theo giá tăng dần bằng key function/comparator.
Xem đáp án
152. Kiểm tra dãy số tăng dần chặt
Viết hàm is_strictly_increasing(numbers) kiểm tra một list có phải là dãy tăng dần chặt hay không (mỗi phần tử sau lớn hơn phần tử trước).
Xem đáp án
153. Hàm nhận hàm khác làm tham số
Viết hàm apply_operation(a, b, op) nhận vào 2 số a, b và một hàm op, áp dụng op(a, b) và trả về kết quả. Test với một hàm cộng và một hàm nhân.
Xem đáp án
Nhóm 8: Đệ quy (Recursion)
Phần tiêu đề “Nhóm 8: Đệ quy (Recursion)”Đệ quy là kỹ thuật một hàm tự gọi lại chính nó để giải quyết bài toán nhỏ hơn, cho đến khi gặp điều kiện dừng (base case). Xem thêm lý thuyết: Đệ quy (Recursion).
154. Đệ quy tính tổng 1 đến n
Viết hàm đệ quy tong(n) tính tổng các số từ 1 đến n.
Xem đáp án
155. Đệ quy tính số Fibonacci thứ n
Viết hàm đệ quy fib(n) trả về số Fibonacci thứ n (bắt đầu từ fib(0) = 0, fib(1) = 1).
Xem đáp án
156. Đệ quy đảo ngược chuỗi
Viết hàm đệ quy reverse(s) trả về chuỗi s bị đảo ngược, không dùng s[::-1].
Xem đáp án
157. Đệ quy tính ƯCLN
Viết hàm đệ quy gcd(a, b) tính ước chung lớn nhất của a và b.
Xem đáp án
158. Đệ quy đếm số chữ số
Viết hàm đệ quy count_digits(n) đếm số lượng chữ số của số nguyên dương n.
Xem đáp án
159. Đệ quy tính lũy thừa x^n
Viết hàm đệ quy power(x, n) tính giá trị x mũ n (với n là số nguyên không âm).
Xem đáp án
160. Đệ quy kiểm tra chuỗi Palindrome
Viết hàm đệ quy is_palindrome(s) kiểm tra chuỗi s có phải là chuỗi đối xứng (palindrome) hay không, bằng cách so sánh ký tự đầu và ký tự cuối rồi đệ quy phần giữa.
Xem đáp án
161. Đệ quy tính tổng các phần tử trong list
Viết hàm đệ quy sum_list(numbers) tính tổng các phần tử trong một danh sách số.
Xem đáp án
162. Đệ quy tìm giá trị lớn nhất trong list
Viết hàm đệ quy find_max(numbers) tìm giá trị lớn nhất trong một danh sách số.
Xem đáp án
163. Đệ quy chuyển đổi số nguyên thập phân sang nhị phân
Viết hàm đệ quy to_binary(n) chuyển một số nguyên không âm n sang chuỗi biểu diễn nhị phân của nó.
Xem đáp án
Nhóm 9: File và Exception Handling
Phần tiêu đề “Nhóm 9: File và Exception Handling”Xem thêm lý thuyết: Đọc và Ghi File, Exception Handling (Try/Except).
164. Ghi và đọc file văn bản
Ghi danh sách 3 câu vào file data.txt (mỗi câu 1 dòng), sau đó đọc lại và in ra từng dòng.
Xem đáp án
165. Đếm số dòng, số từ trong file
Cho một file văn bản, đếm số dòng và tổng số từ có trong file đó.
Xem đáp án
166. Xử lý lỗi chia cho 0
Viết chương trình đọc vào 2 số và chia chúng cho nhau, dùng try/except để xử lý trường hợp chia cho 0.
Xem đáp án
167. Xử lý lỗi nhập liệu sai định dạng
Viết chương trình yêu cầu người dùng nhập một số nguyên, dùng try/except để bắt lỗi nếu người dùng nhập chữ thay vì số.
Xem đáp án
168. Tự định nghĩa Exception
Viết một class exception tùy chỉnh NegativeNumberError. Viết hàm check_positive(n) ném ra exception này nếu n âm.
Xem đáp án
169. Đọc nội dung file văn bản và đếm số lần xuất hiện của một từ cụ thể
Viết chương trình ghi ra file một đoạn văn bản mẫu, sau đó đọc lại nội dung file và đếm số lần xuất hiện của một từ khóa cho trước (không phân biệt hoa thường). Dùng try/except để xử lý nếu file không mở được.
Xem đáp án
170. Ghi một danh sách số ra file, mỗi số một dòng
Viết chương trình ghi ra file numbers.txt một danh sách số nguyên, mỗi số trên một dòng, sau đó đọc lại nội dung file và in ra để xác nhận.
Xem đáp án
171. Xử lý lỗi khi mở một file không tồn tại
Viết chương trình thử mở một file không có thật, bắt lỗi phát sinh và in ra thông báo lỗi thân thiện.
Xem đáp án
172. Dùng try/except/else/finally để xử lý đồng thời nhiều loại lỗi khi nhập số
Viết chương trình nhập hai số a, b rồi thực hiện phép chia a / b. Xử lý cả lỗi sai định dạng số lẫn lỗi chia cho 0, dùng đầy đủ try/except/else/finally (hoặc try/catch/finally tương đương): khối else in kết quả nếu không có lỗi, khối finally luôn in ra “Hoan tat”.
Xem đáp án
173. Xử lý lỗi khi truy cập phần tử ngoài phạm vi của list
Viết chương trình hardcode một danh sách và một chỉ số vượt phạm vi, bắt lỗi truy cập ngoài phạm vi (IndexError hoặc tương đương) và in ra thông báo lỗi thân thiện.
Xem đáp án
Nhóm 10: Lập trình hướng đối tượng cơ bản (OOP)
Phần tiêu đề “Nhóm 10: Lập trình hướng đối tượng cơ bản (OOP)”Xem thêm lý thuyết: Class và Object, Kế thừa (Inheritance), Đóng gói (Encapsulation).
174. Class Person (Người)
Định nghĩa class Person với thuộc tính name, age và phương thức introduce() in ra câu giới thiệu bản thân. Tạo một object và gọi phương thức.
Xem đáp án
175. Class Book (Sách)
Định nghĩa class Book với thuộc tính title, author, price và phương thức display_info() in đầy đủ thông tin. Tạo một object mẫu và gọi phương thức.
Xem đáp án
176. Class Rectangle (Hình chữ nhật)
Định nghĩa class Rectangle với thuộc tính width, height và hai phương thức area() (tính diện tích), perimeter() (tính chu vi). Tạo một object và gọi cả hai phương thức.
Xem đáp án
177. Class Student (Sinh viên) xếp loại học lực
Định nghĩa class Student quản lý điểm số các môn (scores) và phương thức classify() xếp loại học lực dựa trên điểm trung bình: >= 8 Giỏi, >= 6.5 Khá, >= 5 Trung bình, còn lại Yếu. Tạo một object mẫu và in ra xếp loại.
Xem đáp án
178. Kế thừa (Inheritance) — Animal, Dog, Cat
Định nghĩa class Animal với phương thức speak(). Viết hai lớp con Dog, Cat kế thừa Animal và ghi đè (override) phương thức speak() để in tiếng kêu riêng. Tạo object Dog, Cat và gọi speak().
Xem đáp án
179. Đóng gói (Encapsulation) — class Account
Định nghĩa class Account với số dư balance là thuộc tính private, có getter get_balance() và phương thức deposit(amount) chỉ cộng tiền vào số dư khi amount dương. Minh họa gọi thử với một giá trị hợp lệ và một giá trị âm.
Xem đáp án
180. Class BankAccount (Tài khoản ngân hàng)
Định nghĩa class BankAccount với phương thức deposit(amount) (nạp tiền), withdraw(amount) (rút tiền, chỉ cho rút khi đủ số dư) và get_balance() (xem số dư). Minh họa nạp tiền, rút tiền hợp lệ, rút tiền vượt quá số dư rồi in số dư cuối cùng.
Xem đáp án
181. Ghi đè phương thức (method overriding) — Shape, Circle, Square
Định nghĩa class Shape với phương thức area() trả về 0 mặc định. Viết hai lớp con Circle (thuộc tính radius) và Square (thuộc tính side) ghi đè area() theo công thức riêng. Tạo một object mỗi loại và in diện tích.
Xem đáp án
182. Class quản lý danh sách sản phẩm
Định nghĩa class ProductManager quản lý danh sách sản phẩm (mỗi sản phẩm có name, price) với các phương thức add_product(name, price) (thêm), remove_product(name) (xóa theo tên) và show_products() (hiển thị danh sách). Minh họa thêm vài sản phẩm, xóa một sản phẩm rồi hiển thị danh sách còn lại.
Xem đáp án
183. So sánh hai đối tượng cùng class — Point
Định nghĩa class Point với thuộc tính x, y. Viết cách kiểm tra hai điểm có trùng tọa độ hay không (toán tử == nếu ngôn ngữ hỗ trợ, hoặc hàm so sánh riêng). Tạo vài object Point, so sánh và in kết quả.
Xem đáp án
Nhóm 11: Ma trận và mảng 2 chiều cơ bản
Phần tiêu đề “Nhóm 11: Ma trận và mảng 2 chiều cơ bản”Xem thêm lý thuyết: Danh sách (List).
184. Nhập và in ma trận 2 chiều
Cho một ma trận (list 2 chiều) kích thước 3x3 được khai báo sẵn, in ra từng dòng của ma trận.
Xem đáp án
185. Tính tổng các phần tử trên đường chéo chính và đường chéo phụ của ma trận vuông
Cho một ma trận vuông 3x3, tính tổng các phần tử trên đường chéo chính (matrix[i][i]) và đường chéo phụ (matrix[i][n-1-i]), sau đó in kết quả.
Xem đáp án
186. Tìm phần tử lớn nhất và nhỏ nhất trong ma trận
Cho một ma trận 2 chiều, duyệt qua tất cả phần tử để tìm giá trị lớn nhất và nhỏ nhất, sau đó in kết quả.
Xem đáp án
187. Tính tổng từng hàng và tổng từng cột của ma trận
Cho một ma trận 2 chiều, tính tổng các phần tử trên từng hàng và từng cột, in kết quả ra màn hình.
Xem đáp án
188. Chuyển vị ma trận (transpose)
Cho một ma trận kích thước 2x3, tạo ma trận chuyển vị (transpose) kích thước 3x2 bằng cách hoán đổi hàng và cột, in kết quả.
Xem đáp án
189. Kiểm tra ma trận vuông có đối xứng hay không
Cho một ma trận vuông, kiểm tra xem nó có đối xứng qua đường chéo chính hay không, tức là matrix[i][j] == matrix[j][i] với mọi i, j.
Xem đáp án
190. Nhân từng phần tử ma trận với một số
Cho một ma trận và một hệ số k, nhân từng phần tử của ma trận với k, in ma trận kết quả.
Xem đáp án
191. Đếm số lượng số chẵn và số lẻ trong ma trận
Cho một ma trận 2 chiều, duyệt qua tất cả các phần tử để đếm số lượng số chẵn và số lẻ, in kết quả.
Xem đáp án
Nhóm 12: Ngày giờ, định dạng và số ngẫu nhiên cơ bản
Phần tiêu đề “Nhóm 12: Ngày giờ, định dạng và số ngẫu nhiên cơ bản”Xem thêm lý thuyết: Xử lý ngày giờ (datetime), Math và Random.
192. Lấy và hiển thị ngày giờ hiện tại của hệ thống
Sử dụng thư viện ngày giờ chuẩn của ngôn ngữ để lấy và in ra ngày giờ hiện tại của hệ thống.
Xem đáp án
193. Tính số ngày giữa hai ngày cho trước
Cho hai ngày cố định 2024-01-01 và 2024-06-15, sử dụng thư viện ngày giờ chuẩn để tính số ngày chênh lệch giữa hai ngày, in kết quả.
Xem đáp án
194. Kiểm tra một bộ ngày/tháng/năm có hợp lệ hay không
Cho vài bộ (ngày, tháng, năm) mẫu, kiểm tra xem tháng có nằm trong khoảng 1-12 và ngày có phù hợp với số ngày tối đa của tháng đó hay không (có xét năm nhuận cho tháng 2), in kết quả hợp lệ hoặc không hợp lệ cho từng bộ.
Xem đáp án
195. Định dạng một số nguyên lớn với dấu phẩy phân cách hàng nghìn
Cho số nguyên 1234567, sử dụng tính năng định dạng số có sẵn của ngôn ngữ để in ra dạng có dấu phẩy phân cách hàng nghìn, ví dụ 1,234,567.
Xem đáp án
196. Làm tròn một số thập phân đến n chữ số sau dấu phẩy
Cho số thực 3.14159 và n = 2, làm tròn số này đến n chữ số sau dấu phẩy, in kết quả.
Xem đáp án
197. Sinh một số nguyên ngẫu nhiên trong khoảng [a, b] cho trước
Cho a = 1 và b = 100, sử dụng thư viện random chuẩn của ngôn ngữ để sinh và in một số nguyên ngẫu nhiên trong khoảng [a, b].
Xem đáp án
198. Lấy ngẫu nhiên một phần tử từ một list cho trước
Cho một list các loại trái cây, sử dụng thư viện random chuẩn để chọn và in ra một phần tử ngẫu nhiên từ list đó.
Xem đáp án
199. Xáo trộn ngẫu nhiên thứ tự các phần tử trong một list
Cho một list số nguyên, sử dụng hàm shuffle chuẩn của ngôn ngữ để xáo trộn ngẫu nhiên thứ tự các phần tử, in list sau khi xáo trộn.
Xem đáp án
200. Tạo một chuỗi mật khẩu ngẫu nhiên gồm chữ và số với độ dài cho trước
Cho độ dài length = 10, sinh ngẫu nhiên các ký tự từ tập chữ cái (hoa và thường) và chữ số để tạo thành một chuỗi mật khẩu, in kết quả.
Xem đáp án
Làm xong 200 bài này rồi? Tiếp tục với các bài khó hơn ở trang Bài tập lập trình - Nâng cao.