Xu Hướng 9/2023 # Bài Tập C++ Có Lời Giải (Code Mẫu) # Top 10 Xem Nhiều | Ictu-hanoi.edu.vn

Xu Hướng 9/2023 # Bài Tập C++ Có Lời Giải (Code Mẫu) # Top 10 Xem Nhiều

Bạn đang xem bài viết Bài Tập C++ Có Lời Giải (Code Mẫu) được cập nhật mới nhất tháng 9 năm 2023 trên website Ictu-hanoi.edu.vn. Hy vọng những thông tin mà chúng tôi đã chia sẻ là hữu ích với bạn. Nếu nội dung hay, ý nghĩa bạn hãy chia sẻ với bạn bè của mình và luôn theo dõi, ủng hộ chúng tôi để cập nhật những thông tin mới nhất.

Bên cạnh các bài tập Python, Java, Quản Trị Mạng cũng tổng hợp cho các bạn một số bài tập C++ cơ bản để luyện tập thêm trong quá trình học ngôn ngữ lập trình C++.

Dần dần sẽ là những bài khó hơn như tạo và quản lý danh sách sinh viên, tài liệu, in hoặc thực hiện các công việc khác theo yêu cầu cùa đề bài. Thậm chí là vẽ cả đồ thị của hàm lượng giác.

Bài tập C++ số 1 Câu 1: Mô phỏng phép nhân tay

Lập trình in ra màn hình mô phỏng phép nhân tay 2 số nguyên dương có 3 chữ số nhập từ bàn phím. Ví dụ với 2 số nhập vào là 763 và 589 thì phải in ra màn hình như sau:

Code mẫu:

Câu 2: Nhập số tiền, in số tờ, mệnh giá

Một người cần rút một số tiền T từ ngân hàng và muốn tổng số tờ ít nhất. Cho biết có các loại tiền mệnh giá 100, 20, 5 và 1. Nhập từ bàn phím số tiền T và in ra số tờ mỗi loại mệnh giá và tổng số tờ nhận được.

Code mẫu:

Câu 3: Đổi số sang số La Mã

Hãy lập trình nhập 1 số nguyên dương nhỏ hơn 1000 và đổi sang số La mã tương ứng, in kết quả ra màn hình.

Code mẫu:

Câu 4: In cách đọc số

In ra màn hình cách đọc một số nguyên dương nhỏ hơn 1000000. Ví dụ số 726503 đọc là: bảy mươi hai vạn sáu ngàn năm trăm linh ba.

Code mẫu:

Câu 5: Giải phương trình bậc hai

Lập trình giải phương trình ax 2 + bx + c = 0, các hệ số thực a, b, c nhập từ bàn phím.

Code mẫu:

Bài tập C++ số 2 Câu 1: Kiểm tra 3 số có phải cạnh tam giác không, nếu có là loại tam giác nào, tính chu vi, diện tích

Nhập 3 số thực a, b, c và kiểm tra 3 số đó có phải là 3 cạnh của 1 tam giác không? Nếu là 3 cạnh tam giác thì cho biết là tam giác nào trong các loại tam giác sau: đều, vuông cân, vuông, cân, thường và tính chu vi, diện tích của tam giác đó. In kết quả ra màn hình.

Code mẫu:

Câu 2: Tính số năm cần gửi tiết kiệm

Một người cần có một số tiền T, tích lũy bằng cách gửi tiết kiệm số tiền ban đầu là S với lãi suất có kỳ hạn theo năm là P% theo phương thức lũy tiến (lãi của mỗi năm được cộng vào với tiền gốc). Hãy nhập vào các số thực T, S, P và xác định số năm cần gửi tiết kiệm.

Code mẫu:

Câu 3: In số PI tính được với sai số cho trước

Lập trình tính số PI với sai số eps cho trước nhập từ bàn phím. Biết rằng số PI tính theo công thức: PI = 4 – 4/3 + 4/5 – 4/7 +… tính tổng các số hạng có giá trị không nhỏ hơn eps. In ra số PI tính được và số PI của Turbo C++ với 10 chữ số thập phân để so sánh.

Code mẫu:

Câu 4: Tìm và in số hoàn hảo

Tìm và in ra màn hình tất cả các số hoàn hảo không vượt quá số n cho trước nhập từ bàn phím. Số hoàn hảo là số bằng tổng các ước số của nó không kể ước số là chính số đó. Ví dụ số 6 là số hoàn hảo vì 6=1+2+3.

Code mẫu:

Câu 5: Tìm và in các số nguyên tố nhỏ hơn n

Tìm và in ra màn hình tất cả các số nguyên tố không vượt quá số n cho trước nhập từ bàn phím. Số nguyên tố là số chỉ có ước số là 1 và chính số đó.

Code mẫu:

Bài tập C++ số 3 Câu 1: Kiểm tra số chính phương

Viết 1 hàm kiểm tra 1 số có là chính phương hay không (số chính phương là số bằng bình phương của một số nguyên nào đó); một hàm kiểm tra 1 số có phải là số Pitago hay không (số Pitago là số chính phương và bằng tổng 2 số chính phương khác). Trong hàm main nhập số nguyên dương và sử dụng các hàm trên kiểm tra có là số chính phương? số Pitago?

Code mẫu:

Câu 2: Giải bất phương trình bậc nhất

Code mẫu:

Câu 3: Viết hàm đệ quy tìm ước chung lớn nhất

Viết hàm đệ quy tìm ước số chung lớn nhất của 2 số tự nhiên; một hàm tìm bội số chung nhỏ nhất của 2 số tự nhiên. Hàm main sử dụng các hàm đã viết và có thể chạy nhiều lần để tìm ước số chung lớn nhất và bội số chung nhỏ nhất của các cặp số nguyên dương khác nhau. Yêu cầu kiểm tra dữ liệu nhập vào phải là các số nguyên dương.

Code mẫu:

Câu 4: Tính giai thừa cách của số nguyên dương n

Viết hàm đệ quy tính giai thừa cách của số nguyên dương n. Hàm main sử dụng hàm này và có thể chạy nhiều lần để tính cho nhiều số n khác nhau nhập từ bàn phím. Yêu cầu kiểm tra dữ liệu nhập vào phải là số nguyên dương. Công thức tính giai thừa cách của n: n!=1.3…n nếu n lẻ và n!=2.4…n nếu n chẵn.

Code mẫu:

Câu 5: Viết hàm đệ quy giải bài toán tháp Hà Nội

Viết hàm đệ quy giải bài toán tháp Hà Nội: Cần chuyển n tầng tháp từ vị trí A sang vị trí B dùng vị trí C làm trung gian. Yêu cầu: Mỗi lần chỉ chuyển 1 tầng, chỉ được dùng các vị trí A, B, C để đặt các tầng tháp, không được đặt tầng lớn lên trên tầng nhỏ. Hàm main sử dụng hàm này và có thể chạy nhiều lần để tính cho nhiều số n khác nhau nhập từ bàn phím.

Code mẫu:

Bài tập C++ số 4 Câu 1: In các phần tử của mảng theo yêu cầu

Nhập mảng n số thực, tìm và in ra phần tử nhỏ nhất, lớn nhất, tính và in ra trung bình cộng của các phần tử trong mảng. In ra các phần tử nhỏ hơn, lớn hơn trung bình cộng.

Code mẫu:

Câu 2: Nhập, sắp xếp, in mảng

Viết một hàm nhập mảng, một hàm sắp xếp mảng, một hàm in các phần tử của mảng ra màn hình. Hàm main sử dụng các hàm này để nhập mảng n phần tử, in ra mảng trước và sau khi sắp xếp.

Code mẫu:

Câu 3: Nhập, in mảng, đếm đoạn theo các tiêu chí

Viết một hàm nhập mảng, một hàm in các phần tử của mảng ra màn hình, một hàm đếm số các đoạn tăng, một hàm tìm đoạn tăng dài nhất trong mảng. Hàm main sử dụng các hàm này để nhập mảng n phần tử, in mảng, in số đoạn tăng và đoạn tăng dài nhất trong mảng.

Code mẫu:

Câu 4: Nhập, in, tính tích 2 ma trận

Viết một hàm nhập các phần tử của ma trận 2 chiều, một hàm in ma trận theo hàng cột, một hàm nhân 2 ma trận. Hàm main sử dụng các hàm này để nhập ma trận A kích thước MxN và ma trận B kích thước NxP. In ra ma trận A, B và ma trận C là tích 2 ma trận A và B.

Code mẫu:

Câu 5: Nhập, in ma trận vuông, tính định thức

Viết một hàm nhập các phần tử của ma trận vuông cấp n, một hàm in ma trận theo cấu trúc hàng cột, một hàm tính định thức ma trận cấp n. Hàm main sử dụng các hàm này để nhập ma trận vuông cấp n, in ra ma trận, tính và in ra định thức của ma trận đó.

Code mẫu:

Bài tập C++ số 5 Câu 1: Kiểm tra tính đối xứng của một xâu

Viết hàm kiểm tra tính đối xứng của 1 xâu ký tự. Trong hàm main nhập xâu ký tự từ bàn phím và cho biết xâu đó có đối xứng không. Yêu cầu chương trình chạy nhiều lần.

Code mẫu:

Câu 2: Thống kê số lần xuất hiện một ký tự trong xâu

Viết hàm thống kê tần số xuất hiện mỗi ký tự trong một xâu ký tự. Hàm main nhập xâu ký tự từ bàn phím và in ra tần số của mỗi ký tự. Yêu cầu chương trình chạy nhiều lần.

Code mẫu:

Câu 3: Chuẩn hóa xâu ký tự

Viết một hàm chuẩn hóa xâu ký tự: biến đổi xâu ký tự thành xâu sao cho trong xâu không có 2 dấu cách liền nhau, một hàm tìm số từ của 1 xâu ký tự, một hàm tìm từ dài nhất trong 1 xâu ký tự. Hàm main sử dụng các hàm này để nhập xâu ký tự từ bàn phím, in ra xâu trước và sau khi chuẩn hóa, số từ trong xâu và 1 từ dài nhất trong xâu đó.

Code mẫu:

Câu 4: Nhập mảng xâu ký tự và sắp xếp tăng dần

Viết 1 hàm nhập mảng xâu ký tự, 1 hàm sắp xếp mảng tăng dần. Hàm main sử dụng các hàm này nhập danh sách tên sinh viên và in ra danh sách theo thứ tự ABC của tên.

Code mẫu:

Bài tập C++ số 6 Câu 1: Quản lý điểm số thí sinh bằng mảng

Code mẫu:

Câu 2: Quản lý tài liệu, in danh sách theo yêu cầu

Tạo danh sách liên kết chứa các tài liệu ngành công nghệ thông tin, mỗi tài liệu gồm: mã, tên tài liệu, số trang, năm xuất bản. Hãy in ra danh sách tất cả tài liệu và danh sách những tài liệu xuất bản từ năm 1998, yêu cầu in theo các cột, có kèm cột số thứ tự.

Code mẫu:

Câu 3: Quản lý thanh toán tiền điện

Code mẫu:

Bài tập C++ số 7 Câu 1: Tạo tệp số, đếm số, số lớn nhất, số nhỏ nhất

Tạo tệp chứa các số nguyên đọc từ bàn phím. Sau đó đọc từ tệp đã tạo để thống kê và in ra kết quả: số lượng các số trong tệp, số lượng các số dương, số lớn nhất, số nhỏ nhất.

Code mẫu:

Câu 2: Tạo tệp tên sinh viên, sắp xếp và in

Tạo tệp văn bản chứa danh sách họ tên sinh viên nhập từ bàn phím. Sau đó đọc từ tệp đã tạo vào 1 mảng; sắp xếp mảng tăng dần và in ra danh sách sinh viên đã sắp xếp kèm theo cột số thứ tự.

Code mẫu:

Câu 3: Tạo tệp danh sách hồ sơ sinh viên theo yêu cầu

Tạo tệp chứa danh sách hồ sơ sinh viên gồm mã số, họ tên, điểm trung bình. Sau đó đọc từ tệp đã tạo vào 1 mảng; sắp xếp mảng giảm dần theo điểm trung bình và in ra danh sách sinh viên theo các cột, có kèm theo cột chỉ số thứ tự.

Bài tập C++ số 8 Câu 1: Vẽ lá cờ đỏ sao vàng tại vị trí trung tâm màn hình.

Code mẫu:

Câu 2: Vẽ mô phỏng tháp phát sóng ăng-ten.

Code mẫu:

Câu 3: Vẽ bầu trời sao trên màn hình.

Code mẫu:

Câu 4: Vẽ đồ thị hàm số y=sinx.

Code mẫu:

Câu 5: Vẽ quả bóng chuyển động trong khung chữ nhật.

Code mẫu:

Bài tập C++ số 9 Câu 1: Tạo lớp vec-tơ theo yêu cầu

Tạo lớp vec-tơ có các thuộc tính kích thước và mảng chứa các thành phần của vecto; các phương thức: nhập, xuất, cộng 2 vecto. Hàm main sử dụng lớp vec-tơ để thực hiện nhập, xuất và tính tổng 2 vecto.

Code mẫu:

Câu 2: Tạo lớp phân số theo yêu cầu

Tạo lớp phân số có các thuộc tính là tử và mẫu số; các phương thức: nhập, hiện, rút gọn, quy đồng mẫu số 2 phân số, cộng 2 phân số. Hàm main sử dụng lớp và thực hiện các phương thức này.

Code mẫu:

Câu 3: Tạo lớp hàng hóa theo yêu cầu

Tạo lớp hàng hóa có các thuộc tính là mã hàng, tên hàng, đơn vị tính, đơn giá, số lượng, thành tiền; các phương thức: nhập, tính thành tiền. Tạo lớp hàng hóa mới kế thừa lớp hàng hóa, thêm các thuộc tính: đơn giá vận chuyển và công vận chuyển tính bằng đơn giá vận chuyển nhân với số lượng; các phương thức: tính công vận chuyển, nhập và tính thành tiền. Hàm main sử dụng các lớp này và thực hiện các phương thức.

Code mẫu:

Câu 4: Viết hàm nhập, xuất, sắp xếp mảng

Sử dụng khuôn mẫu viết các hàm nhập, xuất, sắp xếp mảng. Hàm main sử dụng các hàm khuôn mẫu này để nhập mảng n phần tử, in ra mảng trước và sau khi sắp xếp cho hai trường hợp: mảng số nguyên và mảng số thực.

Bài Tập Java Cơ Bản, Có Lời Giải Code Mẫu

Để phục vụ nhu cầu học Java của các bạn, Quản Trị Mạng đã tổng hợp lại một số bài tập Java từ nhiều nguồn, có kèm theo code mẫu (cho một số bài). Hy vọng có thể giúp ích cho quá trình học tập ngôn ngữ lập trình Java của các bạn.

Bài tập Java cơ bản có giải

