You are on page 1of 13

Bài tập căn bản

Bài 1: Vẽ sơ đồ khối cho bài toàn: Nhập vào hai số a và b. So sánh hai số đã nhập.
Bài 2: Vẽ sơ đồ khối cho bài toàn: Tính điểm trung bình của học sinh gồm các môn Toán, Lý, Hóa.
Bài 3: Vẽ sơ đồ khối cho bài toàn: Giải phương trình bậc nhất: ax + b = 0.
Bài 4: Vẽ sơ đồ khối cho bài toàn: Giải phương trình bậc hai: ax2 + bx + c = 0.
Bài 5: Vẽ sơ đồ khối cho bài toàn: Đổi từ tiền VND sang tiền USD.
Bài 6: Vẽ sơ đồ khối cho bài toàn: Nhập vào số nguyên n. Tính tổng các số nguyên từ 1 đến n.
Bài 7: Vẽ sơ đồ khối cho bài toàn: Nhập vào số nguyên n. Kiểm tra xem đó có phải số nguyên tố hay không.
Bài 8: Vẽ sơ đồ khối cho bài toàn: Nhập vào số nguyên n. Kiểm tra xem số đó có bao nhiêu ước số.
Bài 9: Vẽ sơ đồ khối cho bài toàn: Nhập vào số nguyên n. Kiểm tra xem đó có phải số hoàn hảo hay không.
Số hoàn hảo là số có tổng các ước không phải nó bằng chính nó.
Ví dụ: Số 6 có các ước không phải nó: 1, 2, 3 và 1 + 2 + 3 = 6. Nên số 6 là số hoàn hảo.
Bài 10: Vẽ sơ đồ khối cho bài toàn: Nhập vào một dãy các số nguyên. Tìm số lớn nhất trong dãy.
Bài 11: Vẽ sơ đồ khối cho bài toàn: Nhập vào một dãy các số nguyên. Và một số nguyên k. Tìm vị trí của
k trong dãy.
Nếu không có k trong dãy. In ra kết quả là -1.
Nếu có nhiều k trong dãy. Tìm vị trí đầu tiên.
Bài 12: Vẽ sơ đồ khối cho bài toàn: Nhập vào một số nguyên chữ số. Tính tổng các chữ số của số đó.
Bài 13: Vẽ sơ đồ khối cho bài toàn: Nhập vào hai số nguyên a, b. Tìm ước chung lớn nhất của hai số đó.
Bài 14: Viết chương trình nhập vào 2 số nguyên và in ra kết quả các phép tính ( +, -, *, /, %).
Bài 15: Viết chương trình nhập vào bán kính hình cầu, tính và in ra diện tích, thể tích của hình cầu đó.
Bài 16: Viết chương trình nhập vào một số a bất kỳ và in ra giá trị bình phương, lập phương của nó.
Bài 17: Viết chương trình nhập vào 3 số nguyên biểu diễn ngày, tháng, năm và xuất ra màn hình dưới dạng
“ngày/tháng/năm”.
Bài 18: Viết chương trình nhập vào số giây từ 0 đến 86399, đổi số giây nhập vào thành dạng “giờ:phút:giây”.
Mỗi thành phần là một số nguyên có 2 chữ số.
Bài 19: Viết chương trình vẽ tam giác vuông với chiều cao là 5.
*
**
***
****
*****
Bài 20: Viết chương trình vẽ tam giác đều với chiều cao là 5.
*
***
*****
*******
*********
Bài 21: Viết chương trình nhập vào một số nguyên dương. In ra thông báo số đó là số chẵn hay số lẻ.
Bài 22: Viết chương trình nhập vào 4 số nguyên. Tìm và in ra số lớn nhất.
Bài 23: Viết chương trình giải phương trình bậc 2: ax2 + bx + c = 0. Với a, b, c được nhập vào từ bàn phím.
Bài 24: Viết chương trình nhập vào giờ phút giây. Và một số giây cộng thêm. In ra kết quả thời gian mới
sau khi đã cộng thêm.
Bài 25: Viết chương trình nhập vào tháng. In ra số ngày trong tháng đó.
Bài 26: Viết chương trình nhập vào 2 số x, y và 1 trong 4 toán tử +, -, *, /. In ra kết quả phù hợp.
Bài 27: Viết chương trình nhập vào điểm 3 môn thi: Toán, Lý, Hóa của học sinh. Nếu tổng điểm >- 15 và
không có môn nào dưới 4 thì kết quả in ra là đậu. Nếu đậu mà các môn đều lớn hơn 5 thì in ra lời phê là
“Học đều các môn”, ngược lại là “Học chưa đều các môn”, các trường hợp còn lại là “Thi hỏng”.
Bài 28: Viết chương trình nhập vào ngày tháng năm, cho biết ngày đó là ngày thứ mấy trong tuần.
Bài 29: Viết chương trình nhập vào số giờ làm và lương hiện tại rồi tính lương tổng cộng. Nếu số giờ làm
lớn hơn 40 thì những giờ làm dôi ra sẽ được tính 1.5 lần.
Bài 30: Viết chương trình nhập vào 3 giá trị nguyên dương a, b, c. Kiểm tra xem a, b, c có phải là 3 cạnh
của tam giác không? Nếu là 3 cạnh của tam giác thì tính diện tích của tam giác đó.
Bài 31: Viết chương trình tính tiền điện gồm các khoản sau:
- Tiền thuê bao điện kế: 1000đ/tháng.
- Định mức sử dụng điện cho mỗi hộ là : 50KW với giá 230đ/KW.
- Nếu phần vượt định mức <=50KW thì tính giá 480đ/KW.
- Nếu 50KW < phần vượt định mức < 100KW thì tính giá 700đKW.
- Nếu phần vượt định mức <= 100KW thì tính giá 900đ/DW.
Chỉ số mới và cũ được nhập từ bàn phím.
- In ra màn hình chỉ số cũ, chỉ số mới, tiền trả định mức, tiền trả vượt định mức, tổng tiền phải
trả.
Bài 32: Viết chương trình in ra bảng mã ASCII.
Bài 33: Viết chương trình tính tổng bậc 3 của N số nguyên đầu tiên.
Bài 34: Viết chương trình nhập vào một số nguyên rồi in ra tất cả các ước số của số đó.
Bài 35: Viết chương trình vẽ một tam giác cân bằng các dấu *.
Bài 36: Viết chương trình tính tổng nghịch đảo của N số nguyên đầu tiên theo công thức
S = 1 + ½ + 1/3 + ... + 1/N
Bài 37: Viết chương trình tính tổng bình phương các số lẻ 1 đến N.
Bài 38: Viết chương trình nhập vào N số nguyên. Tìm số lớn nhất, số nhỏ nhất.
Bài 39: Viết chương trình nhập vào N rồi tính giai thừa của N.
Bài 40: Viết chương trình vẽ một tam giác cân rỗng bằng các dấu *.
Bài 41: Viết chương trình tìm UCLN, BCNN của 2 số.
Bài 42: Viết chương trình vẽ hình chữ nhật rỗng bằng các dấu *.
Bài 43: Viết chương trình nhập vào một số và kiểm tra xem số đó có phải là số nguyên tố hay không?
Bài 44: Viết chương trình tính số hạnh thứ n của dãy Fibonaci.
Dãy Fibonaci là dãy số gồm các số hạng p(n) với
p(n) = p(n-1) + p(n-2) với n-=>2 và p(1) = p(2) = 1
Dãy Fibonaci sẽ là 1 1 2 3 5 8 13 21 ...
Bài 45: Viết chương trình tính xn với x, n được nhập từ bàn phím.
Bài 46: Viết chương trình nhập vào 1 số từ 1 đến 9. In ra cách gọi tương ứng.
Bài 47: Viết chương trình phân tích một số nguyên N thành tích các thừa số nguyên tố.
Bài 48: Viết chương trình lặp lại nhiều lần việc nhập một ký tự và in ra mã ASCII của ký tự đó, khi nào
nhập số 0 thì dừng.
Bài 49: Viết chương trình tính dân số của một thành phố sau 10 năm nữa, biết rằng dân số hiện nay là
6.000.000, tỉ lệ tăng dân số hàng năm là 1.8%.
Bài 50: Viết chương trình tìm các số nguyên gồm 3 chữ số sao cho tích của 3 chữ số bằng tổng 3 chữ số.
Ví dụ: 1*2*3 = 1+2+3.
Bài 51: Viết chương trình tìm các số nguyên a, b, c, d khác nhau trong khoảng từ 0 đến 10 thỏa mãn điều
kiện a*d*d = b*c*c*c
Bài 52: Viết chương trình in ra bảng cửu chương.
Bài 53: Viết chương trình nhập vào N số nguyên, đếm xem có bao nhiêu số âm, bao nhiêu số dương và bao
nhiêu số 0.
Bài 54: Viết hàm tính n!.
Bài 55: Viết hàm tính tổng S = 1+2+3+...+n
Bài 56: Viết hàm kiểm tra số nguyên tố.
Bài 57: Viết hàm tính số hạng thứ n trong dãy Fibonaci.
Bài 58: Viết hàm tìm số lớn nhất trong 2 số.
Bài 59: Viết chương trình tìm số lớn nhất, nhỏ nhất trong một mảng n số nguyên.
Bài 60: Viết chương trình sắp xếp tăng dần, giảm dần của một dãy cho trước.
Bài 61: Viết chương trình tách tên và họ của một chuỗi tên.
Bài 62: Viết chương trình cắt bỏ khoảng trắng thừa ở giữa, 2 đầu của một chuỗi.
Bài 63: Viết chương trình chuyển một chuỗi sang chữ thường.
Bài 64: Viết chương trình nhập vào một số nguyên. In ra cách đọc của số đó.
Vd: 305 -> “Ba tram le nam”
Bài 65: Viết chương trình nhập vào một chuỗi. Kiểm tra xem chuỗi đó có bao nhiêu từ.
Bài 66: Viết chương trình nhập vào một chuỗi. Kiểm tra xem chuỗi đó có đối xứng không.
Bài 67: Viết chương trình nhập vào một dãy n số nguyên. Đếm số lượng số hoàn hảo có trong dãy.
Bài 68: Viết chương trình nhập vào một dãy n số nguyên. In ra trung bình cộng của các số nguyên dương
có trong dãy.
Bài 69: Định nghĩa hai hàm tương ứng thực hiện nhập vào các giá trị cho các phần tử mảng và xuất ra các
phần tử của mảng.
Bài 70: Định nghĩa một hàm đảo ngược thứ tự các phần tử của mảng.
Bài 71: Định nghĩa một hàm để nhập vào danh sách các tên và lưu trữ chúng như các chuỗi được cấp phát
động trong mảng và một hàm để xuất chúng.
Bài 72: Từ bài 13, viết một hàm khác để sắp xếp danh sách bằng một cách sắp xếp bất kỳ.
Bài 73: Viết chương trình sắp xếp một mảng n phần tử bằng sử dụng con trỏ.
Bài tập nâng cao

