100 BÀI TẬP LẬP TRÌNH TỪ CƠ BẢN ĐẾN NÂNG CAO
ĐỀ
BÀI TẬP NHẬP LIỆU VÀ TOÁN TỬ CƠ BẢN
Nhập vào số n, hãy nhân n lên cho 3, rồi cộng 1 sau đó in kết quả ra màn hình
Nhập vào số n, hãy mũ 2 rồi chia cho 3, sau đó in kết quả ra màn hình
Nhập vào nhiệt độ c, in ra nhiệt độ F
Nhập vào một số nguyên a, nếu a chia hết cho 2 thì in ra True, ngược lại in ra False
Nhập vào số nguyên a, nếu a là số chia hết cho 3 và nằm trong khoảng từ 50 - 100 thì in ra True, ngược lại in ra False
Nhập vào số nguyên a, nếu a là số chia hết cho 5 nhưng KHÔNG nằm trong khoảng từ 20 - 70 thì in ra True, ngược lại in ra False
Nhập vào nguyên a và b, nếu 1 trong 2 số a và b chia hết cho 2 thì in ra True, ngược lại in ra False
Nhập vào số thực a, kiểm tra xem a có phải là số nguyên hay không, nếu có thì in ra True, ngược lại in ra False
Nhập vào số nguyên a, kiểm tra xem a có phải là số chính phương hay không, nếu có thì in ra True, ngược lại in ra False
Nhập vào lương tháng này nhận được, ta phải đưa cho vợ 90% số tiền lương đó. Hãy in ra lương ta giữ lại
Nhập vào 3 số a, b, c. In ra kết quả là tổng của ba số đó
Nhập vào 3 số a, b, c. Tính và in ra d = (a + b)^c
Nếu d là số trong khoảng từ 100 - 200 thì in ra True, ngược lại in ra False
BÀI TẬP LỆNH ĐIỀU KIỆN CƠ BẢN
Nhập vào số nguyên dương a, nếu a lớn hơn 10 thì ta in ra đây là số lớn hơn 10
Nhập vào số nguyên dương a, nếu a là số chẵn thì in ra đây là số chẵn, ngược lại in ra đây là số lẻ
Nhập vào 3 số thực dương a, b, c. Kiểm tra xem a, b, c có cấu thành độ dài của 1 tam giác được không
Từ bài số 15, nếu a, b, c cấu tạo thành được một tam giác, kiểm tra xem đó là tam giác gì (tam giác đều, tam giác vuông cân, tam giác vuông, tam giác cân hay tam giác thường)
Nhập vào 3 số a, b, c. Hãy sắp xếp 3 số a, b, c theo thứ tự tăng dần rồi in ra lại
Giải và biện luận phương trình ax + b = 0
Giải và biện luận phương trình ax^2 + bx + c = 0
Nhập tháng, năm. Hãy cho biết tháng đó có bao nhiêu ngày
Ngày vào ngày, tháng. Hãy tính và in ra xem ngày nhập vào cách ngày đầu năm bao nhiêu ngày (giả sư năm đó không phải là năm nhuận)
Nhập điểm toán, văn, anh.
Nếu điểm đúng quy tắc (trong khoảng từ 0 - 10), ta tính điểm trung bình rồi tiến hành xét:
- Nếu điểm trung bình lớn hơn hoặc bằng 8, toán hoặc văn lớn hơn hoặc bằng 8 và không có điểm nào dưới 6.5 thì in ra “Học sinh giỏi”
- Nếu không đủ điều kiện học sinh giỏi ta xét nếu điểm trung bình lớn hơn hoặc bằng 6.5, toán hoặc văn lớn hơn hoặc bằng 6.5 và không có điểm nào dưới 5 thì in ra “Học sinh khá”
- Nếu không đủ điều kiện học sinh khá ta xét nếu điểm trung bình lớn hơn hoặc bằng 5, toán hoặc văn lớn hơn hoặc bằng 5 và không có điểm nào dưới 3.5 thì in ra “Học sinh trung bình”
- Nếu không đủ điều kiện học sinh trung bình ta xét nếu điểm trung bình lớn hơn hoặc bằng 3.5, toán hoặc văn lớn hơn hoặc bằng 3.5 và không có điểm nào dưới 2 thì in ra “Học sinh yếu”
- Nếu không đủ điều kiện học sinh yếu ta in ra “Học sinh kém”
BÀI TẬP VÒNG LẶP FOR
In 10 lần chữ hello ra màn hình
In các số lẻ dương bé hơn 100
In các số chẵn chia hết cho 3 bé hơn 100
Nhập vào số nguyên dương a, in ra bảng cửu chương của a
Viết chương trình in ra hình tam giác có độ cao h được nhập từ bàn phím
Ví dụ: Ta nhập h = 4:
* * * * * *******
Nhập vào n
Tính S = 1 + 2 + 3 + 4 + … + n
Nhập vào số nguyên dương a, in toàn bộ ước của a
Nhập vào số nguyên dương a, đếm số ước của a
Nhập vào số nguyên dương a và b, in toàn bộ ước chung của a và b
Nhập vào số nguyên dương a và b, in toàn bộ ước chung của a và b
Nhập vào số nguyên dương a, kiểm tra xem a có phải là số nguyên tố hay không
BÀI TẬP VÒNG LẶP WHILE
Nhập vào số nguyên dương a, nếu nhập số âm thì yêu cầu nhập lại cho đến khi người dùng nhập đúng số dương
Nếu người dùng nhập đúng số dương thì in ra “Bạn nhập đúng quy tắc”
Nhập n
Cho S(k) = 1 + 2 + 3 + … + k
Tìm k sao cho S(k) lớn nhất nhưng nhỏ hơn n
Nhập vào A, tìm n nhỏ nhất sao cho
1 + 1/2 + 1/3 + 1/4 + ... + 1/n > A
Nhập vào một dãy số nguyên, ngưng nhập khi người dùng nhập -1.
Sau khi nhập xong, in số lớn nhất, số nhỏ nhất trong những số vừa nhập
Nhập vào số nguyên dương n, đếm xem n có bao nhiêu chữ số
Nhập vào số nguyên dương n, đếm xem n có bao nhiêu chữ số chẵn, bao nhiêu chữ số lẻ
Nhập vào số nguyên dương n, tính tổng các chữ số của n
Nhập vào một số nguyên dương n, kiểm tra xem n có phải là số dạng 2^k hay không
Dãy số fibonacci là dãy số được định nghĩa như sau: 1, 1, 2, 3, 5, 8, 13,... với số kế tiếp sẽ bằng tổng hai số trước đó
Nhập vào A, hãy tìm số trong dãy số fibonacci lớn nhất nhưng không vượt quá A
BÀI TẬP XỬ LÝ CHUỖI
Nhập vào một chuỗi, hãy đếm xem trong chuỗi có bao nhiêu từ (quy định là chuỗi không có ký tự đặc biệt, không số, không có dấu câu, chỉ có ký tự chữ và khoảng trắng)
Nhập vào một chuỗi, hãy in từ đầu tiên trong chuỗi
Nhập vào một chuỗi có dạng 3 số nguyên, mỗi số nguyên cách nhau một dấu phẩy, hãy tính tổng 3 số nguyên đó
VD:
Nhập: 3, 12, 15
Tổng: 30
Nhập vào một chuỗi, hãy đếm xem trong chuỗi có bao nhiêu ký tự in hoa, bao nhiêu ký tự in thường, bao nhiêu ký tự số
Nhập vào một chuỗi, hãy đếm xem trong chuỗi có bao nhiêu ký tự in hoa, bao nhiêu ký tự in thường, bao nhiêu ký tự số
Nhập vào một chuỗi, hãy tách toàn bộ ký tự số trong chuỗi ra rồi tính tổng của chúng
VD:
Nhập chuỗi: abd45ecf47wde3s1
Tổng: 4 + 5 + 4 + 7 + 3 + 1 = 24
Nhập vào một chuỗi, hãy tách toàn bộ con số trong chuỗi ra rồi tính tổng của chúng
VD:
Nhập chuỗi: abd45ecf47wde3s1
Tổng: 45 + 47 + 3 + 1 = 96
Nhập vào một chuỗi, kiểm tra chuỗi đó có phải là một chuỗi mật khẩu mạnh hay không (một chuỗi mật khẩu mạnh cần có ít nhất 1 ký tự đặc biệt, 1 ký tự in hoa, 1 con số, 1 chữ thường và độ dài phải lớn hơn 6)
Nhập vào một số nguyên, hãy chuyển số sang chuỗi, rồi đặt dấu chấm phân tách mỗi 3 chữ số (phân cách phần ngàn) rồi in ra màn hình
VD:
Nhập số: 375469485
Đổi sang chuỗi rồi in ra: 375.469.485
Nhập vào chuỗi a và chuỗi b
Hãy xóa chuỗi b trong chuỗi a rồi in lại chuỗi a ra màn hình (không dùng hàm replace)
Ví dụ:
Chuỗi a: "Xin chào mọi người!"
Chuỗi b: "Xin chào"
Sau khi xóa, chuỗi a: " mọi người!"
BÀI TẬP XỬ LÝ LIST
Nhập vào một list số nguyên L, tìm và in ra giá trị lớn nhất trong L
Nhập vào một list số nguyên L, nhập vào 2 số nguyên dương a và b (a < b < len(L))
Tìm và in ra số nhỏ nhất trong list từ vị trí a đến vị trí b
Nhập vào một list số nguyên L, hãy kiểm tra xem tất cả các phần tử trong mảng có bằng nhau hay không, nếu có thì in True, không có thì in False
Nhập vào một list số nguyên L, tìm và in ra giá trị dương đầu tiên của list, nếu không có giá trị dương, ta in ra -1
Nhập vào một list L, hãy tìm và in ra giá trị âm lớn nhất trong L, nếu L không có giá trị âm thì ta in 0
Nhập vào một list số nguyên L, nhập vào số nguyên x, tìm giá trị trong list xa x nhất
Nhập vào một list số nguyên L, tính giá trị trung bình của list L
Nhập vào một list số nguyên L, hãy kiểm tra xem L có được sắp xếp từ bé đến lớn hay không, nếu có thì in True, không có thì in False
Nhập vào một list số nguyên L, hãy sắp xếp list L theo thứ tự từ bé đến lớn
Nhập vào một list số nguyên L, hãy kiểm tra xem L có phải là một cấp số cộng hay không? Nếu có thì tìm và in ra công sai, nếu không có thì in ra None
Nhập vào một list số nguyên L, Hãy tìm và in ra một vị trí trong L thỏa hai điều kiện: có hai giá trị lân cận và giá trị tại vị trí đó bằng tích hai giá trị lân cận. Nếu L không tồn tại giá trị như vậy thì in ra - 1
Người ta định nghĩa một list số nguyên là list chẵn lẻ, nếu như tổng 2 phần tử bất kỳ bên trong list đều là số lẻ
Nhập vào một list số nguyên L và kiểm tra xem L có phải là list chẵn lẻ hay không
Người ta định nghĩa một list số nguyên được gọi là “dạng sóng” khi tất cả các phần tử đều lớn hơn hoặc nhỏ hơn hai phần tử xung quanh nó.
Nhập vào một list số nguyên L và kiểm tra xem L có phải là list “dạng sóng” hay không, nếu có thì ta in ra True, không có thì ta in False
Nhập vào một list số nguyên L, hãy đếm số lượng giá trị trong list thỏa tính chất: “lớn hơn tất cả các giá trị đứng đằng trước nó”
Nhập vào một list số nguyên L, hãy đưa các số chẵn trong list về đầu list, số lẻ về cuối list và các phần tử 0 nằm ở giữa
Nhập vào một list số nguyên L, hãy biến đổi L bằng cách thay đổi vị trí giữa giá trị nhỏ nhất và lớn nhất
Nhập vào một list L có các phần tử bao gồm chuỗi và số nguyên, hãy tìm và in ra chuỗi có độ dài lớn nhất và số nguyên có giá trị nhỏ nhất
Nhập vào một list L có các phần tử bao gồm chuỗi và số nguyên, hãy kiểm tra các phần tử trong L có phải là chuỗi và số xen kẽ nhau không, nếu có thì ta tiến hành tạo một list K mới có các phần tử như sau:
K[i/2] = L[i]*L[i+1] (với i chẵn)
Nhập vào một list L có các phần tử là chuỗi (các chuỗi này không có ký tự đặc biệt, dấu câu, ký tự số, chỉ có ký tự chữ cái và khoảng trắng)
Hãy tìm ra vị trí của chuỗi có nhiều từ nhất
Nhập vào một list L có các phần tử là chuỗi.
Hãy tìm ra chuỗi có vị trí ký tự in hoa lớn nhất
BÀI TẬP XÂY DỰNG HÀM
Viết hàm đưa vào 2 số nguyên, số nào lớn hơn thì in bảng cửu chương của số đó
Viết hàm đưa vào 1 số nguyên a, kiểm tra xem a có phải là số nguyên tố hay không
Viết hàm đưa vào 1 số nguyên a, kiểm tra xem a có phải là số Armstrong hay không
Viết hàm đưa vào 1 list số nguyên, tìm và trả về vị trí có giá trị lớn nhất trong list
Viết hàm đưa vào một list số nguyên và một số nguyên dương k. Hãy tìm và trả về vị trí của phần tử đầu tiên có giá trị k trong list số nguyên, nếu không có thì trả về -1
Viết hàm đưa vào 1 list có các phần tử là chuỗi, tìm và trả về chuỗi ngắn nhất trong list
Viết hàm đưa vào 1 list số nguyên L và 1 số nguyên dương a. Hãy tính và trả về giá trị trung bình của a phần tử đầu tiên trong L
Viết hàm đưa vào 1 list số nguyên L và 1 số nguyên dương a. Hãy tìm và trả về một list mới có số phần tử là a, giá trị các phần tử là các số nguyên tố tìm được trong list L
Viết hàm đưa vào 1 list số nguyên L và 1 số nguyên dương a. Hãy tìm và trả về giá trị lớn thứ a trong list L (nếu a = 1 thì tìm giá trị lớn nhất, a = 2 thì tìm giá trị lớn nhì, a = 3 thì tìm giá trị lớn ba,...)
BÀI TẬP XỬ LÝ DICTIONARY
Viết hàm đưa vào 1 dictionary có các phần tử có giá trị là số nguyên, tìm và trả về key có giá trị lớn nhất
Viết hàm đưa vào 1 dictionary có các phần tử có key là chuỗi, tìm và trả về giá trị của key có độ dài lớn nhất
Viết hàm có tham số đầu vào là một list L có các phần tử là chuỗi. Hãy tạo ra một dictionary D mã hóa, với mỗi một phần tử trong L được mã hóa thành một con số (theo thứ tự từ 0 tăng dần lên 1 đơn vị). Sau đó trả về list đã được mã hóa
Ví dụ:
Cho
L = ["đen","vàng","xanh","vàng","xanh","đỏ","hồng"]
Xây dựng dictionary mã hóa:
D = {'đen':0,'vàng':1,'xanh':2,'đỏ':3,'hồng':4}
Trả về List mã hóa:
L_mahoa = [0, 1, 2, 1, 2, 3, 4]
Viết hàm có tham số đầu vào là một dictionary, hãy tạo một dictionary mới hoán đổi giá trị và key của dictionary đầu vào, rồi trả về dicionary mới đó. Nếu sau khi hoán đổi có 2 key trùng nhau (do dictionary đầu vào có 2 giá trị trùng nhau), hàm trả về None
BÀI TẬP LUYỆN TẬP & ỨNG DỤNG
Một nhà hàng có các món ăn: Gà rán, hamburger, cocacola
- Giá của gà rán là: 30.000đ
- Giá của hamburger là: 25.000đ
- Giá của cocacola là: 10.000đ
Yêu cầu người dùng nhập vào số lượng từng món ăn.
Sau đó in ra hóa đơn theo dạng như sau:
Chào mừng các bạn đến với nhà hàng thức ăn nhanh! Mời bạn nhập số lượng từng món ăn: Gà rán: 2 Hamburger: 3 Cocacola: 5 Hóa đơn: Gà rán 30.000đ x 2 Hamburger 25.000đ x 3 Cocacola 10.000đ x 5 Tổng: Gà rán 60.000đ Hamburger 75.000đ Cocacola 50.000đ Tổng trước thuế 185.000đ Thuế(5%) 9.250đ Tổng sau thuế 194.250đ
Phần bên trái có số ký tự là 20 ký tự
Viết hàm cho giá trị đầu vào là list số nguyên dương L và số nguyên dương k. Hãy tạo và trả về một list L_kq có các phần tử là giá trị của phần tử xuất hiện nhiều hơn k lần trong list L theo thứ tự tăng dần
Viết hàm cho giá trị đầu vào là list số nguyên dương L và số nguyên dương k. Tìm và trả về đoạn list dài nhất trong L có giá trị trung bình là k
Một người dùng số tiền là U đô-la và V Euro để mua một loại nguyên liệu sản xuất.
Có N công ty nước ngoài bán nguyên liệu trên được đánh số từ 1 đến N. Công ty thứ i có giá bán Ai đô la/1 kg nguyên liệu và Bi Euro/1 kg nguyên liệu.
Tuy nhiên, tại mỗi công ty chỉ bán nguyên liệu cho một khách hàng hoặc theo đô-la, hoặc theo Euro.
Hãy giúp người đó tìm cách chọn ra 2 công ty để mua hàng sao cho số lượng nguyên liệu sản xuất có thể mua được là nhiều nhất.
Nhập vào: U, V và List A và List B
In ra: Số lượng nguyên liệu S (kg) người đó mua được với 2 chữ số thập phân.
Phỏng đoán COLLATZ
Giả sử ta có một số n
Phỏng đoán COLLATZ hoạt động như sau:
Nếu n là số chẵn, thì ta chia n cho 2 (n/2)
Nếu n là số lẻ, thì ta nhân n cho 3 rồi + 1 (3n + 1)
Phỏng đoán hoạt động cho đến khi nào n = 1
Yêu cầu:
Nhập vào số nguyên dương m, hãy in ra dãy phỏng đoán COLLATZ từ 1 đến m (mỗi một phỏng đoán ta in trên 1 dòng, mỗi một số cách nhau một dấu phẩy)
Ví dụ:
Nhập: m = 6
In ra:
1 2,1 3,10,5,16,8,4,2,1 4,2,1 5,16,8,4,2,1 6,3,10,5,16,8,4,2,1
Một khách sạn có N phòng đôi được đánh số từ 1 đến N và M đoàn khách.
Với mỗi đoàn khách, ta xếp mỗi cặp khách của đoàn vào một phòng trống theo thứ tự phòng tăng dần.
Nếu đoàn khách có số người lẻ thì người khách cuối cùng được xếp vào một phòng trống tiếp theo.
Nếu đã hết phòng còn trống thì ta sẽ xếp khách vào những phòng mới chỉ có 1 khách theo thứ tự phòng tăng dần.
In ra số khách của mỗi phòng sau khi xếp.
Giả sử không có 2 đoàn khách nào đến cùng một lúc.
Ví dụ 1:
N = 7, M = 3
doankhach = [3,7,3]
Ta in: 2, 2, 2, 2, 2, 1, 2
Ví dụ 2:
N = 5, M = 3
doankhach = [2,3,2]
Ta in: 2, 2, 1, 2, 0
BÀI TẬP XỬ LÝ ĐỌC GHI FILE
File 2to10.inp là file chứa các số nhị phân (mỗi dòng 1 số), hãy chuyển các số nhị phân đó sang số thập phân rồi lưu lại vào file 2to10.out (mỗi dòng 1 số)
VD
2to10.inp |
2to10.out |
0011 111110000011111 1001010100000010111110001111111111 |
3 31775 9999999999 |
Hãy phân tích một số tự nhiên thành các thừa số nguyên tố
File thuaso.inp:
- Chứa các số tự nhiên lớn hơn 1(mỗi số cách nhau một dòng)
File thuaso.out:
- Kết quả phân tích từng số trong file thuaso.inp, mỗi một dòng tương ứng với kết quả tách được được từ trong file thuaso.inp, các thừa số cách nhau bằng một khoảng trắng
VD:
thuaso.inp | thuaso.out |
2 8 10 15 100 101 10250 |
2 2 2 2 2 5 3 5 2 2 5 5 101 2 5 5 5 41 |
Cho một chuỗi ký tự S (gồm chữ và số). Hãy viết chương trình tách chữ và số thành hai chuỗi riêng biệt.
File chuoi.inp chứa duy nhất 1 chuỗi S
Hãy tách và ghi vào file chuoi.out 2 dòng, dòng thứ nhất ghi chuỗi ký tự chữ, dòng thứ hai ghi chuỗi ký tự số.
Nếu như chuỗi nào rỗng thì ghi dấu trừ ‘-’.
VD1:
chuoi.inp | chuoi.out |
a1B2c34d | aBcd 1234 |
VD2:
chuoi.inp | chuoi.out |
abghcGGG | abghcGGG - |
Cho một dãy số 1, 1, 1, 2, 3, 4, 6,... (quy luật a[i] = a[i - 1] + a[i - 3])
Với a[1] = 1, a[2] = 1, a[3] = 1 (3 số đầu tiên)
File dayso.inp chứa các số nguyên k (k < 1000), mỗi dòng 1 số
Hãy tìm a[k] trong dãy số và ghi vào file dayso.out
VD:
dayso.inp |
dayso.out |
3 10 50 101 |
1 19 83316385 24382819596721629 |
Hai số được coi là bạn của nhau khi tổng các ước số (ngoại trừ chính nó) của số này bằng số kia và ngược lại, cụ thể: tổng ước số của M = N và tổng ước số của N = M thì M và N là bạn
Trong file soban.inp là số K, hãy liệt kê các cặp số M N (với 1 ≤ M < N ≤ K) và ghi vào file soban.out (mỗi cặp một dòng)
VD:
soban.inp | soban.out |
3000 |
220 284 1184 1210 2620 2924 |
Cho N (N ≤ 100) điểm trên hệ trục tọa độ Oxy, hãy đếm xem có bao nhiêu tam giác cân được tạo thành từ các điểm đó.
File tgcan.inp:
- Dòng đầu tiên trong file chứa số N
- N dòng tiếp theo chứa các cặp tọa độ các điểm (mỗi dòng một cặp, mỗi số cách nhau một khoảng trắng)
Ghi vào file tgcan.out số lượng tam giác cân tạo được
VD:
tgcan.inp | tgcan.out |
4 0 0 1 0 2 0 1 1 |
3 |
Một doanh nhân, sau khi thực hiện mua bán N (N ≤ 100) chuyến hàng, mỗi chuyến hàng có tổng giá trị mua M và tổng giá trị bán B (M, B có thể lên đến 20 chữ số) mới tính xem mình huề vốn, lời hay lỗ, bao nhiêu tiền. Hãy viết chương trình để giúp doanh nhân trên tính toán kết quả kinh doanh.
File kinhdoanh.inp:
- Dòng đầu tiên trong file chứa số N
- N dòng tiếp theo, mỗi dòng chứa cặp số M và B, hai số này cách nhau một khoảng trắng
Ghi ra file kinhdoanh.out số tiền lời (nếu lỗ in ra số âm)
VD:
kinhdoanh.inp | kinhdoanh.out |
5 50 65 150 141 15 30 121 200 300 300 |
100 |
Từ chuỗi ngày/tháng/năm theo cấu trúc dd/mm/yyyy và số N (N ≤ 1000) cho trước. Hãy cho biết ngày/tháng/năm (dd/mm/yyyy) sau N ngày.
File ngay.inp:
- Chứa ngày/tháng/năm và số N
File ngay.out:
- Chứa kết quả là ngày/tháng/năm sau N ngày
VD:
ngay.inp | ngay.out |
15/03/2017 100 | 23/06/2017 |
Cho trước số tự nhiên N. Hãy viết chương trình cho biết N có thể biểu diễn thành tổng của hai hoặc nhiều số tự nhiên liên tiếp hay không? Nếu có, thì bao nhiêu cách và hãy liệt kê tất cả các cách có thể có. Nếu không, thì thông báo bằng số 0.
File bieudienso.inp:
- Chứa N
File bieudienso.out:
- Chứa các trường hợp có thể tách được, mỗi số cách nhau một dấu cộng, mỗi dòng một trường hợp
VD:
bieudienso.inp | bieudienso.out |
9 |
2 4+5 2+3+4 |