Bài 2. Viết chương trình chuyển đổi một số tự nhiên ở hệ cơ số 10 thành số ở hệ cơ số b bất kì (1< b≤ 36). Xem giải Bài 2

Bài 8. Một số được gọi là số thuận nghịch độc nếu ta đọc từ trái sang phải hay từ phải sang trái số đó ta vẫn nhận được một số giống nhau. Hãy liệt kê tất cả các số thuận nghịch độc có sáu chữ số (Ví dụ số: 558855). Xem giải Bài 8

Bài 9. Viết chương trình liệt kê tất cả các xâu nhị phân độ dài n. Xem giải Bài 9

Bài 10. Viết chương trình liệt kê tất cả các tập con k phần tử của 1, 2, ..,n (k≤n). Xem giải Bài 10

Bài 11. Viết chương trình liệt kê tất cả các hoán vị của 1, 2, .., n. Xem giải Bài 11

Xem giải Bài 12

Bài 13. Nhập số liệu cho 2 dãy số thực a 0, a 1 ,…, a m-1 và b 0 , b 1 ,…, b n-1. Giả sử cả 2 dãy này đã được sắp theo thứ tự tăng dần. Hãy tận dụng tính sắp xếp của 2 dãy và tạo dãy c 0 , c 1 ,…, c m+n-1 là hợp của 2 dãy trên, sao cho dãy c i cũng có thứ tự tăng dần. Xem giải Bài 13

Bài 14. Nhập số liệu cho dãy số thực a 0, a 1,…, a n-1. Hãy liệt kê các phần tử xuất hiện trong dãy đúng một lần. Xem giải Bài 14

Bài 15. Nhập số liệu cho dãy số thực a 0, a 1,…, a n-1. Hãy liệt kê các phần tử xuất hiện trong dãy đúng 2 lần. Xem giải Bài 15

Bài 16. Nhập số liệu cho dãy số thực a 0, a 1,…, a n-1. In ra màn hình số lần xuất hiện của các phần tử. Xem giải Bài 16

Bài 17. Nhập số n và dãy các số thực a 0, a 1,…, a n-1. Không đổi chỗ các phần tử và không dùng thêm mảng số thực nào khác (có thể dùng mảng số nguyên nếu cần) hãy cho hiện trên màn hình dãy trên theo thứ tự tăng dần. Xem giải Bài 17

Bài 18. Nhập một xâu ký tự. Đếm số từ của xâu ký tự đó. Thí dụ ” Trường học ” có 2 từ. Xem giải Bài 18

Bài 19. Viết chương trình liệt kê tất cả các số nguyên tố có 5 chữ số sao cho tổng của các chữ số trong mỗi số nguyên tố đều bằng S cho trước. Xem giải Bài 19

Bài 20. Nhập một số tự nhiên n. Hãy liệt kê các số Fibonaci nhỏ hơn n là số nguyên tố. Xem giải Bài 20

Bài 21. Viết chương trình nhập một số nguyên dương n và thực hiện các chức năng sau:

Tính tổng các chữ số của

Phân tích n thành các thừa số nguyêntố.

Xem giải Bài 21

Bài 22. Viết chương trình nhập một số nguyên dương n và thực hiện các chức năng sau:

Liệt kê các ước số của n. Có bao nhiêu ước số.

Liệt kê các ước số là nguyên tố của

Xem giải Bài 22

Bài 23. Viết chương trình nhập một số nguyên dương n và thực hiện các chức năng sau:

Liệt kê n số nguyên tố đầu tiên.

Liệt kê n số Fibonaci đầu tiên.

Xem giải Bài 23

Bài 24. Viết chương trình nhập vào vào ma trận A có n dòng, m cột, các phần tử là những số nguyên lớn hơn 0 và nhỏ hơn 100 được nhập vào từ bàn phím. Thực hiện các chức năng sau:

Xem giải Bài 24

Bài 25. Viết chương trình liệt kê các số nguyên có từ 5 đến 7 chữ số thoả mãn:

Xem giải bài 25

Bài 26. Viết chương trình liệt kê các số nguyên có 7 chữ số thoả mãn:

Xem giải bài 26

Bài 27. Viết chương trình nhập vào vào mảng A có n phần tử, các phần tử là những số nguyên lớn hơn 0 và nhỏ hơn 100 được nhập vào từ bàn phím. Thực hiện các chức năng sau:

Xem giải bài 27

Bài 28. Viết chương trình nhập vào vào ma trận A có n dòng, m cột, các phần tử là những số nguyên lớn hơn 0 và nhỏ hơn 100 được nhập vào từ bàn phím. Thực hiện các chức năng sau:

Xem giải bài 28

Bài 29. Viết chương trình nhập các hệ số của đa thức P bậc n (0<n<20). Thực hiện các chức năng sau:

Xem giải bài 29

Bài 30. Viết chương trình nhập vào vào mảng A có n phần tử, các phần tử là những số nguyên lớn hơn 0 và nhỏ hơn 100 được nhập vào từ bàn phím. Thực hiện các chức năng sau:

Bài 31. Viết chương trình thực hiện chuẩn hoá một xâu ký tự nhập từ bàn phím (loại bỏ các dấu cách thừa, chuyển ký tự đầu mỗi từ thành chữ hoa, các ký tự khác thành chữ thường)

Xem giải bài 31

Bài 32. Viết chương trình thực hiện nhập một xâu ký tự và tìm từ dài nhất trong xâu đó. Từ đó xuất hiện ở vị trí nào? (Chú ý. nếu có nhiều từ có độ dài giống nhau thì chọn từ đầu tiên tìm thấy).

Xem giải bài 32

Bài 33.Viết chương trình thực hiện nhập một xâu họ tên theo cấu trúc: họ…đệm…tên; chuyển xâu đó sang biểu diễn theo cấu trúc tên…họ…đệm. Xem giải Bài 33

Bài tập Java cơ bản không giải

Bài 34. Viết chương trình liệt kê tất cả các phần tử của tập:

Bài 35. Viết chương trình liệt kê tất cả các phần tử của tập

Bài 36. Viết chương trình liệt kê tất cả các phần tử của tập

Bài 37. Cho hai tập hợp A gồm n phần tử, B gồm m phần tử (n,m≤255), mỗi phần tử của nó là một xâu kí tự.Ví dụ A = {“Lan”, “Hằng”, “Minh”, “Thủy”}, B = {“Nghĩa”, “Trung”, “Minh”, “Thủy”, “Đức”}. Hãy viết chương trình thực hiện những thao tác sau:

Tạo lập dữ liệu cho A và B (từ file hoặc từ bànphím)

Tìm

Tìm

Tìm

Bài 38. Cho hai đa thức

Tạo lập hai đa thức (nhập hệ số cho đa thức từ bàn phím hoặc file)

Tính

Tìm đạo hàm cấp l ≤n của đa thức.

Tìm

Tìm

Tìm

Bài 39. Cho hai ma trận vuông A cấp n. Hãy viết chương trình thực hiện các thao tác sau:

Tìm hàng, cột hoặc đường chéo có tổng các phần tử lớn nhất.

Tìm ma trận chuyển vị của A

Tìm định thức của A

Tìm ma trận nghịch đảo của A

Giải hệ Phương trình tuyến tính thuần nhất n ẩn AX = B bằng phương pháp Gauss

Bài 40. Cho một buffer kí tự gồm n dòng. Hãy viết chương trình thực hiện các thao tác sau:

Tạo lập n dòng văn bản cho buffer.

Đếm số từ trong Buffer.

Tìm tần xuất xuất hiện từ X bất kì trong buffer.

Mã hóa buffer bằng kĩ thuật Parity Bits

Giải mã buffer được mã hóa bằng kĩ thuật parity.

Thay thế từ X bằng từ Y

1. Liệt kê các phần tử của tập

Trong đó b là các số nguyên dương,

2. Liệt kê các phần tử của tập:

trong đó b là các số nguyên dương,

Tính giá trị nhỏ nhất của hàm mục tiêu

Trong đó

4. Tính giá trị nhỏ nhất của hàm mục tiêu

Bài 42. Ma trận nhị phân là ma trận mà các phần tử của nó hoặc bằng 0 hoặc bằng 1. Cho A = [a ij], B = [b ij] là các ma trận nhị phân cấp m × n (i =1, 2,..,m. j= 1, 2, ..,n). Ta định nghĩa các phép hợp, giao, nhân logic và phép lũy thừa cho A và B như sau:

Hợp của A và B, được kí hiệu là A ∨ B là ma trận nhị phân cấp m×n với phần tử ở vị trí (i, j) là aij ∨ bij.

Giao của A và B, được kí hiệu là A ∧ B là ma trận nhị phân cấp m×n với phần tử ở vị trí (i,j) làaij ∧ bij.