1. Nguyên tố hóa học


Hóa chấ t chỉ gồ m các nguyên tố C, H, O có trọng lượng 12,1, 16 tương ứng.
Nó được biể u diễn dạng "nén", ví dụ COOHHH là CO2H3 hay CH (CO2H) (CO2H) (CO2H) là CH(CO2H)3.
Nế u ở dạng nén thì số lầ n lặp >=2 và <=9.
Tính khố i lượng hóa chấ t.
Input
Gồ m mô ̣t dòng mô tả hóa chấ t không quá 100 kí tự chỉ gồ m C, H, O, (, ), 2,..,9.
Output
Khố i lượng của hóa chấ t (luôn <=10000).
VD:

Input Output

COOH 45
CH(CO2H)3 148
((CH)2(OH2H)(C(H))O)3 222
2. Nhìn và đọc
Phép biến đổi "nhìn và đọc" được định nghĩa như sau:
Bắt đầu từ số ở đầu tiên X. Với các số giống nhau thì nhóm lại thành một dãy (giả sử có Y số) thì dãy này
được chuyển thành YX.
Ví dụ 122344111 đọc là "một 1, hai 2, một 3, hai 4, ba 1", do đó chuỗi 122344111 chuyển thành
1122132431.

Input
Dòng đầu chứa số bộ test:
Mỗi dòng sau chứa 1 bộ test chứa chuỗi cần biến đổi (không quá 1000 chữ số)

