Bài tập Hàm và Thủ tục
Câu 1: Viết các hàm USCLN(a, b) và BSCNN(a, b).
Hướng dẫn: Khai báo hàm USCLN có:
Tên hàm: USCLN
Kiểu dữ liệu trả về: integer
Tham số: 2 tham trị là int a, int b
Giá trị trả về: chính là giá trị ước số chung lớn nhất của a và b.
Xử lý tìm USCLN, BSCNN: Dựa trên ví dụ đã có ở phần trước.
Câu 2: Viết hàm kiểm tra số N có phải là số nguyên tố hay không?
Hướng dẫn: Khai báo hàm kiểm tra số nguyên tố có:
Tên hàm: KiemtraSNT
Dữ liệu trả về: int, ( 0 nếu không phải là số nguyên tố, là 1 nếu là số nguyên tố )
Tham số: tham trị là int N, số cần kiểm tra.
Xử lý kiểm tra: Dựa trên ví dụ đã có ở phần trước.
Câu 3: Viết chương trình thực hiện lần lượt các công việc sau:
- Lập thủ tục nhập ba số thực dương a , b , c từ bàn phím .
- Lập thủ tục kiểm tra xem ba số trên có lập thành ba cạnh của tam giác hay không.
- Viết hàm tính diện tích của tam giác
- Viết hoàn thiện chương trình chính.
Câu 4: Viết chương trình hoàn chỉnh thực hiện phân tích ra N ra thành các thừa số nguyên tố.
Ví dụ: N = 1260 = 2 . 2 . 3 . 3 . 5 . 7
Hướng dẫn:
-Viết hàm nhập số N. Lưu ý, hàm nhập cần truyền tham số N theo dạng tham biến để lưu lại giá trị đã nhập vào.
-Viết hàm phân tích số N ra các thừa số nguyên tố và in các thừa số đó ra màn hình với ý tưởng thuật toán:
o Chia N cho số nguyên tố i (nhỏ nhất là 2).
o Trong khi N còn chia hết cho i thì tiến hành phân tích N với i là thừa số. Giảm N đi i lần.
o Nếu N không chia hết cho i, thi tăng i lên 1.
o Quá trình lặp lại với
§ i từng bước tăng lên 1 nếu N không chia hết cho i.
§ N từng bước giảm xuống i lần nếu N chia hết cho i.
o Quá trình lặp lại đến một mức i tăng lên và N giảm xuống để N = i, khi đó giá trị mới của N sẽ là 1.
Câu 5: Viết chương trình chuyển đổi số tự nhiên N cho trước sang hệ cơ số 2 bằng việc xây dựng hàm chuyển đổi.
Hướng dẫn:
- Xây dựng hàm Dec2Bin( ) chuyển đổi từ số tự nhiên sang số nhị phân.
o Sử dụng biến S để lưu giá trị số nhị phân của N. Khởi gán bằng 0.
o Tiến hành lặp chuyển đổi cơ số: Lặp trong khi mà N > 0
§ SoDu = số dư của N chia cho 2.
§ N = N chia cho 2.
§ Bổ sung chữ số SoDu vào số S thành một chữ số
o Trả về kết quả cuối cùng của S.
- Viết thân chương trình chính với nội dung dùng để kiểm tra kết quả thực hiện của hàm.
o Khai báo biến N, M
o Thông báo nhập, nhập giá trị cho biến N
o Gán giá trị M bằng kết quả trả về của hàm Dec2Bin( N )
o In thông báo về kết quả số nhị phân chuyển đổi được (giá trị của M)
o Gọi hàm readln trước khi kết thúc chương trình
BÀI TẬP ÔN XÂU KÍ TỰ
1. Nhập 1 kí thường chuyển thành kí tự hoa và ngược lại.
2. Nhập xâu kí tự bất kì cả hoa lẫn thường, chuyển hết thành kí tự hoa, chuyển hết thành kí tự thường.
3. Nhập xâu kí tự cả hoa lẫn thường. Đếm xem có bao nhiêu kí tự hoa bao nhiêu kí tự thường.
4. Nhập xâu kí tự. Xóa hết kí tự hoa, in ra các kí tự thường và ngược lại.
5. Nhập xâu S. Đếm số lần xuất hiện xâu (hoặc kí tự) T trong S.
Ví dụ : S = 'aababaabba', T = 'aa'
=> Kết quả : 2
6. Nhập xâu S gồm cả chữ hoa, thường và số. Xóa tất cả các kí tự trong S là số.
Ví dụ : S = '1a2b34c987g'
=> Kết quả : 'abcg'
7. *Khó* : Nhập xâu S gồm chữ cái và số. Sắp xếp các số trong xâu tho thứ tự tăng/giảm dần mà vẫn giữ nguyên vị trí của nó trong xâu.
Ví dụ : S = 'abc6ghj4kkk9hhhh1
=> Kết quả : 'abc1ghj4kkk6hhh9'
8. Viết hoa chữ cái đầu trong các từ.
VD: S = 'huynh quang thanh'
=>Kết quả: 'Huynh Quang Thanh'.
9. Xoá các khoảng trắng thừa trong chuỗi.
VD: S= ' Huynh Quang Thanh '
=>Kết quả:'Huynh Quang Thanh'
10. Chuẩn hoá chuỗi.
VD: S= ' hUyNh QuAnG thANH '
=>Kết quả: 'Huynh Quang Thanh'
BÀI TẬP Mảng một chiều
Bài 1: Nhập mảng A, đếm số lần phần tử X xuất hiện trong mảng.
vd: A: 1 6 6 7 6
Kết quả:
Nhập giá trị cần đếm : 6
Số lần xuất hiện là: 3
Bài 2: Đếm số lượng số nguyên tố có trong mảng.
Nhap.inp :
8
2 3 4 5 7 9 13 15
Bài 3: In ra vị trí số nguyên tố trong mảng.
Nhap.inp :
8
2 3 4 5 7 9 13 15
Bài 4: Hiện thị các số nguyên tố có trong mảng lên màn hình
Nhap.inp :
8
2 3 4 5 7 9 13 15
Bài 5: Đếm các số chính phương có trong mảng
Nhap.inp :
8
2 3 4 5 7 9 13 15
Bài 6: In ra vị trí số chính phương có trong mảng.
Nhap.inp : 1 4 5 9 10 16 15 25 27 36
Bài 7: In ra số chính phương có trong mảng.
Nhap.inp : 1 4 5 9 10 16 15 25 27 36
Bài 8: Thay thế các phần tử âm có trong mảng bằng giá trị 0.
Nhap.inp : 1 4 -5 9 -10 16
Bài 9: Xóa 1 phần tử ở vị trí x trong mảng. Với x được nhập từ bàn phím.
Nhap.inp : 1 4 5 9 10 16
Bài 10: Sắp xếp mảng theo thứ tự tăng dần.
Nhap.inp : 5 4 7 8 14 42 13 65 3 47
Bài 11: Sắp xếp mảng theo thứ tự giảm dần.
Nhap.inp : 5 4 7 8 14 42 13 65 3 47
Bài 12: Tìm vị trí xuất hiện của x trên mảng A. Thay thế những giá trị A[i] là x thành y. Với x,y được nhập từ bàn phím.
Nhap.inp : 5 4 7 8 14 42 13 65 3 47
Bài 13: Tìm kiếm các cặp 2 phần tử gần nhau có tổng chia hết cho 10. Thay thế các phần tử đó bằng tổng của chúng.
Bài 14: Kiểm tra mảng có đối xứng hay không?
Bài 15: Viết thủ tục và chương trình chèn phần tử X vào vị trí k trong mảng A (N phần tử). Xoá phần tử ở vị trí h trong mảng A.
Ví dụ: A : 1 2 3 4 5 6
X = 10 , k = 4 h = 3
Kết quả chèn: 1 2 3 10 4 5 6
Kết quả xoá: 1 2 10 4 5 6
Bài tập phân số
Bài 1: Tính S(n) = 1 + 2 + 3 + … + n
Bài 2: Tính S(n) = 1^2 + 2^2 + … + n^2
Bài 3: Tính S(n) = 1 + ½ + 1/3 + … + 1/n
Bài 4: Tính S(n) = ½ + ¼ + … + 1/2n
Bài 5: Tính S(n) = 1 + 1/3 + 1/5 + … + 1/(2n + 1)
Bài 6: Tính S(n) = 1/1×2 + 1/2×3 +…+ 1/n x (n + 1)
Bài 7: Tính S(n) = ½ + 2/3 + ¾ + …. + n / n + 1
Bài 8: Tính S(n) = ½ + ¾ + 5/6 + … + 2n + 1/ 2n + 2
Bài 9: Tính T(n) = 1 x 2 x 3…x N
Bài 10: Tính T(x, n) = x^n
Bài 11: Tính S(n) = 1 + 1.2 + 1.2.3 + … + 1.2.3….N
Bài 12: Tính S(n) = x + x^2 + x^3 + … + x^n
Bài 13: Tính S(n) = x^2 + x^4 + … + x^2n
Bài 14: Tính S(n) = x + x^3 + x^5 + … + x^2n + 1
Bài 15: Tính S(n) = 1 + 1/1 + 2 + 1/ 1 + 2 + 3 + ….. + 1/ 1 + 2 + 3 + …. + N
Bài 16: Tính S(n) = x + x^2/1 + 2 + x^3/1 + 2 + 3 + … + x^n/1 + 2 + 3 + …. + N
Bài 17: Tính S(n) = x + x^2/2! + x^3/3! + … + x^n/N!
Bài 18: Tính S(n) = 1 + x^2/2! + x^4/4! + … + x^2n/(2n)!
Bài 19: Tính S(n) = 1 + x + x^3/3! + x^5/5! + … + x^(2n+1)/(2n+1)!
BÀI TẬP TỔNG HỢP
Bài 1 : Viết chương trình chuyển đổi một số n ở hệ thập phân sang số la mã
(Biết rằng I = 1, IV = 4, V = 5, IX = 9, X = 10, XL = 40, L = 50, XC = 90, C = 100, CD = 400, D = 500, CM = 900, M = 1000)
Ví dụ : n =124
=> Kết quả : CXXIV
Bài 2 : Viết chương tình chuyển đổi số n từ nhị phân sang thập phân và ngược lại.
Ví dụ : n = 15
=> Kết quả : 1111
Ví dụ : 0010
=> Kết quả : 2
Bài 3 :
Bài 4 : Viết chương trình cho nhập hai số tự nhiên N và k. Hãy cho biết chữ số thứ k tính từ trái sang phải trong số N là số mấy? nếu k lớn hơn độ dài của N hoặc k <= 0 thì thông báo không tìm được.
Ví dụ 1: Với N và k được nhập: N = 65932, k = 4
Kết quả tìm được là 3.
Ví dụ 2: Với N và k được nhập: N = 65932, k = 10
Kết quả tìm được là “Tim khong duoc!” ( k lớn hơn độ dài N).
Bài 5 : Một số n chẵn (lớn hơn 2) là tổng của các cặp số nguyên tố. Viết CT tìm các cặp số nguyên tố đó (mỗi cặp in trên 1 dòng)
Ví dụ : n = 22
=> Kết quả : 3 19
5 17
11 11