Tích boolean của A và B, được kí hiệu là ij = (ai1Ùb1j) Ú (ai2 ∨ b2j) ∨…∨ ( (aik ∨ bkj).

Nếu A là một ma trận vuông nhị phân cấp n và r là một số nguyên dương. Lũy thừa Boolean bậc r của A được kí hiệu là

Hãy viết chương trình thực hiện các thao tác sau:

Cho A = [aij], B = [bij]. Tìm C =A ∨ B

Cho A = [aij], B = [bij]. Tìm C =A ∧ B

Cho A = [aik], B = [bkj]. Tìm C =

Cho A = [aij] tìm Ar.

Lời giải bài tập Java

Bài 1: Bài 02: Bài 03: Bài 04: Bài 05:

Bài 06:

Bài 07:

Bài 08:

package bai08; public class Main { public static boolean testSoThuanNghich(int n){ StringBuilder xau= new StringBuilder(); String str= ""+n; xau.append(str); String check= ""+xau.reverse(); if(str.equals(check)) return true; else return false; } public static void main(String[] args) { int n,count=0; for(n=100000 ; n<= 999999 ; n++){ if(testSoThuanNghich(n)){ System.out.println(n);count++; } } System.out.println("Co "+count+" so thuan nghich co 6 chu so"); }}

Bài 09:

Bài 10:

Bài 11:

Bài 12:

Bài 13:

Bài 14:

Bài 15:

Bài 16:

Bài 17:

Bài 18:

package bai18; import java.util.*; public class Main { public static void main(String[] args) { Scanner input= new Scanner(System.in); System.out.println("Nhap vao 1 xau: "); String str= input.nextLine(); StringTokenizer strToken= new StringTokenizer(str, " "); System.out.println("So cac tu trong xau la: "+strToken.countTokens()); } }

Bài 23: Bài 24: Bài 25: Bài 26: Bài 27: Bài 28: Bài 29: Bài 31:

import java.util.*; public class Bai31 { public static String chuyenInHoa(String str){ String s,strOutput; s= str.substring(0, 1); strOutput= str.replaceFirst(s,s.toUpperCase()); return (strOutput); } public static String chuanHoa(String strInput){ String strOutput=""; StringTokenizer strToken= new StringTokenizer(strInput," ,t,r"); strOutput+=""+chuyenInHoa(strToken.nextToken()); while(strToken.hasMoreTokens()){ strOutput+=" "+chuyenInHoa(strToken.nextToken()); } return(strOutput); } public static void main(String[] args) {

Bài 32:

import java.util.*; public class Bai32 { public static void timXauMax(String strInput){ StringTokenizer strToken= new StringTokenizer(strInput," ,t,r"); int Max,i=1,lengthStr; Max= strToken.nextToken().length(); int viTriMax= i; while(strToken.hasMoreTokens()){ lengthStr= strToken.nextToken().length(); i++; if(Max < lengthStr){ Max= lengthStr; viTriMax= i; } } System.out.println("Do dai xau lon nhat la: "+Max+" o vi tri "+viTriMax); } public static void main(String[] args) {

Bài 33:

import java.util.*;public class Bai33 { public static String doiViTri(String strInput){ String str= Bai31.chuanHoa(strInput); StringTokenizer strToken= new StringTokenizer(str," "); String ho = strToken.nextToken(); String hoDem = strToken.nextToken(); String ten = strToken.nextToken(); String strOutput= ten+" "+ho+" "+hoDem; return(strOutput); } public static void main(String[] args) {

Nguồn: An Nguyễn (toptailieu)

Hơn 100 Bài Tập Python Có Lời Giải (Code Mẫu)

Lưu ý: Các code mẫu trong bài được viết trên Python 3.6.2, nếu bạn đang sử dụng phiên bản Python từ 2.5 trở xuống có thể không chạy được code vì trong bản Python mới nhiều lệnh, hàm đã được thay đổi.

1. Mô tả cấp độ Python

Level 1: Người vừa trải qua khóa học tổng quan về Python, có thể giải quyết một số vấn đề với 1, 2 class hoặc hàm Python. Những bài tập thuộc cấp độ này có thể tìm thấy trong các sách giáo khoa, tài liệu hướng dẫn thông thường.

Level 3: Nâng cao, sử dụng Python để giải quyết những vấn đề phức tạp hơn bằng cách sử dụng nhiều hàm, cấu trúc dữ liệu và thuật toán phong phú. Ở cấp độ này bạn có thể giải quyết các vấn đề sử dụng vài package Python tiêu chuẩn và những kỹ thuật lập trình nâng cao.

2. Cấu trúc bài tập Python

Mỗi bài tập Python trong trang này sẽ gồm có 3 phần như sau:

Bài 01:

Viết chương trình tìm tất cả các số chia hết cho 7 nhưng không phải bội số của 5, nằm trong đoạn 2000 và 3200 (tính cả 2000 và 3200). Các số thu được sẽ được in thành chuỗi trên một dòng, cách nhau bằng dấu phẩy.

j=[] for i in range(2000, 3201): if (i%7==0) and (i%5!=0): j.append(str(i)) print (','.join(j))

Bài 02:

Viết một chương trình có thể tính giai thừa của một số cho trước. Kết quả được in thành chuỗi trên một dòng, phân tách bởi dấu phẩy. Ví dụ, số cho trước là 8 thì kết quả đầu ra phải là 40320.

Trong trường hợp dữ liệu đầu vào được cung cấp, bạn hãy chọn cách để người dùng nhập số vào.

x=int(input("Nhập số cần tính giai thừa:")) def fact(x): if x == 0: return 1 return x * fact(x - 1) print (fact(x))

Bài 03:

Với số nguyên n nhất định, hãy viết chương trình để tạo ra một dictionary chứa (i, i*i) như là số nguyên từ 1 đến n (bao gồm cả 1 và n) sau đó in ra dictionary này. Ví dụ: Giả sử số n là 8 thì đầu ra sẽ là: {1: 1, 2: 4, 3: 9, 4: 16, 5: 25, 6: 36, 7: 49, 8: 64}.

Viết lệnh yêu cầu nhập số nguyên n.

n=int(input("Nhập vào một số:")) d=dict() for i in range(1,n+1): d[i]=i*i #Code by chúng tôi print (d)

Bài 04:

Viết chương trình chấp nhận một chuỗi số, phân tách bằng dấu phẩy từ giao diện điều khiển, tạo ra một danh sách và một tuple chứa mọi số.

Ví dụ: Đầu vào được cung cấp là 34,67,55,33,12,98 thì đầu ra là:

[’34’, ’67’, ’55’, ’33’, ’12’, ’98’](’34’, ’67’, ’55’, ’33’, ’12’, ’98’)

Viết lệnh yêu cầu nhập vào các giá trị sau đó dùng quy tắc chuyển đổi kiểu dữ liệu để hoàn tất.

values=input("Nhập vào các giá trị:") l=values.split(",") t=tuple(l) print (l) print (t)

Bài 05:

Định nghĩa một class có ít nhất 2 method:

getString: để nhận một chuỗi do người dùng nhập vào từ giao diện điều khiển.

printString: in chuỗi vừa nhập sang chữ hoa.

Thêm vào các hàm hiểm tra đơn giản để kiểm tra method của class.

Ví dụ: Chuỗi nhập vào là chúng tôi thì đầu ra phải là: QUANTRIMANG.COM

Sử dụng __init__ để xây dựng các tham số.

class InputOutString(object): def __init__(self): self.s = "" def getString(self): self.s = input("Nhập chuỗi:") # Code by chúng tôi def printString(self): print (self.s.upper()) strObj = InputOutString() strObj.getString() strObj.printString()

Bài 06:

Viết một method tính giá trị bình phương của một số.

x=int(input("Nhập một số:")) #nhập số cần tính bình phương từ giao diện def square(num): #định nghĩa bình phương của một số return num ** 2 # Code by chúng tôi print (square(2)) #in bình phương của 2 print (square(3)) #in bình phương của 3 print (square(x)) #in bình phương của x

Vì đề bài không yêu cầu cụ thể bạn phải tính bình phương số có sẵn hay số nhập vào nên mình dùng cả hai.

Bài 07:

Python có nhiều hàm được tích hợp sẵn, nếu không biết cách sử dụng nó, bạn có thể đọc tài liệu trực tuyến hoặc tìm vài cuốn sách. Nhưng Python cũng có sẵn tài liệu về hàm cho mọi hàm tích hợp trong Python. Yêu cầu của bài tập này là viết một chương trình để in tài liệu về một số hàm Python được tích hợp sẵn như abs(), int(), input() và thêm tài liệu cho hàm bạn tự định nghĩa.

print (abs.__doc__) print (int.__doc__) print (input.__doc__) # Code by chúng tôi def square(num): '''Trả lại giá trị bình phương của số được nhập vào. Số nhập vào phải là số nguyên. ''' return num ** 2 print (square.__doc__)

Bài 08:

Định nghĩa một lớp gồm có tham số lớp và có cùng tham số instance

Khi định nghĩa tham số instance, cần thêm nó vào __init__

Bạn có thể khởi tạo một đối tượng với tham số bắt đầu hoặc thiết lập giá trị sau đó.

class Person: # Định nghĩa lớp "name" name = "Person" # Code by chúng tôi def __init__(self, name = None): # chúng tôi là biến instance chúng tôi = name jeffrey = Person("Jeffrey") print ("%s name is %s" % (Person.name, jeffrey.name)) nico = Person() chúng tôi = "Nico" print ("%s name is %s" % (Person.name, nico.name)) 4. Bài tập Python level 2

Bài 09:

Viết chương trình và in giá trị theo công thức cho trước: Q = √([(2 * C * D)/H]) (bằng chữ: Q bằng căn bậc hai của [(2 nhân C nhân D) chia H]. Với giá trị cố định của C là 50, H là 30. D là dãy giá trị tùy biến, được nhập vào từ giao diện người dùng, các giá trị của D được phân cách bằng dấu phẩy.

Ví dụ: Giả sử chuỗi giá trị của D nhập vào là 100,150,180 thì đầu ra sẽ là 18,22,24.

Nếu đầu ra nhận được là một số dạng thập phân, bạn cần làm tròn thành giá trị gần nhất, ví dụ 26.0 sẽ được in là 26.

Trong trường hợp dữ liệu đầu vào được cung cấp cho câu hỏi, nó được giả định là đầu vào do người dùng nhập từ giao diện điều khiển.

#!/usr/bin/env python import math c=50 h=30 value = [] items=[x for x in input("Nhập giá trị của d: ").split(',')] for d in items: value.append(str(int(round(math.sqrt(2*c*float(d)/h))))) # Code by chúng tôi print (','.join(value))

Bài 10:

Viết một chương trình có 2 chữ số, X, Y nhận giá trị từ đầu vào và tạo ra một mảng 2 chiều. Giá trị phần tử trong hàng thứ i và cột thứ j của mảng phải là i*j.

Lưu ý: i=0,1,…,X-1; j=0,1,…,Y-1.

Ví dụ: Giá trị X, Y nhập vào là 3,5 thì đầu ra là: [[0, 0, 0, 0, 0], [0, 1, 2, 3, 4], [0, 2, 4, 6, 8]]

Viết lệnh để nhận giá trị X, Y từ giao diện điều khiển do người dùng nhập vào.

input_str = input("Nhập X, Y: ") dimensions=[int(x) for x in input_str.split(',')] rowNum=dimensions[0] colNum=dimensions[1] multilist = [[0 for col in range(colNum)] for row in range(rowNum)] # Viết bởi chúng tôi for row in range(rowNum): for col in range(colNum): multilist[row][col]= row*col print (multilist)

Bài 11:

Viết một chương trình chấp nhận chuỗi từ do người dùng nhập vào, phân tách nhau bởi dấu phẩy và in những từ đó thành chuỗi theo thứ tự bảng chữ cái, phân tách nhau bằng dấu phẩy.

Giả sử đầu vào được nhập là: without,hello,bag,world, thì đầu ra sẽ là: bag,hello,without,world.

Trong trường hợp dữ liệu đầu vào được nhập vào chương trình nó nên được giả định là dữ liệu được người dùng nhập vào từ giao diện điều khiển.

items=[x for x in input("Nhập một chuỗi: ").split(',')] items.sort() print (','.join(items))

Bài 12:

Viết một chương trình chấp nhận chuỗi là các dòng được nhập vào, chuyển các dòng này thành chữ in hoa và in ra màn hình. Giả sử đầu vào là:

Hello worldHELLO WORLDPRACTICE MAKES PERFECT Bài 13: Practice makes perfect

Thì đầu ra sẽ là:

Trong trường hợp dữ liệu đầu vào được nhập vào chương trình nó nên được giả định là dữ liệu được người dùng nhập vào từ giao diện điều khiển.

lines = [] while True: s = input() if s: lines.append(s.upper()) else: break; # Bài Python 12, Code by chúng tôi for sentence in lines: print (sentence)

Viết một chương trình chấp nhận đầu vào là một chuỗi các từ tách biệt bởi khoảng trắng, loại bỏ các từ trùng lặp, sắp xếp theo thứ tự bảng chữ cái, rồi in chúng.

Bài 14:

Giả sử đầu vào là: hello world and practice makes perfect and hello world again

Thì đầu ra là: again and hello makes perfect practice world

Trong trường hợp dữ liệu đầu vào được nhập vào chương trình nó nên được giả định là dữ liệu được người dùng nhập vào từ giao diện điều khiển.

Sử dụng set để loại bỏ dữ liệu trùng lặp tự động và dùng sorted() để sắp xếp dữ liệu.

s = input("Nhập chuỗi của bạn: ") words = [word for word in s.split(" ")] print (" ".join(sorted(list(set(words)))))

Viết một chương trình chấp nhận đầu vào là chuỗi các số nhị phân 4 chữ số, phân tách bởi dấu phẩy, kiểm tra xem chúng có chia hết cho 5 không. Sau đó in các số chia hết cho 5 thành dãy phân tách bởi dấu phẩy.

Bài 15:

Ví dụ đầu vào là: 0100,0011,1010,1001

Đầu ra sẽ là: 1010

Trong trường hợp dữ liệu đầu vào được nhập vào chương trình nó nên được giả định là dữ liệu được người dùng nhập vào từ giao diện điều khiển.

Bài 16:

value = [] items=[x for x in input("Nhập các số nhị phân: ").split(',')] for p in items: intp = int(p, 2) if not intp%5: value.append(p) # Bài tập Python 14, viết bởi chúng tôi print (','.join(value))

Viết một chương trình tìm tất cả các số trong đoạn 1000 và 3000 (tính cả 2 số này) sao cho tất cả các chữ số trong số đó là số chẵn. In các số tìm được thành chuỗi cách nhau bởi dấu phẩy, trên một dòng.

Trong trường hợp dữ liệu đầu vào được nhập vào chương trình nó nên được giả định là dữ liệu được người dùng nhập vào từ giao diện điều khiển.

values = [] for i in range(1000, 3001): s = str(i) if (int(s[0])%2==0) and (int(s[1])%2==0) and (int(s[2])%2==0) and (int(s[3])%2==0): values.append(s) # Bài tập Python 15, Code by chúng tôi print (",".join(values))

Viết một chương trình chấp nhận đầu vào là một câu, đếm số chữ cái và chữ số trong câu đó. Giả sử đầu vào sau được cấp cho chương trình: hello world! 123

Bài 17:

Thì đầu ra sẽ là:

Số chữ cái là: 10Số chữ số là: 3

Trong trường hợp dữ liệu đầu vào được nhập vào chương trình nó nên được giả định là dữ liệu được người dùng nhập vào từ giao diện điều khiển.

s = input("Nhập câu của bạn: ") # Bài tập Python 16, Code by chúng tôi d={"DIGITS":0, "LETTERS":0} for c in s: if c.isdigit(): d["DIGITS"]+=1 elif c.isalpha(): d["LETTERS"]+=1 else: pass print ("Số chữ cái là:", d["LETTERS"]) print ("Số chữ số là:", d["DIGITS"])

Viết một chương trình chấp nhận đầu vào là một câu, đếm chữ hoa, chữ thường.

Giả sử đầu vào là: Quản Trị Mạng

Thì đầu ra là:

Bài 18:

Chữ hoa: 3

Chữ thường: 8

Trong trường hợp dữ liệu đầu vào được nhập vào chương trình nó nên được giả định là dữ liệu được người dùng nhập vào từ giao diện điều khiển.

s = input("Nhập câu của bạn: ") d={"UPPER CASE":0, "LOWER CASE":0} # Code by chúng tôi for c in s: if c.isupper(): d["UPPER CASE"]+=1 elif c.islower(): d["LOWER CASE"]+=1 else: pass print ("Chữ hoa:", d["UPPER CASE"]) print ("Chữ thường:", d["LOWER CASE"])

Bài 19:

Viết một chương trình tính giá trị của a+aa+aaa+aaaa với a là số được nhập vào bởi người dùng.

Giả sử a được nhập vào là 1 thì đầu ra sẽ là: 1234

Trong trường hợp dữ liệu đầu vào được nhập vào chương trình nó nên được giả định là dữ liệu được người dùng nhập vào từ giao diện điều khiển.

a = input("Nhập số a: ") n1 = int( "%s" % a ) n2 = int( "%s%s" % (a,a) ) n3 = int( "%s%s%s" % (a,a,a) ) n4 = int( "%s%s%s%s" % (a,a,a,a) ) # Bài tập Python 18, Code by chúng tôi print ("Tổng cần tính là: ",n1+n2+n3+n4)

Bài 20:

Sử dụng một danh sách để lọc các số lẻ từ danh sách được người dùng nhập vào.

Giả sử đầu vào là: 1,2,3,4,5,6,7,8,9 thì đầu ra phải là: 1,3,5,7,9

Trong trường hợp dữ liệu đầu vào được nhập vào chương trình nó nên được giả định là dữ liệu được người dùng nhập vào từ giao diện điều khiển.

values = input("Nhập dãy số của bạn, cách nhau bởi dấu phẩy: ") numbers = [x for x in values.split(",") if int(x)%2!=0] print (",".join(numbers))

Viết chương trình tính số tiền thực của một tài khoản ngân hàng dựa trên nhật ký giao dịch được nhập vào từ giao diện điều khiển.

Định dạng nhật ký được hiển thị như sau:

(D là tiền gửi, W là tiền rút ra).

Giả sử đầu vào được cung cấp là:

D 300

D 300

W 200

D 100

Thì đầu ra sẽ là:

Bài 21:

500

Trong trường hợp dữ liệu đầu vào được nhập vào chương trình nó nên được giả định là dữ liệu được người dùng nhập vào từ giao diện điều khiển.

import sys netAmount = 0 # Bài tập Python 20, Code by chúng tôi while True: s = input("Nhập nhật ký giao dịch: ") if not s: break values = s.split(" ") operation = values[0] amount = int(values[1]) if operation=="D": netAmount+=amount elif operation=="W": netAmount-=amount else: pass print (netAmount) 5. Bài tập Python level 3

Một website yêu cầu người dùng nhập tên người dùng và mật khẩu để đăng ký. Viết chương trình để kiểm tra tính hợp lệ của mật khẩu mà người dùng nhập vào.

Các tiêu chí kiểm tra mật khẩu bao gồm:

1. Ít nhất 1 chữ cái nằm trong [a-z]2. Ít nhất 1 số nằm trong [0-9]3. Ít nhất 1 kí tự nằm trong [A-Z]4. Ít nhất 1 ký tự nằm trong [$ # @]5. Độ dài mật khẩu tối thiểu: 66. Độ dài mật khẩu tối đa: 12

Chương trình phải chấp nhận một chuỗi mật khẩu phân tách nhau bởi dấu phẩy và kiểm tra xem chúng có đáp ứng những tiêu chí trên hay không. Mật khẩu hợp lệ sẽ được in, mỗi mật khẩu cách nhau bởi dấu phẩy.

Bài 22:

Ví dụ mật khẩu nhập vào chương trình là: ABd1234@1,a F1#,2w3E*,2We3345

Thì đầu ra sẽ là: ABd1234@1

Trong trường hợp dữ liệu đầu vào được nhập vào chương trình nó nên được giả định là dữ liệu được người dùng nhập vào từ giao diện điều khiển.

Viết chương trình sắp xếp tuple (name, age, score) theo thứ tự tăng dần, name là string, age và height là number. Tuple được nhập vào bởi người dùng. Tiêu chí sắp xếp là:

Nếu đầu vào là:

Thì đầu ra sẽ là:

Bài 23:

[(‘John’, ’20’, ’90’), (‘Jony’, ’17’, ’91’), (‘Jony’, ’17’, ’93’), (‘Json’, ’21’, ’85’), (‘Tom’, ’19’, ’80’)]

Trong trường hợp dữ liệu đầu vào được nhập vào chương trình nó nên được giả định là dữ liệu được người dùng nhập vào từ giao diện điều khiển.

Sử dụng itemgetter để chấp nhận nhiều key sắp xếp.

Bài 24:

from operator import itemgetter, attrgetter # Bài tập Python 22 Code by chúng tôi l = [] while True: s = input() if not s: break l.append(tuple(s.split(","))) print (sorted(l, key=itemgetter(0,1,2)))

Xác định một class với generator có thể lặp lại các số nằm trong khoảng 0 và n, và chia hết cho 7.

Sử dụng yield.

def putNumbers(n): i = 0 while i<n: j=i i=i+1 if j%7==0: yield j # Bài tập Python 23 Code by chúng tôi for i in putNumbers (100): print (i)

Một Robot di chuyển trong mặt phẳng bắt đầu từ điểm đầu tiên (0,0). Robot có thể di chuyển theo hướng UP, DOWN, LEFT và RIGHT với những bước nhất định. Dấu di chuyển của robot được đánh hiển thị như sau:

UP 5

DOWN 3

LEFT 3

RIGHT 3

Các con số sau phía sau hướng di chuyển chính là số bước đi. Hãy viết chương trình để tính toán khoảng cách từ vị trí hiện tại đến vị trí đầu tiên, sau khi robot đã di chuyển một quãng đường. Nếu khoảng cách là một số thập phân chỉ cần in só nguyên gần nhất.

Bài 25:

Ví dụ: Nếu tuple sau đây là input của chương trình:

thì đầu ra sẽ là 2.

Trong trường hợp dữ liệu đầu vào được nhập vào chương trình nó nên được giả định là dữ liệu được người dùng nhập vào từ giao diện điều khiển.

import math pos = [0,0] while True: s = input() if not s: break movement = s.split(" ") direction = movement[0] steps = int(movement[1]) if direction=="UP": pos[0]+=steps elif direction=="DOWN": pos[0]-=steps elif direction=="LEFT": pos[1]-=steps elif direction=="RIGHT": pos[1]+=steps else: pass # Bài tập Python 24 Code by chúng tôi print (int(round(math.sqrt(pos[1]**2+pos[0]**2))))

Viết chương trình tính tần suất các từ từ input. Output được xuất ra sau khi đã sắp xếp theo bảng chữ cái.

Giả sử input là: New to Python or choosing between Python 2 and Python 3? Read Python 2 or Python 3.

Bài 26:

Thì output phải là:

Trong trường hợp dữ liệu đầu vào được cung cấp cho câu hỏi, nó phải được giả định là một input được nhập từ giao diện điều khiển.

freq = {} # frequency of words in text line = input() for word in line.split(): freq[word] = freq.get(word,0)+1 # Bài tập Python 25 Code by chúng tôi words = sorted(freq.keys()) for w in words: print ("%s:%d" % (w,freq[w]))

Bài 27:

6. Bài tập Python khác

Định nghĩa 1 hàm có thể tính tổng hai số.

Định nghĩa 1 hàm với 2 số là đối số. Bạn có thể tính tổng trong hàm và trả về giá trị.

Bài 28:

def SumFunction(number1, number2): #định nghĩa hàm tính tổng return number1+number2 print (SumFunction(5,7)) #in tổng 2 số 5 và 7

Định nghĩa một hàm có thể chuyển số nguyên thành chuỗi và in nó ra giao diện điều khiển

Sử dụng str() để chuyển đổi một số thành chuỗi.

Bài 29:

def printValue(n): print (str(n)) printValue(3)

Định nghĩa hàm có thể nhận hai số nguyên trong dạng chuỗi và tính tổng của chúng, sau đó in tổng ra giao diện điều khiển.

Sử dụng int() để chuyển đổi một chuỗi thành số nguyên.

Bài 30:

def printValue(s1,s2): print (int(s1)+int(s2)) printValue("3","4") #Kết quả là 7

Định nghĩa hàm có thể nhận 2 chuỗi từ input và nối chúng sau đó in ra giao diện điều khiển

Sử dụng + để nối các chuỗi.

Bài 31:

def printValue(s1,s2): print (s1+s2) printValue("3","4") #Kết quả là 34

Định nghĩa một hàm có input là 2 chuỗi và in chuỗi có độ dài lớn hơn trong giao diện điều khiển. Nếu 2 chuỗi có chiều dài như nhau thì in tất cả các chuỗi theo dòng.

Sử dụng hàm len() để lấy chiều dài của một chuỗi

Định nghĩa hàm có thể chấp nhận input là số nguyên và in “Đây là một số chẵn” nếu nó chẵn và in “Đây là một số lẻ” nếu là số lẻ.

Sử dụng toán tử % để kiểm tra xem số đó chẵn hay lẻ.

def checkValue(n): if n%2 == 0: print ("Đây là một số chẵn") else: print ("Đây là một số lẻ") checkValue(7)

Bài 33:

Định nghĩa một hàm có thể in dictionary chứa key là các số từ 1 đến 3 (bao gồm cả hai số) và các giá trị bình phương của chúng.

Sử dụng dict[key]=value để nhập mục vào dictionary.

Sử dụng toán từ ** để lấy bình phương của một số.

def printDict(): d=dict() d[1]=1 d[2]=2**2 d[3]=3**2 print (d) # Bài tập Python 32, Code by chúng tôi printDict()

Chạy code trên bạn sẽ được kết quả là một dictionary như sau: {1: 1, 2: 4, 3: 9}. Nếu chưa hiểu lắm về kiểu dữ liệu dictionary này bạn hãy đọc lại bài: Kiểu dữ liệu trong Python: chuỗi, số, list, tuple, set và dictionary

Định nghĩa một hàm có thể in dictionary chứa các key là số từ 1 đến 20 (bao gồm cả 1 và 20) và các giá trị bình phương của chúng.

Sử dụng dict[key]=value để nhập mục vào dictionary.

Sử dụng toán từ ** để lấy bình phương của một số.

Sử dujnng range() cho các vòng lặp.

def printDict(): d=dict() for i in range(1,21): d[i]=i**2 print (d) # Bài tập Python 33, Code by chúng tôi printDict()

Kết quả khi chạy code trên là: {1: 1, 2: 4, 3: 9, 4: 16, 5: 25, 6: 36, 7: 49, 8: 64, 9: 81, 10: 100, 11: 121, 12: 144, 13: 169, 14: 196, 15: 225, 16: 256, 17: 289, 18: 324, 19: 361, 20: 400}

Bài 34:

Bài 35:

Định nghĩa một hàm có thể tạo dictionary, chứa các key là số từ 1 đến 20 (bao gồm cả 1 và 20) và các giá trị bình phương của chúng. Hàm chỉ in các giá trị mà thôi.

Sử dụng dict[key]=value để nhập mục vào dictionary.

Sử dụng toán từ ** để lấy bình phương của một số.

Sử dụng range() cho các vòng lặp.

Sử dụng keys() để di lặp các key trong dictionary. Có thể sử dụng item() để nhận cặp key/value.

def printDict(): d=dict() for i in range(1,21): d[i]=i**2 for (k,v) in d.items(): print (v) # Bài tập Python 34, Code by chúng tôi printDict()

Kết quả bạn nhận được khi chạy code trên là các giá trị bình phương của số từ 1 đến 20.

Bài 36:

Định nghĩa một hàm có thể tạo ra một dictionary chứa key là những số từ 1 đến 20 (bao gồm cả 1 và 20) và các giá trị bình phương của key. Hàm chỉ cần in các key.

Tương tự như bài 34.

def printDict(): d=dict() for i in range(1,21): d[i]=i**2 for k in d.keys(): print (k) # Bài Python 35, Code by chúng tôi printDict()

Chạy code trên bạn sẽ nhận được các key trong dictionary, chính là các số từ 1 đến 20.

Định nghĩa một hàm có thể tạo và in list chứa các giá trị bình phương của các số từ 1 đến 20 (tính cả 1 và 20).

Sử dụng toán tử ** để lấy giá trị bình phương.

Sử dụng range() cho vòng lặp.

Sử dụng list.append() để thêm giá trị vào list.

def printList(): li=list() for i in range(1,21): li.append(i**2) print (li) # Bài Python 36, Code by chúng tôi printList()

Chạy code trên bạn sẽ nhận được một list chứa các giá trị bình phương của các số từ 1 đến 20.

Bài 37:

Thụt đầu dòng trong Python rất quan trọng, nếu code trên bạn chỉ cần sửa 1 chút như sau:

def printList(): li=list() for i in range(1,21): li.append(i**2) print (li) # Bài Python 36, Code by chúng tôi printList()

Thì sẽ nhận được output hình tháp khá đẹp như này:

Kết quả bài tập Python 36 khi thay đổi thụt đầu dòng

Bài 38:

Định nghĩa một hàm có thể tạo list chứa các giá trị bình phương của các số từ 1 đến 20 (bao gồm cả 1 và 20) và in 5 mục đầu tiên trong list.

Sử dụng toán tử ** để lấy giá trị bình phương.

Sử dụng range() cho vòng lặp.

Sử dụng list.append() để thêm giá trị vào list.

Sử dụng [n1:n2] để cắt list

def printList(): li=list() for i in range(1,21): li.append(i**2) print (li[:5]) # Bài Python 37, Code by chúng tôi printList()

Chạy code trên bạn sẽ nhận được một list chứa giá trị bình phương của các số từ 1 đến 5.

Bài 39:

Định nghĩa một hàm có thể tạo ra list chứa các giá trị bình phương của các số từ 1 đến 20 (bao gồm cả 1 và 20), rồi in 5 mục cuối cùng trong list.

Tương tự bài 37.

def printList(): li=list() for i in range(1,21): li.append(i**2) print (li[-5:]) # Bài Python 38, Code by chúng tôi printList()

Khi chạy code trên bạn sẽ nhận được list chứa giá trị bình phương của 16, 17, 18, 19, 20.

Định nghĩa một hàm có thể tạo list chứa giá trị bình phương của các số từ 1 đến 20 (bao gồm cả 1 và 20). Sau đó in tất cả các giá trị của list, trừ 5 mục đầu tiên.

Bài 40:

Tương tư bài 37, 38.

def printList(): li=list() for i in range(1,21): li.append(i**2) print (li[5:]) printList()

Kết quả:

[36, 49, 64, 81, 100, 121, 144, 169, 196, 225, 256, 289, 324, 361, 400]

Định nghĩa 1 hàm có thể tạo và in một tuple chứa các giá trị bình phương của các số từ 1 đến 20 (tính cả 1 và 20).

Bài 41:

Sử dụng toán tử ** để lấy giá trị bình phương.

Sử dụng range() cho vòng lặp.

Sử dụng list.append() để thêm giá trị vào list.

Sử dụng tuple() để lấy giá tuple từ list.

def printTuple(): li=list() for i in range(1,21): li.append(i**2) print (tuple(li)) printTuple()

Kết quả:

(1, 4, 9, 16, 25, 36, 49, 64, 81, 100, 121, 144, 169, 196, 225, 256, 289, 324, 361, 400)

Với tuple (1,2,3,4,5,6,7,8,9,10) cho trước, viết một chương trình in một nửa số giá trị đầu tiên trong 1 dòng và 1 nửa số giá trị cuối trong 1 dòng.

Bài 42:

Sử dụng [n1:n2] để lấy một phần từ tuple.

tp=(1,2,3,4,5,6,7,8,9,10) tp1=tp[:5] tp2=tp[5:] print (tp1) print (tp2)

Kết quả:

Bài 43:

(1, 2, 3, 4, 5) (6, 7, 8, 9, 10)

Viết một chương trình để tạo tuple khác, chứa các giá trị là số chẵn trong tuple (1,2,3,4,5,6,7,8,9,10) cho trước.

Sử dụng for để lặp tuple.

Sử dụng tuple() để tạo tuple từ list.

tp=(1,2,3,4,5,6,7,8,9,10) li=list() for i in tp: if tp[-i]%2==0: li.append(tp[i]) tp2=tuple(li) print (tp2)

Bài 44:

Viết một chương trình để tạo ra và in tuple chứa các số chẵn được lấy từ tuple (1,2,3,4,5,6,7,8,9,10).

Sử dụng “for” để lặp lại tuple.

Sử dụng tuple() để tạo ra một tuple từ một danh sách.

tp=(1,2,3,4,5,6,7,8,9,10) li=list() for i in tp: if tp[i-1]%2==0: li.append(tp[i-1]) tp2=tuple(li) print (tp2)

Bài 45:

(2, 4, 6, 8, 10)

Viết một chương trình Python nhận chuỗi nhập vào bởi người dùng, in “Yes” nếu chuỗi là “yes” hoặc “YES” hoặc “Yes”, nếu không in “No”.

Sử dụng lệnh if để kiểm tra điều kiện.

s = input ("Nhập chuỗi: ") if s == "yes" or s == "YES" or s == "Yes": print ("Yes") else: print ("No")

Viết chương trình Python có thể lọc các số chẵn trong danh sách sử dụng hàm filter. Danh sách là [1,2,3,4,5,6,7,8,9,10].

Bài 46:

Sử dụng filter() để lọc các yếu tố trong một list.

Sử dụng lambda để định nghĩa hàm chưa biết.

li = [1,2,3,4,5,6,7,8,9,10] evenNumbers = list(filter (lambda x: x% 2 == 0, li)) print (evenNumbers)

[2, 4, 6, 8, 10]

Lưu ý: Trong các phiên bản Python trước, bạn chỉ cần dùng hàm filter sẽ được trả kết quả đầu ra là một danh sách. Nhưng từ Python 3, phải dùng list(filter()) thì kết quả trả về mới là list. Điều này cũng áp dụng với map().

Bài 47:

Viết chương trình Python dùng map() để tạo list chứa các giá trị bình phương của các số trong [1,2,3,4,5,6,7,8,9,10].

Sử dụng map() để tạo list.

Sử dụng lambda để định nghĩa hàm chưa biết.

li = [1,2,3,4,5,6,7,8,9,10] squaredNumbers = list(map (lambda x: x ** 2, li)) print (squaredNumbers)

[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]

Bài 48:

Viết chương trình Python dùng map() và filter() để tạo list chứa giá trị bình phương của các số chẵn trong [1,2,3,4,5,6,7,8,9,10].

Dùng map() để tạo list.

Dùng filter() để lọc thành phần trong list.

Dùng lambda để định nghĩa hàm chưa biết.

li = [1,2,3,4,5,6,7,8,9,10] squareOfEvenNumbers = list (map (lambda x: x ** 2, filter (lambda x: x% 2 == 0, li))) print (squareOfEvenNumbers)

Bài 49:

[4, 16, 36, 64, 100]

Viết chương trình Python dùng filter() để tạo danh sách chứa các số chẵn trong đoạn [1,20].

evenNumbers = list(filter (lambda x: x% 2 == 0, range (1,21))) print (evenNumbers)

Bài 50:

[2, 4, 6, 8, 10, 12, 14, 16, 18, 20]

Viết chương trình Python sử dụng map() để tạo list chứa giá trị bình phương của các số trong đoạn [1,20].

squaredNumbers = list(map(lambda x: x ** 2, range (1,21))) print (squaredNumbers)

Bài 51:

[1, 4, 9, 16, 25, 36, 49, 64, 81, 100, 121, 144, 169, 196, 225, 256, 289, 324, 361, 400]

Định nghĩa một class có tên là Vietnam, với static method là printNationality.

Sử dụng @staticmethod để định nghĩa class với static method.

Bài 52:

class Vietnam (object): @staticmethod def printNationality (): print ("Vietnam") # Bài Python 50, Code by chúng tôi VietnamVodich = Vietnam () VietnamVodich.printNationality () Vietnam.printNationality ()

Định nghĩa một class tên Vietnam và class con của nó là Hanoi.

Sử dụng Subclass(ParentClass) để định nghĩa một class con.

class Vietnam(object): pass class Hanoi(Vietnam): pass # Bài Python 51, Code by chúng tôi VietnamVodich = Vietnam() NguoiHanoi = Hanoi() print (VietnamVodich) print (NguoiHanoi)

Bài 53:

Định nghĩa một class có tên là Circle có thể được xây dựng từ bán kính. Circle có một method có thể tính diện tích.

Sử dụng def methodName(self) để định nghĩa method.

class Circle(object): def __init__(self, r): self.radius = r # Bài Python 52, Code by chúng tôi def area(self): return self.radius**2*3.14 aCircle = Circle(2) print (aCircle.area())

Bài 54:

Trong code trên, ta thực hiện khai báo lớp Circle, và method tính diện tích cho hình tròn, với bán kính r=2, kết quả khi chạy code sẽ được là: 12.56.

Định nghĩa class có tên là Hinhchunhat được xây dựng bằng chiều dài và chiều rộng. Class Hinhchunhat có method để tính diện tích.

class Hinhchunhat(object): def __init__(self, l, w): chúng tôi = l chúng tôi = w # Bài Python 53, Code by chúng tôi def area(self): return self.dai*self.rong aHinhchunhat = Hinhchunhat(10,2) print (aHinhchunhat.area())

Trong code trên chiều dài hình nhữ nhật là 10, chiều rộng là 2. Chạy code ta được kết quả là 20.

Bài 55:

Định nghĩa một class có tên là Shape và class con là Square. Square có hàm init để lấy đối số là chiều dài. Cả 2 class đều có hàm area để in diện tích của hình, diện tích mặc định của Shape là 0.

Để ghi đè một method trong super class, chúng ta có thể định nghĩa một method có cùng tên trong super class.

Code đơn giản:

class Shape(object): def __init__(self): pass def area(self): return 0 # Bài Python 54, Code by chúng tôi class Square(Shape): def __init__(self, l): Shape.__init__(self) self.length = l def area(self): return self.length*self.length aSquare= Square(3) print (aSquare.area())

Code phức tạp:

Với chiều dài là 3, khi chạy code trên ta được kết quả là 9.

Bài 56:

Đưa ra một RuntimeError exception.

Sử dụng raise() để đưa ra exception.

raise RuntimeError('something wrong') # Bài Python 55, Code by chúng tôi class RuntimeError(Exception): def __init__(self, mismatch): Exception.__init__(self, mismatch) try: print ("And now, the Vocational Guidance Counsellor Sketch.") raise RuntimeError("Does not have proper hat") print ("This print statement will not be reached.") except RuntimeError as problem: print ("Vocation problem: {0}".format(problem))

Bài 57:

Viết hàm để tính 5/0 và sử dụng try/exception để bắt lỗi.

Sử dụng try/exception để bắt lỗi.

def throws(): return 5/0 # Bài Python 56, Code by chúng tôi try: throws() except ZeroDivisionError: print ("Chia một số cho 0!") except Exception as problem: print ('Bắt được một exception') finally: print ('Phép tính bị hủy')

Kết quả khi chạy code trên ta nhận được như sau:

Bài 58:

Định nghĩa một class exception tùy chỉnh, nhận một thông báo là thuộc tính.

Để định nghĩa một class exception tùy chỉnh, chúng ta phải định nghĩa một class kế thừa từ Exception.

class MyError(Exception): """My own exception class # Bài Python 57, Code by chúng tôi Attributes: msg -- explanation of the error """ def __init__(self, msg): chúng tôi = msg error = MyError("Có gì đó sai sai!") print (error)

Khi chạy code trên, thông báo “Có gì đó sai sai!” sẽ được in ra màn hình.

Giả sử rằng chúng ta có vài địa chỉ email dạng username@companyname.com, hãy viết một chương trình để in username của địa chỉ email cụ thể. Cả username và companyname chỉ bao gồm chữ cái.

Ví dụ: Nếu cung cấp địa chỉ email QTM@quantrimang.com thì đầu ra sẽ là: QTM.

Bài 59:

Trong trường hợp dữ liệu đầu vào không có sẵn, ta giả định nó được người dùng nhập vào từ giao diện điều khiển.

Sử dụng w để kiểm tra chữ cái.

# Bài Python 58, Code by chúng tôi import re emailAddress = input() pat2 = "(w+)@((w+.)+(com))" re2 = re.match(pat2,emailAddress) print (re2.group(1))

Bài 60:

Khi chạy code trên, nó sẽ nhận email được nhập vào bởi người dùng và trả về username của email, nếu nhập vào qtm@quantrimang.com bạn sẽ nhận được kết quả là qtm.

Tương tự như bài 58, nhưng lần này ta sẽ viết hàm để lấy companyname.

# Bài Python 59, Code by chúng tôi import re emailAddress = input() pat2 = "(w+)@(w+).(com)" r2 = re.match(pat2,emailAddress) print (r2.group(2))

Đây là kết quả khi chạy code bài 58 và 59:

Viết một chương trình chấp nhận chuỗi từ được phân tách bằng khoảng trống và in các từ chỉ gồm chữ số.

Bài 61:

Ví du: Nếu những từ sau đây là đầu vào của chương trình: 3 chúng tôi và 2 python. Đầu ra sẽ là [‘3’, ‘2’]

Sử dụng re.findall() để tìm tất cả chuỗi con sử dụng regex (biểu thức tiêu chuẩn).

# Bài Python 60, Code by chúng tôi import re s = input() print (re.findall("d+",s))

Bài 62:

Kết quả khi chạy code trên sẽ như sau:

In chuỗi Unicode “Hello world”.

Bài 63:

Sử dụng định dạng u’string’ để định nghĩa chuỗi Unicode.

# Bài Python 61, Code by chúng tôi unicodeString = u"Hello world!" print (unicodeString)

Bài 64:

Viết chương trình để đọc chuỗi ASCII và chuyển đổi nó sang một chuỗi Unicode được mã hóa bằng UTF-8.

# Bài Python 62, Code by chúng tôi s = input() v = s.encode() # có thể dùng v=s.encode('utf-8') print (v) # -*- coding: utf-8 -*- #Bài Python 63, Code by Quantrimang.com

Ví dụ, nếu n là số sau đây được nhập vào:

5

Bài 65:

Thì đầu ra phải là:

3.55

Sử dụng float() để chuyển số nguyên sang số thập phân.

Ví dụ: Nếu n được nhập vào là 5 thì đầu ra phải là 500.

Dãy Fibonacci được tính dựa trên công thức sau:

f(n)=0 nếu n=0

f(n)=1 nếu n=1

Hãy viết chương trình tính giá trị của f(n) với n là số được người dùng nhập vào. Ví dụ: Nếu n được nhập vào là 7 thì đầu ra của chương trình sẽ là 13.

Tương tự như bài 65, ta cũng sử dụng hàm đệ quy trong Python.

def f(n): if n == 0: return 0 elif n == 1: return 1 else: return f(n-1)+f(n-2) #Bài Python 66, Code by chúng tôi n=int(input("Nhập số n: ")) print (f(n))

Dãy Fibonacci được tính dựa trên công thức sau:

f(n)=0 nếu n=0

f(n)=1 nếu n=1

Bài 68:

Hãy viết chương trình sử dụng list comprehension để in dãy Fibonacci dưới dạng tách biệt bằng dấu “,”, n được người dùng nhập vào.

Ví dụ: Nếu n được nhập vào là 7 thì đầu ra của chương trình sẽ là: 0,1,1,2,3,5,8,13

Chúng ta có thể định nghĩa hàm đệ quy trong Python.

Sử dụng list comprehension để tạo ra list từ list hiện có.

Sử dụng string.join() để nối danh sách các chuỗi.

def f(n): if n == 0: return 0 elif n == 1: return 1 else: return f(n-1)+f(n-2) #Bài Python 67, Code by chúng tôi n=int(input("Nhập số n: ")) values = [str(f(x)) for x in range(0, n+1)] print (",".join(values))

Bài 69:

Viết chương trình sử dụng generator để in số chẵn trong khoảng từ 0 đến n, cách nhau bởi dấu phẩy, n là số được nhập vào.

Ví dụ nếu n=10 được nhập vào thì đầu ra của chương trình là: 0,2,4,6,8,10

Sử dụng yield để tạo ra giá trị kết tiếp trong generator.

def EvenGenerator(n): i=0 while i<=n: if i%2==0: yield i i+=1 # Bài tập Python 68, Code by chúng tôi n=int(input("Nhập n: ")) values = [] for i in EvenGenerator(n): values.append(str(i)) print ("Các số chẵn trong khoảng 0 và n là: ",",".join(values))

Bài 70:

Viết chương trình sử dụng generator để in số chia hết cho 5 và 7 giữa 0 và n, cách nhau bằng dấu phẩy, n được người dùng nhập vào.

Ví dụ: Nếu n=100 được nhập vào thì đầu ra của chương trình là: 0,35,70.

Như bài 68.

Bài 71:

def NumGenerator(n): for i in range(n+1): if i%5==0 and i%7==0: yield i # Bài tập Python 69, Code by chúng tôi n=int(input("Nhập n: ")) values = [] for i in NumGenerator(n): values.append(str(i)) print ("Các số chia hết cho 5 và 7 trong khoảng 0 và n là: ",",".join(values))

Viết các lệnh assert để xác minh rằng tất cả các số trong list [2,4,6,8] là chẵn.

Sử dụng assert để khẳng định.

li = [2,4,6,8] for i in li: assert i%2==0 # Code by Quantrimang.com

Viết chương trình chấp nhận biểu thức toán học cơ bản do người dùng nhập vào từ bảng điều khiển và in kết quả ước lượng ra ngoài màn hình.

Ví dụ: Nếu chuỗi sau là đầu vào của chương trình:

35 + 3

thì đầu ra sẽ lả:

Bài 72:

38

Sử dụng eval() để ước lượng biểu thức

expression = input("Nhập biểu thức cần tính: ") # Code by chúng tôi print (eval(expression))

Bài 73:

Viết hàm tìm kiếm nhị phân để tìm các item trong một list đã được sắp xếp. Hàm sẽ trả lại chỉ số của phần tử được tìm thấy trong list.

Sử dụng if/elif để giải quyết các điều kiện.

Khi chạy code trên ta sẽ có kết quả đầu ra là 4 và -1, 4 là vị trí của 11 trong list li, và -1 nói lên rằng không có số 12 trong list li.

Bài 74:

Tạo một số thập phân ngẫu nhiên, có giá trị nằm trong khoảng từ 10 đến 100 bằng cách sử dụng module math của Python.

Sử dụng random.random() để tạo float ngẫu nhiên trong [0,1].

import random print (random.random()*100) # Code by Quantrimang.com

Bài 75:

Vì hàm trên được sử dụng để tạo số thập phân ngẫu nhiên, nằm trong khoảng từ 10 đến 100, nên mỗi lần bạn chạy code sẽ cho ra một kết quả khác nhau, là các số thập phân ngẫu nhiên thỏa mãn điều kiện nằm trong khoảng 10 đến 100.

Tạo một số thập phân ngẫu nhiên, có giá trị nằm trong khoảng 5 đến 95, sử dụng module math của Python.

import random print (random.random()*100-5) # Code by Quantrimang.com

Viết chương trình xuất ra một số chẵn ngẫu nhiên trong khoảng 0 đến 10 (bao gồm cả 0 và 10), sử dụng module random và list comprehension.

Sử dụng random.choice() để tạo một phần tử ngẫu nhiên từ list.

Bài 77:

import random print (random.choice([i for i in range(11) if i%2==0])) # Code by Quantrimang.com

Vui lòng viết chương trình để xuất một số ngẫu nhiên, chia hết cho 5 và 7, từ 0 đến 200 (gồm cả 0 và 200), sử dụng module random và list comprehension.

import random print (random.choice([i for i in range(201) if i%5==0 and i%7==0])) #Code by Quantrimang.com

Khi chạy code trên, bạn sẽ nhận được kết quả đầu ra là số bất kỳ, nằm trong đoạn [0;200] chia hết cho cả 5 và 7.

Bài 78:

Vui lòng viết chương trình để tạo một list với 5 số ngẫu nhiên từ 100 đến 200.

Sử dụng random.sample() để tạo list chứa các giá trị ngẫu nhiên.

Bài 79:

import random print (random.sample(range(100,201), 5)) #Code by Quantrimang.com

Khi chạy code trên bạn sẽ nhận được 1 list, có 5 giá trị ngẫu nhiên, nằm trong đoạn [100;200]. Nếu đề bài yêu cầu số ngẫu nhiên nằm trong đoạn [0;100] thì range() trong đoạn trên bạn chỉ cần viết là range(100).

Bài 80:

Viết chương trình tạo ngẫu nhiên list gồm 5 số chẵn nằm trong đoạn [100;200].

import random print (random.sample([i for i in range(100,201) if i%2==0], 5)) #Code by Quantrimang.com

Viết chương trình để tạo ngẫu nhiên một list gồm 5 số, chia hết cho 5 và 7, nằm trong đoạn [1;1000].

Bài 81:

import random print (random.sample([i for i in range(1,1001) if i%5==0 and i%7==0], 5)) #Code by Quantrimang.com

Viết chương trình để in một số nguyên ngẫu nhiên từ 7 đến 15.

Sử dụng random.randrange() để lấy số nguyên ngẫu nhiên trong một phạm vi nhất định.

import random print (random.randrange(7,16)) #Code by Quantrimang.com

Viết chương trình để nén và giải nén string “”hello world!hello world!hello world!hello world!”.

Sử dụng zlib.compress() và zlib.decompress() để nén và giải nén string.

Bài 82:

Với Python 2, code mẫu sẽ như sau:

import zlib s = "hello world!hello world!hello world!hello world!" t = zlib.compress(s) print t print zlib.decompress(t)

Tuy nhiên, trong Python 3, bạn phải gọi encode() và chỉ định kiểu mã hóa, giả sử là utf-8 thì yêu cầu trên sẽ được code như sau:

import zlib s = "hello world!hello world!hello world!hello world!" t = zlib.compress(s.encode("utf-8")) print (t) print (zlib.decompress(t)) #Code by Quantrimang.com

Bài 83:

Bạn hãy viết một chương trình để in thời gian thực thi (running time of execution) phép tính “1+1” 100 lần.

Sử dụng timeit() để đo thời gian chạy

from timeit import Timer t = Timer("for i in range(100):1+1") print (t.timeit())

Khi chạy code trên, bạn cần phải đợi để phép tính trên được thực hiện xong rồi chương trình mới in ra thời gian thực thi. Ban đầu khi mới chạy code, cảm giác như không có gì đang được thực thi.

Bài 84:

Viết chương trình để trộn và in list [3,6,7,8].

Sử dụng shuffle() để trộn list.

from random import shuffle li = [3,6,7,8] #Code by chúng tôi shuffle(li) print (li)

Khi code được thực thi, mỗi lần chạy sẽ cho ra một list với thứ tự các số được trộn ngẫu nhiên.

Viết một chương trình để tạo tất cả các câu có chủ ngữ nằm trong [“Anh”,”Em”], động từ nằm trong [“Chơi”,”Yêu”] và tân ngữ là [“Bóng đá”,”Xếp hình”].

Bài 85:

Sử dụng list[index] để lấy phần tử từ list.

chu_ngu=["Anh","Em"] dong_tu=["Chơi","Yêu"] tan_ngu=["Bóng đá","Xếp hình"] # Code by chúng tôi for i in range(len(chu_ngu)): for j in range(len(dong_tu)): for k in range(len(tan_ngu)): cau = "%s %s %s." % (chu_ngu[i], dong_tu[j], tan_ngu[k]) print (cau)

Khi chạy code trên ta sẽ có kết quả như sau:

Bài 86:

Anh Chơi Bóng đá. Anh Chơi Xếp hình. Anh Yêu Bóng đá. Anh Yêu Xếp hình. Em Chơi Bóng đá. Em Chơi Xếp hình. Em Yêu Bóng đá. Em Yêu Xếp hình.

Viết chương trình in list sau khi xóa các số chẵn trong [5,6,77,45,22,12,24].

li = [5,6,77,45,22,12,24] # Code by chúng tôi li = [x for x in li if x%2!=0] print (li)

Bài 87:

Kết quả khi chạy code trên sẽ là:

Sử dụng list comprehension để viết chương trình in list sau khi đã loại bỏ các số chia hết cho 5 và 7 trong [12,24,35,70,88,120,155].

li = [12,24,35,70,88,120,155] # Code by chúng tôi li = [i for i in li if i%5!=0 and i%7!=0] print (li)

Ta sẽ có kết quả như sau:

Bài 88:

Viết chương trình in list sau khi đã xóa số thứ 0, thứ 2, thứ 4, thứ 6 trong [12,24,35,70,88,120,155].

Sử dụng list comprehension để xóa một loạt phần tử trong list.

Sử dụng hàm enumerate() để lấy index, value của tuple.

li = [12,24,35,70,88,120,155] # Code by chúng tôi a= [x for i,x in enumerate(li)if i%2!=0] print (a)

Code trên sẽ trả về kết quả:

Bài 89:

Viết chương trình tạo mảng 3D 3*5*8 có mỗi phần tử là 0.

Sử dụng list comprehension để tạo mảng.

Bài 90:

array = [[ [0 for col in range(8)] for col in range(5)] for row in range(3)] print (array) [[[0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0]], [[0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0]], [[0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0]]]

Viết chương trình in list sau khi đã xóa số ở vị trí thứ 0, thứ 5, thứ 5 trong [12,24,35,70,88,120,155].

li = [12,24,35,70,88,120,155] li = [x for (i,x) in enumerate(li) if i not in (0,4,5)] print (li)

Bài 91:

Viết chương trình in list sau khi đã xóa giá trị 24 trong [12,24,35,24,88,120,155].

Sử dụng phương thức xóa của list để xóa giá trị.

li = [12,24,35,24,88,120,155] #Code by chúng tôi li = [x for x in li if x!=24] print (li)

Bài 92:

[12, 35, 88, 120, 155]

Với 2 list cho trước: [1,3,6,78,35,55] và [12,24,35,24,88,120,155], viết chương trình để tạo list có phần tử là giao của 2 list đã cho.

Sử dụng set() và “&=” để thiết lập điểm giao.

list1=set([12,3,6,78,35,55,120]) list2=set([12,24,35,24,88,120,155]) # Code by chúng tôi list1 &= list2 li=list(list1) print (li)

Bài 93:

Viết chương trình in list từ list [12,24,35,24,88,120,155,88,120,155], sau khi đã xóa hết các giá trị trùng nhau.

Sử dụng set() để lưu trữ các giá trị không bị trùng lặp.

def xoaTrung( li ): list_moi=[] xem = set() for i in li: if i not in xem: chúng tôi i ) list_moi.append(i) # Code by chúng tôi return list_moi li=[12,12,15,24,35,35,24,88,120,155,88,120,155] print ("List sau khi xóa giá trị trùng là:",xoaTrung(li))

Bài 94:

List sau khi xóa giá trị trùng là: [12, 15, 24, 35, 88, 120, 155]

Định nghĩa class Nguoi và 2 class con của nó: Nam, Nu. Tất cả các class có method “getGender” có thể in “Nam” cho class Nam và “Nữ” cho class Nu.

Sử dụng Subclass(Parentclass) để định nghĩa 1 class con.

class Nguoi(object): def getGender(self): return "Unknown" class Nam(Nguoi): def getGender(self): return "Nam" # Code by chúng tôi class Nu(Nguoi): def getGender(self): return "Nữ" aNam = Nam() aNu= Nu() print (aNam.getGender()) print (aNu.getGender())

Viết chương trình đếm và in số ký tự của chuỗi do người dùng nhập vào.

Ví dụ:

Bài 95:

Nếu chuỗi nhập vào là chúng tôi thì đầu ra sẽ là:

Sử dụng dict để lưu trữ các cặp key/value.

Sử dụng dict.get() để tra cứu key với giá trị mặc định.

dic = {} chuoi=input("Nhập chuỗi cần đếm ký tự: ") # Code by chúng tôi for c in chuoi: dic[c] = dic.get(c,0)+1 print ('n'.join(['%s,%s' % (k, v) for k, v in dic.items()])) Nhập chuỗi cần đếm ký tự: chúng tôi q,1 u,1 a,2 n,2 t,1 r,1 i,1 m,2 g,1 .,1 c,1 o,1

Viết chương trình nhận chuỗi đầu vào từ giao diện điều khiển và in nó theo thứ tự ngược lại.

Bài 96:

Ví dụ nếu chuỗi nhập vào là:

Thì kết quả đầu ra là:

Sử dụng list[::-1] để lặp list theo thứ tự ngược lại.

chuoi=input("Nhập chuỗi vào đây: ") # Code by chúng tôi chuoi = chuoi[::-1] print (chuoi)

Viết chương trình nhận chuỗi do người dùng nhập vào và in các ký tự có chỉ số chẵn.

Bài 97:

Ví dụ: Nếu chuỗi sau được nhập vào: q1u2a3n4t5r6i7m8a9n4g5.6c7o8m, thì đầu ra sẽ là: quantrimang.com.

Sử dụng list[::2] để lặp list cách 2 vị trí.

chuoi=input("Nhập chuỗi vào đây: ") # Code by chúng tôi chuoi = chuoi[::2] print (chuoi) Nhập chuỗi vào đây: q1u2a3n4t5r6i7m8a9n4g5.6c7o8m quantrimang.com

Bài 98:

Viết chương trình in tất cả các hoán vị của [1,2,3].

Sử dụng itertools.permutations() để lấy hết các hoán vị của list.

import itertools print (list(itertools.permutations([1,2,3]))) # Code by Quantrimang.com [(1, 2, 3), (1, 3, 2), (2, 1, 3), (2, 3, 1), (3, 1, 2), (3, 2, 1)]

Viết chương trình để giải 1 câu đố cổ của Trung Quốc: Một trang trại thỏ và gà có 35 đầu, 94 chân, hỏi số thỏ và gà là bao nhiêu?

Sử dụng vòng lặp for để lặp qua tất cả các giả thuyết có thể.

def giai(dau,chan): klg='Không có dáp án phù hợp!' for i in range(dau+1): j=dau-i if 2*i+4*j==chan: return i,j return klg,klg # Code by chúng tôi dau=35 chan=94 dap_an=giai(dau,chan) print (dap_an)

Tổng Hợp Bài Tập Javascript Có Code Mẫu

Nhằm giúp cho việc học JavaScript của các bạn dễ dàng hơn, chúng tôi đã tổng hợp một số bài tập JavaScript có kèm theo lời giải mẫu để các bạn thực hành.

Bài tập JavaScript 1: Cho người dùng nhập vào tên và tuổi. Hãy viết lại tên và tuổi của người đó ra màn hình bằng hàm document.write, trong đó tên có màu đậm, tuổi được gạch chân.

Giải mẫu

Bài tập JavaScript 2: Tạo một nút nhấn (button) có name là welcome, value là ” Welcome “. Một textbox có tên là msg, value = “Welcome to”.

Hướng dẫn: Sử dụng phương thức (hàm) write của đối tượng document để tạo.

Lưu ý quan trọng: Trong JavaScript, một hằng xâu được bao bởi cặp nháy đơn hoặc nháy kép, ví dụ các xâu: ‘nháy đơn’, “nháy kép” là những xâu hợp lệ, tuy nhiên bạn viết: ‘abc” hay “xyz’ là những xâu không hợp lệ. Trong trường hợp bạn muốn in chính bản thân dấu nháy đơn hoặc nháy kép ra màn hình thì bạn đặt trước nó một ký tự , ví dụ bạn có thể in ra màn hình dòng chữ: Women’s day ra màn hình bằng hai hàm alert và document theo các cách sau đây: alert(“Women’s day”), document.write(‘Women’s day’); alert(“Women”s day”); alert(‘Women”s day’); v.v…

Bài tập JavaScript 4: Lấy (đọc) giá trị của một phần tử HTML

Ví dụ: msg.value cho ta giá trị của text tên là msg.

Bài tập JavaScript 5: Khai báo hàm trong JavaScript và cách liên kết nút nhấn với một hàm

Tạo 2 phần tử như ví dụ 2, khi người dùng nhấn nút thì gọi một hàm có tên là HienThi, hàm hiển thị có chức năng hiển thị nội dung trong text có tên là msg ở trên.

Giải mẫu:

Lưu ý: Trong C, để khai báo một hàm thường bạn viết, ví dụ: int HienThi() v…v.. Tuy nhiên, với JavaScript có hơi khác tí chút, thay vào đó bạn viết function HienThi().

Bài tập JavaScript 6: Minh hoạ cách khai báo và sử dụng đối tượng Date trong JavaScript để hiển thị ngày giờ của hệ thống.

Hãy hiển thị ngày và giờ của hệ thống máy tính khi trang Web được nạp. Thông tin hiển thị ra có dạng như sau:

Sử dụng đối tượng Date và sử dụng các hàm lấy thứ, ngày, tháng, năm để in thông tin ra màn hình. Chú ý đến các hàm tính tháng, ngày trong tuần bị hụt một đơn vị.

Hiển thị Giờ và phút trong thanh tiêu đề của cửa sổ khi trang Web được nạp.

Cho người dùng nhập vào năm sinh của họ, sau đó hiển thị tuổi tương ứng.

Sử dụng đối tượng Date để lấy năm hiện tại. Tuổi sẽ bằng năm hiện tại trừ đi năm sinh vừa nhập vào.

Viết đoạn Script cho người dùng nhập vào một số nguyên. Nếu người dùng nhập số 1 thì mở trang Web https://quantrimang.com, nếu nhập số 2 thì mở trang https://download.com.vn, nếu nhập số 3 thì mở trang https://vndoc.com, còn nếu nhập một số khác với 1, 2 hay 3 thì mở trang https://meta.vn.

Để mở một trang Web bất kỳ trong cửa sổ hiện hành bạn viết như sau:

window.open(“Địa chỉ của trang cần mở”).

Như vậy, để giải quyết yêu cầu của bài toán trên, bạn cần cho người dùng nhập vào một số và sử dụng cấu trúc switch để kiểm tra và mở trang web tương ứng.

Minh hoạ việc khai báo và sử dụng biến đối tượng Array để lưu trữ danh sách và cách sử dụng các hàm của đối tượng Array như hàm sort và vòng lặp chúng tôi

Cho người dùng nhập vào danh sách tên của một lớp, sau đó sắp xếp theo vần Alphabet rồi hiển thị danh sách đã sắp xếp đó ra màn hình, mỗi người trên một dòng.

Nhận xét: Nếu muốn sắp theo chiều giảm dần thì sau khi sort bạn gọi hàm reverse.

“Các câu lệnh JavaScript” ở đây là bất kỳ câu lệnh JavaScript nào và chúng phải được cách nhau bởi dấu chấm phảy. Ngoài ra, các câu lệnh phải đặt trong cặp dấu nháy kép (Hoặc nháy đơn).

2: Thực hiện câu lệnh document.write(‘Welcome to JavaScript’);

3: Thực hiện NHIỀU câu lệnh JavaScript

4: Thực hiện nhiều câu lệnh JavaScript và có lời gọi đến hàm KiemTra(Tuoi)

5: Thực hiện câu lệnh gọi hàm KiemTra().

Để lấy giá trị của một phần tử HTML nào đó, chúng ta viết

– Hoten.value, DangKy.value, GioiTinh.value, Password.value v.v…

Khi muốn lấy giá trị của phần tử nào đó bằng JavaScript thì bạn phải đặt cho nó một cái tên, như ví dụ ở trên, để lấy giá trị trong hộp text ta đã đặt cho hộp text này tên (name) là HoTen.

Để thay đổi giá trị một thuộc tính nào đó của phần tử HTML, bạn viết theo cách sau:

HoTen.value = “Đây là văn bản mới”, DangKy.value = “Sign Up now”, v.v…

Lưu ý: – Giá trị lưu trong hộp text luôn là một xâu, do vậy để thực hiện phép cộng được đúng, bạn cần phải chuyển giá trị sang dạng số bằng hàm parseFloat (Hoặc parseInt) như ở trên.

– Việc thay đổi này có thể áp dụng cho các phần tử khác như button, checkbox, v.v…

Thuộc tính màu nền của tài liệu được lưu trong thuộc tính bgColor của đối tượng document. Thuộc tính này có thể thay đổi được.

Tạo một danh sách lựa chọn gồm có 4 màu: red, blue, brown và lavender. Khi người dùng chọn một màu thì màu nền của tài liệu sẽ thay đổi tương ứng.

Ở ví dụ trên, hàm kiểm tra sẽ được gọi mỗi khi sự kiện nhấn phím (onKeyUp) xuất hiện hay nói cách khác là khi người dùng gõ thêm một ký tự vào trong textarea.

: Khi người dùng di chuyển chuột vào phần tử nào thì hiển thị thông báo tương ứng dưới thanh trạng thái. Ví dụ nếu người sử dụng di chuyển chuột qua nút nhấn “Gửi” thì thanh trạng thái sẽ là “Bạn đang di chuyển chuột vào nút”…

Tạo 3 textbox, có tên lần lượt là: SoLuong (Số lượng), DonGia (Đơn giá) và ThanhTien (Thành tiền);

Khi người dùng nhập giá trị trong DonGia thì kết quả sẽ được cập nhật ngay trong ThanhTien.

Hướng dẫn: Khi người dùng nhập giá trị trong textbox DonGia bằng cách nhấn các phím số thì sự kiện nhấn phím xuất hiện (sự kiện nhấn phím có tên là onKeyUp), do vậy ta sẽ viết các lệnh đáp ứng với sự kiện này. Các lệnh ở đây chỉ có một do vậy nên đặt ngay trong định nghĩa thẻ, như sau:

Các thẻ có thuộc tính type = “hidden” sẽ không được hiển thị trong trình duyệt, tuy nhiên khi chúng ta “Submit” thì các thông tin trong đó cũng được gửi đi.

Bài tập JavaScript 26: Tạo một dòng văn bản “Welcome to CSS” có font chữ là Arial, in nghiêng và kích thước font chữ là 16 point.

Bài tập JavaScript 27: Tạo một textbox với màu nền là màu tím (magenta).

-Khi ta đặt là repeat-x thì ta có một dãy ảnh được xếp liên tiếp theo chiều ngang

-Khi ta đặt là repeat-y thì ta có một dãy ảnh được xếp liên tiếp theo chiều dọc

Khi muốn áp dụng các kiểu cho một số phần tử các bạn chỉ cần viết : style=”Tên_Thuộc_tính : Giá_Trị;” trong định nghĩa thẻ. Trong đó cặp “Tên_Thuộc_tính : Giá_Trị;” có thể viết như cột ví dụ đã chỉ ra ở các bảng trên.

Nội dung trang Web của chúng ta bây giờ sẽ là:

Yêu cầu: Tạo một liên kết đến trang https://quantrimang.com/ bằng thẻ H2. Có màu nền là xanh, màu chữ là trắng. Khi chuột di chuyển đến thì đổi màu nền thành màu đỏ.

Hướng dẫn: Để đổi màu nền thành đỏ đối với thẻ H2 (hoặc thẻ bất kỳ) bạn viết:

document.all.LienKet.style.backgroundColor = ‘red’

Trong đó LienKet là giá trị của thuộc tính ID.

J Câu lệnh JavaScript này đặt ở đâu?

@ Theo như yêu cầu đầu bài là: “Khi chuột di chuyển…”. Do vậy câu lệnh này sẽ được đặt trong sự kiện di chuyển chuột đến (có tên là onMouseMove)

Yêu cầu: Như bài 30, và thêm yêu cầu sau: Khi người dùng di chuyển chuột ra khỏi phần tử H2 đó thì đặt lại màu nền là màu xanh.

Hướng dẫn: Viết lệnh thay đổi màu nền thành xanh trong sự kiện di chuột ra ngoài.

Tạo một tầng gồm có dòng chữ “Welcome to LAYER!”, màu đỏ, kích thước 40pt, font chữ Arial. Toàn bộ dòng chữ này có độ rộng (width) là 300px.

Hướng dẫn: Việc tạo tầng và đặt các thuộc tính có thể đặt thông qua định nghĩa STYLE.

Để ẩn hay hiện tầng bạn viết:

document.all.LienKet.style.visibility = ‘visible’ (hoặc ‘hidden’)

Bài tập tự giải 34′: Tạo một hệ thống menu phân tầng như hình:

Minh hoạ thay đổi thuộc tính innerHTML

Minh hoạ thay thế thuộc tính outerText.

Để mở một trang web trong một cửa sổ mới, bạn viết: window.open(“Địa chỉ URL của trang cần mở”, “_Blank”)

Thay thế nút bằng một dòng chữ thông qua thay đổi thuộc tính outerText của nút.

Minh họa việc định vị động trong IE

Yêu cầu: Tạo một nút có nhãn là “Đăng ký”. Khi chuột di chuyển trong nút này thì hiển thị dòng nhắc là “Đăng ký địa chỉ email mới” có màu nền là vàng tại vị trí của con chuột. Khi chuột di chuyển ra ngoài thì dòng nhắc ẩn đi.

Hướng dẫn: Bạn tạo ra một tầng chứa dòng chữ “Đăng ký hòm thư mới” có màu nền là vàng. Khi chuột di chuyển đến (onMouseMove) thì đặt thuộc tính visibility là ‘visible’ để cho hiện tầng đó và khi di chuyển chuột ra ngoài (onMouseOut) thì đặt lại thuộc tính visibility là ‘hidden’ để ẩn tầng. Lưu ý, vị trí của chuột được lưu trong thuộc tính event.clientX và event.clientY. Bạn sẽ gán vị trí này của chuột cho 2 thuộc tính pixelLeft và pixelTop để định vị tầng.

Yêu cầu: Tạo một tầng có tên là Tang1, một nút nhấn có nhãn là “Load trang Web” và một hộp text có tên là DiaChi. Khi người dùng nhập địa chỉ vào trong hộp text và nhấn nút “Load trang web” thì nội dung của trang đó sẽ được nạp vào tầng Tang1.

– Dùng thẻ LAYER để tạo tầng và đặt tên cho nó là Tang1

– Viết trong sự kiện onCLick của nút “Nạp trang web” câu lệnh nạp tài liệu vào tầng. Cú pháp nạp tài liệu vào một tầng trong Netscape như sau:

document.Tang1.src = document.form1.DiaChi.value

BÀI TẬP JAVASCRIPT TỰ GIẢI

Tạo một thẻ H1, màu chữ xanh dùng để hiển thị thời gian của hệ thống (gồm giờ:phút:giây).

Gợi ý: Sử dụng 2 hàm setInterval để gọi 2 hàm di chuyển 2 tầng.

Tạo 3 tầng (Trong Netscape), mỗi tầng nạp một trang tương ứng như sau: https://vndoc.com, https://quantrimang.com và https://meta.vn.

Bài số 8: Hãy tạo ra trang Web có giao diện như sau:

Khi người dùng di chuyển chuột đến phần tử nào thì hiển thị dòng nhắc dưới thanh trạng thái để hướng dẫn người dùng. Ví dụ: Khi người dùng đưa chuột vào trong ô textbox User Name thì thì hiển thị dưới thanh trạng thái là: “Nhập mã người dùng”, hay khi người đưa chuột đến nút “Đăng ký” thì hiển thị dòng nhắc: “Gửi thông tin đi để đăng ký” v.v…

Nút đăng ký nên là nút thường, tức là tạo bằng thẻ:

Khi gửi thông tin đi, cần kiểm tra xem nội dung người dùng gõ trong ô Password với textbox trong ô “Gõ lại password” có giống nhau hay không? Nếu bằng nhau thì mới gửi (Submit) đi, còn nếu không bằng thì thông báo là “Password phải giống nhau”

Khi gửi thông tin, cần kiểm tra ngày sinh, tháng sinh phải hợp lệ. (Tức ngày phải nhỏ hơn 32, tháng phải nhỏ hơn 13)

Nút đăng ký nên là nút thường, tức là tạo bằng thẻ:

Bài số 10:

Làm tương tự bài tập 7 và 8, nhưng thêm yêu cầu: Khi người dùng nhập hoặc số lượng, hoặc đơn giá thì hãy tính luôn ô textbox thành tiền.

Hướng dẫn: Viết lệnh tính thành tiền trong cả 2 sự kiện onKeyUp của cả hai textbox số lượng và textbox đơn giá.

Bài số 11: Hãy tạo một menu đặt theo chiều dọc gồm 4 mục như sau:

Yêu cầu: 4 mục này có màu nền là xanh, màu chữ là vàng (yellow). Khi người dùng di chuyển đến mục nào thì mục đó có màu nền là màu đỏ. Khi di chuyển chuột ra khỏi thì màu nền trở lại màu xanh.

Gợi ý: Làm tương tự như bài tập mẫu, nhưng tạo ra 4 thẻ H2.

Bài số 11: Hãy tạo một menu gồm 4 mục như ở trên nhưng theo chiều ngang,

Bài Tập C/C++ Có Lời Giải Pdf

Chào tất cả các bạn, hôm nay mình xin chia sẻ tới các bạn bộ bài tập C/C++ có lời giải được lưu trong file pdf. Đây là bộ đề thi bộ môn tin học của của các trường đại học sử dụng ngôn ngữ C/C++. Nếu bạn chỉ có nhu cầu download bộ “bài tập C/C++ có lời giải” thì vui lòng kéo xuống cuối bài viết này. Tiếp sau đây mình sẽ giới thiệu qua về bộ bài tập này.

Nội dung của bài tập C/C++ có lời giải Trường Công nghệ Thông tin Thành phố Hồ Chí Minh chi nhánh Hà Nội

Đề thi………………..3 Bài 1: Giải và biện luận phương trình bậc 2 (tính cả trường hợp suy biến)……3 Bài 2: Viết chương trình cho phép nhập n từ bàn phím (nếu n <= 0 thì bắt nhập lại) . Tính tổng s = 1^2 + 2^2+…. + n^2. …………………….3 Bài 3: Nhập chuỗi s từ bàn phím. Kiểm tra tính đối xứng (nếu có đếm số ký tự giống nhau). . 3 Lời giải………………………..3 Bài 1:………………………………….3 Bài 2…………………………4 Bài 3:…………………………………4

Trường đại học Bách Khoa Đà Nẵng Đề thi đại học công nghệ, đại học quốc gia

Đề thi………………………..13 Bài 1: Sử dụng khuôn hình hàm tìm giá trị lớn nhất của 1 mảng;………..13 Bài 2: Nhập dữ liệu và các phương thúc của số phức , nhap , in, tính modull và sử dụng toán tử operator < để so sánh số phức; ham main; nhập 1 dãy số phức sau đó in ra số phức nhỏ nhất………….13 Lời giải…………………………………13 Bài 1…………………………………………………………………13 Bài 2………………………………………………………………..14

Đại Học Đà Lạt

Đề thi……………………..16 Bai 4: – Các số 0 đầu mảng- Các số âm ở giữa mảng và có thứ tự giảm. – Các số dương cuối mảng và có thứ tự tăng…………………….16 Lời giải………………………………………………………….16 Bài 4……………………………………………………..16

Đề thi Tin đai cương 2010 Đại học Bách Khoa Hà Nội

Đề thi……………………………………………………………..18 Tự luận……………………………………………………18 Lời giải………………………………………………………………..18

Download bộ bài tập C/C++ có lời giải PDF

Một số hình ảnh bộ đề thi C/C++ có lời giải:

Link download “Bài tập C/C++ có lời giải”:

Sáng lập cộng đồng Lập Trình Không Khó với mong muốn giúp đỡ các bạn trẻ trên con đường trở thành những lập trình viên tương lai. Tất cả những gì tôi viết ra đây chỉ đơn giản là sở thích ghi lại các kiến thức mà tôi tích lũy được.

Bài Tập C Có Lời Giải

Các cấp độ bài tập C

Bài này cung cấp cho bạn danh sách các bài tập C có lời giải ở các cấp độ khác nhau để bạn thực hành khi học ngôn ngữ lập trình C:

Bài tập C kinh điển.

Bài tập C cơ bản.

Bài tập vòng lặp trong C.

Bài tập C về mảng một chiều và mảng 2 chiều (ma trận).

Bài tập C về chuỗi trong C.

Bài tập C về đệ quy.

Bài tập C về con trỏ.

Bài tập C về các thuật toán sắp xếp.

Bài tập C về Struct (Cấu trúc).

Bài tập C về danh sách liên kết (Linked List).

Bài tập C về đọc ghi file.

1. Bài tập C kinh điển

Bài 01: Viết một chương trình C in ra dãy số Fibonacci

Code mẫu: In dãy số Fibonacci trong C không sử dụng đệ quy.

/** * Tinh day so Fibonacci KHONG dung phuong phap de quy * * @author viettuts.vn */ /** * Tinh so Fibonacci thu n * * @param n: chi so cua so Fibonacci tinh tu 0 * vd: F0 = 0, F1 = 1, F2 = 1, F3 = 2 * @return So Fibonacci thu n */ int fibonacci(int n) { int f0 = 0; int f1 = 1; int fn = 1; int i; if (n < 0) { return -1; return n; } else { for (i = 2; i < n; i++) { f0 = f1; f1 = fn; fn = f0 + f1; } } return fn; } /** * Ham main */ int main() { int i; printf("10 so dau tien cua day so Fibonacci: n"); for (i = 0; i < 10; i++) { printf("%d ", fibonacci(i)); } }

Kết quả:

10 so dau tien cua day so Fibonacci: 0 1 1 2 3 5 8 13 21 34

Bài 02: Viết một chương tình C kiểm tra số nguyên tố.

/** * check so nguyen to trong C * * @author viettuts.vn * @param n: so nguyen duong * @return 1 la so nguyen so, * 0 khong la so nguyen to */ int isPrimeNumber(int n) { if (n < 2) { return 0; } int squareRoot = (int) sqrt(n); int i; for (i = 2; i <= squareRoot; i++) { if (n % i == 0) { return 0; } } return 1; } /** * Ham main */ int main() { int i; printf("Cac so nguyen to nho hon 100 la: n"); for (i = 0; i < 100; i++) { if (isPrimeNumber(i)) { printf("%d ", i); } } }

Kết quả:

Cac so nguyen to nho hon 100 la: 2 3 5 7 11 13 17 19 23 29 31 37 41 43 47 53 59 61 67 71 73 79 83 89 97

Bài 03: Viết một chương trình C tính giai thừa của một số bằng cách không sử dụng đệ quy và có sử dụng đệ quy.

Code mẫu: Tính giai thừa trong C không sử dụng đệ quy.

/** * Tinh giai thua KHONG dung phuong phap de quy * * @author viettuts.vn */ /** * tinh giai thua * * @author viettuts.vn * @param n: so nguyen duong * @return giai thua cua so n */ long tinhGiaithua(int n) { int i; long giai_thua = 1; return giai_thua; } else { for (i = 2; i <= n; i++) { giai_thua *= i; } return giai_thua; } } /** * Ham main */ int main() { int a = 5; int b = 0; int c = 10; printf("Giai thua cua %d la: %d n", a, tinhGiaithua(a)); printf("Giai thua cua %d la: %d n", b, tinhGiaithua(b)); printf("Giai thua cua %d la: %d", c, tinhGiaithua(c)); }

Kết quả:

Giai thua cua 5 la: 120 Giai thua cua 0 la: 1 Giai thua cua 10 la: 3628800

Bài 04: Viết một chương trình C để chuyển đổi số nguyên N sang hệ cơ số B (2 <= B <= 32) bất kỳ.

Code mẫu: Chuyển đối hệ cơ số 10 sang hệ cơ số B

/** * Chuong trinh chuyen doi he co so trong C * Bai tap nay su dung bang ASCII de chuyen doi so nguyen thanh kieu ky tu * Link tham khao: https://vi.wikipedia.org/wiki/ASCII * * @author viettuts.vn */ const char CHAR_55 = 55; const char CHAR_48 = 48; /** * chuyen doi so nguyen n sang he co so b * * @author viettuts.vn * @param n: so nguyen * @param b: he co so */ int convertNumber(int n, int b) { printf("He co so hoac gia tri chuyen doi khong hop le!"); return 0; } int i; char arr[20]; int count = 0; int m; int remainder = n; m = remainder % b; arr[count] = (char) (m + CHAR_55); count++; } else { arr[count] = (char) (m + CHAR_48); count++; } } else { arr[count] = (char) ((remainder % b) + CHAR_48); count++; } remainder = remainder / b; } printf("%c", arr[i]); } return 1; } /** * Ham main */ int main() { int n = 12; printf("So %d trong he co so 2 = ", n); convertNumber(n, 2); printf("nSo %d trong he co so 16 = ", n); convertNumber(n, 16); return 1; }

Kết quả:

So 12 trong he co so 2 = 1100 So 12 trong he co so 16 = C 2. Bài tập C cơ bản

Danh sách bài tập:

Viết chương trình C giải phương trình bậc 2: ax2 + bx + c = 0.

Viết chương trình C tìm ước số chung lớn nhất (UCLN) và bội số chung nhỏ nhất (BCNN) của hai số a và b.

Viết chương trình C liệt kê tất cả các số nguyên tố nhỏ hơn n.

Viết chương trình C liệt kê n số nguyên tố đầu tiên.

Viết chương trình C liệt kê tất cả các số nguyên tố có 5 chữ số.

Viết chương trình C phân tích số nguyên n thành các thừa số nguyên tố. Ví dụ: 12 = 2 x 2 x 3.

Viết chương trình C tính tổng các chữ số của một số nguyên n. Ví dụ: 1234 = 1 + 2 + 3 + 4 = 10.

Viết chương trình C tìm các số thuận nghịch có 6 chữ số. Một số được gọi là số thuận nghịch nếu ta đọc từ trái sang phải hay từ phải sang trái số đó ta vẫn nhận được một số giống nhau. Ví dụ 123321 là một số thuận nghịch.

Nhập số tự nhiên n. Hãy liệt kê các số Fibonacci nhỏ hơn n là số nguyên tố.

Bài 01: Viết chương trình C giải phương trình bậc 2: ax 2 + bx + c = 0.

/** * giai phuong trinh bac 2: ax2 + bx + c = 0 * * @param a: he so bac 2 * @param b: he so bac 1 * @param c: so hang tu do */ void giaiPTBac2(float a, float b, float c) { if (a == 0) { if (b == 0) { printf("Phuong trinh vo nghiem!"); } else { printf("Phuong trinh co mot nghiem: x = %f", (-c / b)); } return; } float delta = b*b - 4*a*c; float x1; float x2; x1 = (float) ((-b + sqrt(delta)) / (2*a)); x2 = (float) ((-b - sqrt(delta)) / (2*a)); printf("Phuong trinh co 2 nghiem la: x1 = %f va x2 = %f", x1, x2); } else if (delta == 0) { x1 = (-b / (2 * a)); printf("Phong trinh co nghiem kep: x1 = x2 = %f", x1); } else { printf("Phuong trinh vo nghiem!"); } } /** * ham main */ int main() { float a, b, c; printf("Nhap he so bac 2, a = "); scanf("%f", &a); printf("Nhap he so bac 1, b = "); scanf("%f", &b); printf("Nhap so hang tu do, c = "); scanf("%f", &c); giaiPTBac2(a, b, c); return 1; }

Kết quả:

Nhap he so bac 2, a = 2 Nhap he so bac 1, b = 3 Nhap so hang tu do, c = 1 Phuong trinh co 2 nghiem la: x1 = -0.500000 va x2 = -1.000000

Bài 02: Viết chương trình C tìm ước số chung lớn nhất (USCLN) và bội số chung nhỏ nhất (BSCNN) của hai số a và b.

/** * Chuong trinh tim uoc chung lon nhat (USCLN) * va boi so chung nho nhat (BSCNN) cua 2 so a và b * * @author viettuts.vn */ /** * Tim uoc so chung lon nhat (USCLN) */ int USCLN(int a, int b) { if (b == 0) return a; return USCLN(b, a % b); } /** * Tim boi so chung nho nhat (BSCNN) */ int BSCNN(int a, int b) { return (a * b) / USCLN(a, b); } /** * Ham main */ int main() { int a, b; printf("Nhap so nguyen duong a = "); scanf("%d", &a); printf("Nhap so nguyen duong b = "); scanf("%d", &b); printf("USCLN cua %d va %d la: %d", a, b, USCLN(a, b)); printf("USCLN cua %d va %d la: %d", a, b, BSCNN(a, b)); }

Kết quả:

Nhap so nguyen duong a = 3 Nhap so nguyen duong b = 4 USCLN cua 3 va 4 la: 1 USCLN cua 3 va 4 la: 12

Bài 03: Viết chương trình C liệt kê tất cả các số nguyên tố nhỏ hơn n.

/** * Chuong liet ke cac so nguyen to nho hon n. * * @author viettuts.vn */ /** * check so nguyen to * * @author viettuts.vn * @param n: so nguyen duong * @return 1: la so nguyen so, * 0: khong la so nguyen to */ int isPrimeNumber(int n) { if (n < 2) { return 0; } int i; int squareRoot = (int) sqrt(n); for (i = 2; i <= squareRoot; i++) { if (n % i == 0) { return 0; } } return 1; } /** * Ham main */ int main() { int i, n; printf("Nhap n = "); scanf("%d", &n); printf("Tat ca cac so nguyen to nho hon %d la: n", n); printf("%d ", 2); } for (i = 3; i < n; i+=2) { if (isPrimeNumber(i) == 1) { printf("%d ", i); } } }