Output

Với mỗi bộ test, in ra kết quả phép biến đổi

VD:

Input Output
3 1122132431
122344111 101
11111111 1112131415
12345
3
122344111
1111111111
12345
3. Làm tròn số

Cho trước một số nguyên, người ta sẽ làm tròn số này theo quy tắc sau:

• Nếu số đó lớn hơn 10 thì sẽ được làm tròn đến số hàng chục gần nhất
• Sau đó nếu kết quả lớn hơn 100 thì làm tròn đến số hàng trăm gần nhất
• Sau đó nếu kết quả lớn hơn 1000 thì làm tròn đến số hàng nghìn gần nhất
• …cứ tiếp tục như vậy …
Chú ý: giá trị 5 được làm tròn lên.

Hãy viết chương trình làm tròn số theo quy tắc trên.

Input

Dòng đầu tiên chứa số n là số bộ test (không quá 100).

• n dòng tiếp theo, mỗi dòng ghi một số nguyên x với 0 <= x <= 99999999.

Output

• Với mỗi bộ test, in ra màn hình trên một dòng kết quả của phép làm tròn.

VD:
Input Output
9
15 20
14 10
4 4
5 5
99 100
12345678 10000000
44444445 50000000
1445 2000
446 500
4. Số thuận nghịch
Ngày nay, việc sử dụng bàn phím điện thoại di động để nhấn các số đã trở thành một việc rất quen thuộc
với các bạn sinh viên. Ai cũng biết các phím số trên điện thoại cũng là các phím dùng để nhấn các chữ cái:

2: ABC, 3: DEF, 4: GHI, 5: JKL, 6: MNO, 7: PQRS, 8: TUV, 9: WXYZ

Nam viết ra giấy một dãy ký tự và đố Bình xác định đó là dãy số nào theo cách nhấn số trên điện thoại (chỉ
xem xét sự tương ứng giữa số và ký tự chứ không xem xét phải nhấn bao nhiêu lần phím đó, ví dụ cả A, B,
C đều là một số 2).

Bình rất nhanh chóng xác định được kết quả, không những thế Bình còn muốn xác định nhanh xem số đó
có phải là số dạng thuận nghịch hay không. Một số là thuận nghịch nếu viết theo thứ tự ngược lại cũng là
chính nó. Hãy viết chương trình giúp Bình thực hiện công việc trên.

Input

• Dòng đầu tiên chứa số n là số bộ test (không quá 1000).


• Mỗi bộ test viết trên một dòng một dãy ký tự gồm các chữ cái có thể là chữ hoa hoặc chữ thường, dài
không quá 20 ký tự, không có khoảng trống.

Output

Với mỗi bộ test, in ra màn hình, trên một dòng, chữ “YES” nếu đó tương ứng là số thuận nghịch, chữ “NO”
nếu ngược lại.

VD:
Input Output
2 YES
ANBOBNA NO
iAmACoolCompany
5. Đàn kiến
Ngày Valentine, Tí mua socola đem đi tỏ tỉnh với người yêu, nhưng đáng tiếc đã bị bạn nữ kia từ chối. Đành
rằng đã mua thì phải ăn, Tí mang về nhà ăn một mình. Để thử hương vị lạ, Tí ăn cùng với cả dâu tây, Tí để vài
miếng dâu tây lên thanh socola rồi sẵn thế mà chén. Đang chuẩn bị thưởng thức thì Tí nhận được điện thoại từ
Tèo, Tèo rủ Tí sang uống rượu giải sầu vì lí do thất tình tương tự. Tí chạy sang luôn, quên mất thanh socola còn
đang dang dở trên bàn.
Đàn kiến nhà Tí tha hồ được bữa. Chúng càn quét theo từng hàng hoặc từng cột một. Nhưng không hiểu sao bọn
chúng bị dị ứng với mùi của dâu tây, chúng sẽ không “tấn công” những hàng hoặc cột nào có miếng dâu tây,
còn đâu là chúng chén sạch!
Các bạn hãy tính toán xem số lượng miếng số socola lũ kiến sẽ ăn được là bao nhiêu?

Input
Dòng đầu tiên gồm 2 số r và c (2 <= r, c <= 10) là số hàng và số cột của thanh socola.
r dòng tiếp theo, mỗi dòng gồm c kí tự, kí tự ‘.’ biểu diễn 1 miếng socola bình thường, kí tự ‘S’ biểu diễn miếng
socola có miếng dâu tây.

Output
In ra số lượng miếng socola nhiều nhất mà đàn kiến có thể ăn được.

VD:

Input Output
3 4 8
S...
....
..S.

Hình vẽ giải thích test:


6. Chia kẹo
Đi chợ về, mẹ mua một gói kẹo cho anh em Tèo. Mẹ bảo Tèo rằng đợi các em đi học về thì hãy chia, nhưng Tèo
không nghe, cứ đòi ăn trước. Tèo chia đều kẹo cho tất cả anh em, nếu như chia không đều thì các phần nhiều
hơn (nhiều hơn các phần còn lại 1 cái) sẽ dành cho những đứa bé hơn. Là anh cả nên Tèo chỉ lấy phần nhỏ nhất.
Khi lũ trẻ đi học về, chúng nhận phần của mình, nhưng nghi ngờ anh Tèo là người lấy phần nhiều nhất, vì vậy
chúng đem đi hỏi mẹ xem gói kẹo ban đầu có tất cả bao nhiêu cái?
Các bạn hãy tính toán xem số lượng kẹo có thể có ban đầu nhỏ nhất và lớn nhất là bao nhiêu?
Input
Gồm 2 số nguyên n (2 <= n <= 15) và k (n <= k <= 100) lần lượt là những đứa trẻ trong gia đình của Tèo và số
kẹo còn lại sau khi Tèo đã ăn hết phần của mình.
Output
In ra 2 giá trị số kẹo nhỏ nhất và lớn nhất có thể có ban đầu.
VD:
Input Output
25 9 10
35 77
 Giải thích test 1: Nếu ban đầu có 9 cái kẹp, Tèo sẽ lấy phần ít hơn là 4 cái. Nếu ban đầu có 10 cái