Kết quả:

Nhập n = 100 Tat ca cac so nguyen to nho hon 100 la: 2 3 5 7 11 13 17 19 23 29 31 37 41 43 47 53 59 61 67 71 73 79 83 89 97

Bài 04: Viết chương trình C liệt kê n số nguyên tố đầu tiên.

/** * Chuong trinh liet ke n so nguyen to dau tien. * * @author viettuts.vn */ /** * check so nguyen to * * @author viettuts.vn * @param n: so nguyen duong * @return 1: la so nguyen so, * 0: khong la so nguyen to */ int isPrimeNumber(int n) { if (n < 2) { return 0; } int i; int squareRoot = sqrt(n); for (i = 2; i <= squareRoot; i++) { if (n % i == 0) { return 0; } } return 1; } /** * Ham main */ int main() { int n; printf("Nhap n = "); scanf("%d", &n); printf("%d so nguyen to dau tien la: n", n); int dem = 0; int i = 2; while (dem < n) { if (isPrimeNumber(i)) { printf("%d ", i); dem++; } i++; } }

Kết quả:

Nhập n = 10 10 so nguyen to dau tien la: 2 3 5 7 11 13 17 19 23 29

Bài 05: Viết chương trình C liệt kê tất cả các số nguyên tố có 5 chữ số.

/** * Chuong trinh liet ke tat ca so nguyen to co 5 chu so. * * @author viettuts.vn */ /** * check so nguyen to * * @author viettuts.vn * @param n: so nguyen duong * @return 1: la so nguyen so, * 0: khong la so nguyen to */ int isPrimeNumber(int n) { if (n < 2) { return 0; } int i; int squareRoot = (int) sqrt(n); for (i = 2; i <= squareRoot; i++) { if (n % i == 0) { return 0; } } return 1; } /** * Ham main */ int main() { int count = 0; int i; printf("Liet ke tat ca cac so co 5 chu so:"); for (i = 10001; i < 99999; i+=2) { if (isPrimeNumber(i)) { printf("%dn", i); count++; } } printf("Tong cac so nguyen to co 5 chu so la: %d", count); }

Kết quả:

Liet ke tat ca cac so co 5 chu so: 10007 10009 10037 ... 99971 99989 99991 Tong cac so nguyen to co 5 chu so la: 8363

Bài 06: Viết chương trình C phân tích số nguyên n thành các thừa số nguyên tố. Ví dụ: 12 = 2 x 2 x 3.

/** * Chuong trinh phan tich so nguyen n thanh tich cac thua so nguyen to * Vi du: 12 = 2 x 2 x 3. * * @author viettuts.vn */ /** * Phan tich so nguyen n thanh tich cac thua so nguyen to */ void phanTichSoNguyen(int n) { int i = 2; int dem = 0; int a[100]; if (n % i == 0) { n = n / i; a[dem++] = i; } else { i++; } } if (dem == 0) { a[dem++] = n; } for (i = 0; i < dem - 1; i++) { printf("%d x ", a[i]); } printf("%d", a[dem - 1]); } /** * Ham main */ int main() { int n; printf("Nhap so nguyen duong n = "); scanf("%d", &n); phanTichSoNguyen(n); }