kẹo. Tèo sẽ lấy 1 nửa là 5 cái. Còn lại 5 cái cho em.
7. Lặp lại các ký tự
Với một xâu ký tự S, và một số nguyên R, hãy tạo ra một xâu T bằng cách mỗi ký tự trong S được lặp lại R lần.
Các ký tự trong S có thể nằm trong dãy:
0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ$%*+-./:

Input
Dòng 1 ghi số bộ test (không quá 1000)
Mỗi bộ test gồm số thứ tự, một dấu cách, tiếp theo là số 1<=R<=8, một dấu cách, rồi đến xâu ký tự S (không
quá 20 ký tự).

Output
Với mỗi bộ test ghi trên một dòng số thứ tự bộ test, một dấu cách rồi đến xâu T.

VD:
Input Output
2 1 AABBBCCC
1 3 ABC 2 /////HHHHHTTTTTPPPPP
2 5 /HTP
8. M O O
Những con bò đang chuẩn bị bắt đầu chơi trò “Moo”. Chúng đứng trên một hàng dài, trong đó mỗi con bò trong
hàng sẽ nói một chữ cái nhanh nhất có thể. Con bò nào phạm luật đầu tiên thì sẽ thua.
Dãy các kí tự “Moo” có thể kéo dài liên tục và không giới hạn. Chúng sẽ bắt đầu như sau:
moomooomoomoooomoomooomoomoooo
Dãy kí tự được diễn tả như sau: Gọi S(0)là một trong ba kí tự “m o o”. Sau đó dãy kí tự S(k)sẽ bằng dãy S(k-1)
và thêm vào “m o … o” với k+2 chữ o, và sau đó cộng thêm một lần cho S(k-1). Ví dụ:
S(0) = "m o o"
S(1) = "m o o m o o o m o o"
S(2) = "m o o m o o o m o o m o o o o m o o m o o o m o o"
Với cách này sẽ tạo được dãy kí tự rất dài, và dãy này sẽ dùng cho game Moo.
Cô bò Bessie muốn biết kí tự thứ N của dãy này là chữ “m” hay chữ “o”. Bạn hãy giúp Bessie nhé!

Input
*Dòng 1: Gồm một số nguyên N(1 <= N <= 10^9).

Output
*Dòng 1: Dòng duy nhất chứa kí tự “m” hoặc “o”.

VD:
Input Output

11 m
9. Số gần nguyên tố
Chúng ta đều biết số nguyên tố là số nguyên dương mà chỉ có duy nhất 2 ước phân biệt. Iron man luôn thích
những cái đặc biệt và mới mẻ, và anh ra đưa ra 1 định nghĩa mới “Số gần nguyên tố” – là các số nguyên
dương mà có đúng 3 ước phân biệt.
Bạn được cho 1 mảng có n phần tử, hãy kiểm tra xem từng phần tử trong mảng có phải là số gần nguyên tố
hay không.
Input
Dòng đầu tiên nhập vào số tự nhiên n (1 <= n <= 10^5) là số phần tử của mảng.
Dòng tiếp theo nhập n số nguyên dương x[i] (1 <= x[i] <= 10^12)
Output
In ra trên n dòng: dòng thứ i in “YES” nếu x[i] là số gần nguyên tố, ngược lại thì in “NO”.
VD:
Input Output
3 YES
456 NO
NO
10. Tính sát thương
Ursa là một hero rất bá đạo trong DotA, anh có kỹ năng gia tăng sức mạnh sau mỗi cú đánh theo công thức:
Di = Di-1 + i với i là số thứ tự cú đánh và Di là lượng sát thương gây ra sau cú đánh đó, với i = 1 thì
Di = 1.
Thanh mới tập chơi DotA và chơi một hero có lượng máu cơ bản là X. Hero của Thanh không chịu được
đòn đánh có sát thương lớn hơn X. Bạn hãy giúp Thanh tính xem có thể chịu được tối đa bao nhiêu cú đánh
của Ursa.
Input
Dòng duy nhất chứa số X (1 <= X <= 10000).
Output
In ra số cú đánh tối đa mà hero của Sơn có thể chịu được.
VD:
Input Output
1 1

You might also like