Kết quả:

Nhap so nguyen duong n = 120 2 x 2 x 2 x 3 x 5

Bài 07: Viết chương trình C tính tổng các chữ số của một số nguyên n. Ví dụ: 1234 = 1 + 2 + 3 + 4 = 10.

const int DEC_10 = 10; /** * Ham main */ int main() { int n; printf("Nhap so nguyen duong n = "); scanf("%d", &n); printf("Tong cac chu so cua %d la: %d", n, totalDigitsOfNumber(n)); } /** * Tinh tong cac chu so cua mot so nguyen duong */ int totalDigitsOfNumber(int n) { int total = 0; do { total = total + n % DEC_10; n = n / DEC_10; return total; }

Kết quả:

Nhap so nguyen duong n = 1234 Tong cac chu so cua 1234 la: 10

Bài 08: Viết chương trình C tìm các số thuận nghịch có 6 chữ số. Một số được gọi là số thuận nghịch nếu ta đọc từ trái sang phải hay từ phải sang trái số đó ta vẫn nhận được một số giống nhau. Ví dụ 123321 là một số thuận nghịch.

/** * Chuong trình li?t kê t?t c? các s? thu?n ngh?ch có 6 ch?a s?. * * @author viettuts.vn */ const int DEC_10 = 10; /** * main * * @param args */ int main() { int count = 0, i; for (i = 100000; i < 1000000; i++) { if (isThuanNghich(i)) { printf("%dn", i); count++; } } printf("Tong cac so thuan nghich co 6 chu so la: %d", count); } /** * kiem tra so thuan nghich * * @param n: so nguyen duong * @return 1: la so thuan nghich * 0: khong la so thuan nghich */ int isThuanNghich(int n) { int a[20]; int dem = 0, i; do { a[dem++] = (n % DEC_10); n = n / DEC_10; for (i = 0; i < (dem/2); i++) { if (a[i] != a[(dem - i - 1)]) { return 0; } } return 1; }

Kết quả:

100001 101101 102201 ... 997799 998899 999999 Tong cac so thuan nghich co 6 chu so la: 900

Bài 09: Nhập số tự nhiên n. Hãy liệt kê các số Fibonacci nhỏ hơn n là số nguyên tố.

/** * Chuong trinh liet ke cac so Fibonacci nho hon n la so nguyen to. * * @author viettuts.vn */ /** * Ham main */ int main() { int n; printf("Nhap so nguyen duong = "); scanf("%d", &n); printf("Cac so fibonacci nho hon %d va la so nguyen to: ", n); int i = 0; while (fibonacci(i) < n) { int fi = fibonacci(i); if (isPrimeNumber(fi)) { printf("%d ", fi); } i++; } } /** * Tinh so fibonacci thu n * * @param n: chi so cua day fibonacci tinh tu 0 * vd: F0 = 0, F1 = 1, F2 = 1, F3 = 2 * @return so fibonacci thu n */ int fibonacci(int n) { if (n < 0) { return -1; return n; } else { return fibonacci(n - 1) + fibonacci(n - 2); } } /** * check so nguyen to * * @author viettuts.vn * @param n: so nguyen duong * @return 1: la so nguyen so, * 0: khong la so nguyen to */ int isPrimeNumber(int n) { if (n < 2) { return 0; } int i; int squareRoot = sqrt(n); for (i = 2; i <= squareRoot; i++) { if (n % i == 0) { return 0; } } return 1; }

Kết quả:

Nhap so nguyen duong = 100 Cac so fibonacci nho hon 100 va la so nguyen to: 2 3 5 13 89 3. Bài tập vòng lặp trong C

Bài này tổng hợp các bài tập vòng lặp trong C giúp bạn làm quen cú pháp và cách sử dụng của các vòng lặp C cơ bản: vòng lặp for , vòng lặp while, vòng lặp do-while và vòng lặp lồng nhau.

4. Bài tập mảng trong C

Mảng là một tập hợp dữ liệu có cùng kiểu. Mảng trong C là một cấu trúc dữ liệu cơ bản và quan trọng.

5. Bài tập mảng 2 chiều trong C 5. Bài tập chuỗi trong C

Chuỗi (String) trong C là một mảng ký tự được kết thúc bởi (ký tự null).

6. Bài tập Đệ quy trong C 7. Bài tập về con trỏ (Pointer) trong C

Trước khi bắt đầu, bạn có thể xem lại một số khái niệm cơ bản về Con trỏ (Pointer) trong bài Con trỏ trong C

Con trỏ (Pointer) trong C là một biến, nó còn được gọi là locator hoặc indicator chỉ ra một địa chỉ của một giá trị.

8. Bài tập về các thuật toán sắp xếp trong C

Bạn có thể xem các giải thuật sắp xếp trong phần cấu trúc dữ liệu và giải thuật: Giải thuật sắp xếp

9. Bài tập về Struct trong C

Bạn có thể xem lại một số khái niệm cơ bản về Struct tại: Struct trong C

10. Bài tập về danh sách liên kết (linked-list) trong C

Đang cập nhật…

11. Bài tập về File I/O trong C

Bạn có thể xem lại một số chế độ được sử dụng khi mở một file trong C:

EOF trong C là gì?

Ký tự EOF, là viết tắt của End of File, xác định vị trí cuối cùng của file. Kiểm tra nếu gặp ký tự này thì tiến trình ghi dữ liệu vào file của chúng ta sẽ kết thúc.

12. Bài tập quản lý sinh viên trong C/C++

Cập nhật thông tin chi tiết về Bài Tập C++ Có Lời Giải (Code Mẫu) trên website Ictu-hanoi.edu.vn. Hy vọng nội dung bài viết sẽ đáp ứng được nhu cầu của bạn, chúng tôi sẽ thường xuyên cập nhật mới nội dung để bạn nhận được thông tin nhanh chóng và chính xác nhất. Chúc bạn một ngày tốt lành!