Giáo trình Lập trình C căn bản - Lê Văn Hạnh

Tóm tắt Giáo trình Lập trình C căn bản - Lê Văn Hạnh: ...kiểm tra BTĐK Kỹ thuật lập trình – Chương 2: Ngôn ngữ C Lê Văn Hạnh Oct2015 14  Các thành phần trong ngoặc của for đểu có thể vắng mặt tuy nhiên phải để đầy đủ các dấu chấm phẩy (;). 3.2.3.2.3. Hoạt động của cấu trúc for 3.2.3.3. Cấu trúc do-while 3.2.3.3.1. Công dụng Cấu trú...=A[i] ) return i; return -1; } Lập trình C căn bản – Chương 5: Mảng một chiều (One Dimensional Array) Lê Văn Hạnh Oct2015 34 5.2.6. Đếm số lần xuất hiện của số trong mảng Có thể chia các bài toán về đếm thành 3 loại: 5.2.6.1. Đếm số lần xuất hiện của số thỏa điều kiện cho trước Th...1 3 !1!2)!1(!  n n nn 6.3.2.7.38. S = xxxxx nnn   221 ....... Lập trình C căn bản – Phần bài tập Lê Văn Hạnh Oct2015 51 6.3.2.7.39. S = 11 1 1 1... 1 1 1 1 1 1 1      6.3.2.7.40. Cho n là số nguyên dương. Hãy tìm giá trị nguyên dương k lớn nhất sao cho S(k) ...

pdf93 trang | Chia sẻ: havih72 | Lượt xem: 270 | Lượt tải: 0download
Nội dung tài liệu Giáo trình Lập trình C căn bản - Lê Văn Hạnh, để tải tài liệu về máy bạn click vào nút DOWNLOAD ở trên
n tử trong mảng “xa/gần giá trị x nhất”. 
31/- Tìm đoạn [a,b] sao cho đoạn này chứa tất cả các giá trị trong mảng 
32/- Viết hàm nhận tham số là mảng các số nguyên (A), số lượng phần tử của mảng 
(n). Tìm giá trị x sao cho đoạn [-x,x] chứa tất cả các giá trị trong mảng. 
33/- Tìm giá trị đầu tiên nằm trong khỏang (x,y) cho trước. Nếu không có trả về giá 
trị -1. 
34/- Tìm giá trị đầu tiên trong mảng có dạng 2^k. Nếu không có thì trả về giá trị -1. 
 Mở rộng: Tìm giá trị đầu tiên trong mảng có dạng 3^k, 4^k, 
35/- Tìm số chẵn lớn nhất nhỏ hơn mọi giá trị lẻ có trong mảng nguyên 
Lập trình C căn bản – Phần bài tập 
Lê Văn Hạnh Oct2015 71 
36/- Tìm số nguyên tố nhỏ nhất lớn hơn mọi giá trị còn lại (không phải số nguyên 
tố) trong mảng. 
37/- Tìm ước chung lớn nhất của tất cả phần tử trong mảng nguyên. 
38/- Tìm bội số chung nhỏ nhất cho tất cả các phần tử trong mảng nguyên. 
39/- Tìm vị trí trong mảng số nguyên thỏa điều kiện giá trị tại vị trí đó lớn hơn giá 
trị có trong 2 vị trí liền kề. Nếu không có trả về -1. Bỏ qua (không xét) vị trí đầu 
và cuối mảng. 
 Mở rộng: 
- Giá trị tại vị trí đó bằng tổng 2 giá trị có trong vị trí kế cận 
(A[i]= A[i-1]+A[i+1]). 
- Giá trị tại vị trí đó bằng tích 2 giá trị có trong vị trí kế cận 
(A[i]= A[i-1]*A[i+1]). 
- Xét cả 2 vị trí đầu và cuối mảng (chỉ có 1 phần tử kế cận). 
40/- Hãy tìm giá trị đầu tiên trong mảng một chiều các số nguyên có chữ số đầu tiên 
là chữ số lẻ. Nếu trong mảng không tồn tại giá trị như vậy hàm sẽ trả về giá trị 
0 (ví dụ: 110) 
41/- Tìm giá trị toàn là chữ số lẻ và lớn nhất trong những số thỏa điều kiện. Không 
có trả về -1. 
42/- Cho mảng một chiều các số nguyên hãy viết hàm tìm giá trị đầu tiên thỏa tính 
chất số gánh (ví dụ giá trị 12321). 
43/- Tìm 1 giá trị có số lần xuất hiện nhiều nhất trong mảng 
44/- Tìm chữ số xuất hiện nhiều nhất trong mảng 
VD: mảng gồm 3 phần tử 15, 42, 14. Chữ số xuất hiện nhiều nhất là chữ số 1 và 
chữ số 4. 
 Mở rộng: Tìm chữ số xuất hiện ít nhất trong mảng 
45/- Tìm 2 giá trị gần nhau nhất trong mảng 
46/- Viết hàm nhận tham số là mảng các số nguyên (A), số lượng phần tử của mảng 
(n) và số nguyên x. Tìm giá trị trong mảng các số nguyên “xa giá trị x nhất” 
(xanhat) 
Ví dụ: cho mảng A 24 45 23 13 43 -12 
Với giá trị x = 15, Khoảng cách từ x tới các phần tử khác trong mảng là: 
9 30 8 2 28 27 
Giá trị trong mảng xa giá trị x nhất là: 45 
 Mở rộng: Tìm phần tử đầu tiên trong mảng “gần giá trị x nhất”. 
Ví dụ: cho mảng A 24 45 23 13 43 -12 
 Với giá trị x = 15, Khoảng cách từ x tới các phần tử khác trong mảng là: 
9 30 8 2 28 27 
Giá trị trong mảng gần giá trị x nhất là: 13 
6.5.1.5. Kỹ thuật đếm / tính tổng / tính trung bình 
47/- Viết hàm tính tổng các phần tử nằm ở vị trí chẵn trong mảng. 
 Mở rộng: Viết hàm tính tổng các phần tử nằm ở vị trí chia chẵn cho 5, vị trí là 
số nguyên tố. 
Lập trình C căn bản – Phần bài tập 
Lê Văn Hạnh Oct2015 72 
48/- Tổng các phần tử có chữ số đầu là chữ số lẻ 
 Mở rộng: 
- Tổng các phần tử có chữ số đầu là chẵn, 
- Tổng các phần tử có chữ số hàng chục là 5 
49/- Tổng các phần tử lớn hơn phần tử đứng liền trước nó 
50/- Tổng các phần tử lớn hơn trị tuyệt đối của phần tử liền sau nó 
51/- Tổng các phần tử lớn hơn phần tử liền kề 
52/- Tổng các phần tử đối xứng 
53/- Viết hàm tính tổng của từng dãy con giảm có trong mảng. 
54/- Tính tổng các phần tử cực đại trong mảng các số nguyên (phần tử cực đại là 
phần tử lớn hơn các phần tử liền kề). 
Ví dụ: 1 5 2 6 3 5 1 8 6  in ra 24 
 Mở rộng: Tính tổng các phần tử cực tiểu trong mảng. 
55/- Viết hàm tính giá trị trung bình của các số hoàn thiện trong mảng. 
 Mở rộng: 
- Tính giá trị trung bình của các phần tử có giá trị âm, các phần tử có giá trị là 
số lẻ/số chẵn, 
- Tính giá trị trung bình của các phần tử là bội của 3 và 5 trong mảng. 
- Tính giá trị trung bình của các phần tử có giá trị là số nguyên tố, là số hoàn 
thiện, là số chính phương,  
6.5.1.6. Đếm 
56/- Đếm số lần xuất hiện của giá trị x trong mảng. 
 Mở rộng: 
- Đếm số lần xuất hiện của giá trị dương, giá trị âm, số chẵn, số lẻ, bội số của 
5, bội số của X, ước số của 7, ước số của X,  
- Đếm số lần xuất hiện của giá trị là số nguyên tố, là số hoàn thiện, là số chính 
phương, số Armstrong,  
57/- Cho biết sự tương quan giữa số lượng chẵn và lẻ trong mảng (bao nhiêu phần 
trăm số lẻ, bao nhiêu phần trăm là số chẵn) 
58/- Đếm các phần tử có chữ số đầu là chữ số lẻ 
 Mở rộng: 
- Đếm các phần tử có chữ số đầu là chẵn,  
- Đếm các phần tử có chữ số hàng chục là 5 
- Đếm các phần tử có chữ số hàng đơn vị là 1 trong các số 3, 6, 9 
59/- Đếm số đối xứng trong mảng 
60/- Đếm số lượng phần tử lớn hơn các phần tử liền kề, thực hiện cho 2 trường hợp: 
- KHÔNG xét 2 phần tử đầu và cuối mảng vì không đủ 2 phần tử liền kề). 
- CÓ xét 2 phần tử đầu và cuối mảng (2 phần tử này chỉ có 1 phần tử liền kề trước 
hoặc sau). 
 Mở rộng: 
- Đếm số lượng phần tử kề nhau mà cả 2 trái dấu. 
- Đếm số lượng phần tử kề nhau mà cả 2 đều chẵn. 
Lập trình C căn bản – Phần bài tập 
Lê Văn Hạnh Oct2015 73 
- Đếm số lượng phần tử kề nhau mà số đứng sau cùng dấu số đứng trước và có 
giá trị tuyệt đối lớn hơn. 
6.5.1.7. Trung bình 
61/- Trung bình cộng các số dương 
 Mở rộng: 
- Trung bình cộng các số âm, số chẵn, số lẻ. 
- Trung bình cộng các số lớn hơn x, nhỏ hơn x 
- Trung bình cộng các số nguyên tố, các số hoàn thiện, các số chính phương, 
- Trung bình nhân các số dương, số âm, số chẵn, số lẻ 
62/- (*) Khoảng cách trung bình giữa các giá trị trong mảng 
6.5.1.8. Kỹ thuật thêm 
63/- Chèn thêm giá trị x vào vị trí k trong mảng một chiều nguyên (x, k là tham số 
đầu vào của hàm). 
64/- Giả sử các phần tử trong mảng đã được sắp xếp tăng dần. Viết hàm thêm giá trị 
x vào mảng sao cho mảng vẫn tăng dần (không sắp xếp). 
65/- Thêm giá trị y vào sau các phần tử có giá trị x trong mảng một chiều nguyên (x, 
y là tham số đầu vào của hàm). 
66/- Viết hàm chèn phần tử có giá trị X vào vị trí đầu tiên của mảng. 
67/- Viết hàm chèn phần tử có giá trị X vào phía sau phần tử có giá trị lớn nhất trong 
mảng. 
68/- Viết hàm chèn phần tử có giá trị X vào trước phần tử có giá trị là số nguyên tố 
đầu tiên trong mảng. 
69/- Viết hàm chèn phần tử có giá trị X vào phía sau tất cả các phần tử có giá trị chẵn 
trong mảng. 
6.5.1.9. Kỹ thuật xóa 
70/- Xóa phần tử có chỉ số k trong mảng một chiều nguyên. 
 Mở rộng: chỉ số là số chẵn, số lẻ, số nguyên tố, bội số của m,  
71/- Xóa tất cả phần tử có giá trị bằng X. 
 Mở rộng: giá trị nhỏ hơn / lớn hơn X, số chẵn, số lẻ, số âm, giá trị là số nguyên 
tố ... 
72/- Xóa tất cả các số (dương) lớn nhất trong mảng một chiều nguyên. 
 Mở rộng: cho các giá trị âm lớn nhất, chẵn lớn nhất, lẻ lớn nhất, nguyên tố lớn 
nhất, bội số lớn nhất (hay ước số lớn nhất) của số k,  
73/- Xóa tất cả các phần tử có giá trị xuất hiện nhiều hơn một lần trong mảng một 
chiều nguyên. 
74/- Xoá phần tử tại vị trí lẻ trong mảng. 
75/- Nhập vào giá trị X. Viết hàm xoá phần tử có giá trị gần X nhất. 
6.5.1.10. Kỹ thuật xử lý mảng 
76/- Đảo ngược thứ tự mảng một chiều các số nguyên. 
Lập trình C căn bản – Phần bài tập 
Lê Văn Hạnh Oct2015 74 
77/- Đảo ngược thứ tự các giá trị chẵn trong mảng một chiều nguyên. 
78/- Chuyển các phần tử có giá trị chẵn về đầu mảng. 
79/- Chuyển các phần tử có giá trị âm về cuối mảng. 
80/- Dịch trái xoay vòng 1 lần trên mảng một chiều. 
 Mở rộng: 
- Dịch phải xoay vòng 1 lần trên mảng một chiều. 
- Dịch phải/trái k lần;  
6.5.1.11. Sắp xếp mảng 
81/- Sắp xếp bằng phương pháp đổi chỗ trực tiếp. 
82/- Sắp xếp sao cho số âm giảm dần, số dương tăng dần. 
83/- Sắp xếp các phần tử chẵn nằm bên trái theo thứ tự tăng dần còn các phần tử lẻ 
bên phải theo thứ tự giảm dần. 
84/- Sắp xếp các phần tử âm giảm dần từ trái sang phải, phần tử dương tăng dần từ 
phải sang trái. 
85/- Sắp xếp sao cho số lẻ tăng dần, số dương giữ nguyên vị trí. 
 Mở rộng: Sắp xếp mảng theo thứ tự tăng dần của các phần tử là số nguyên tố, 
số chính phương (các phần tử khác giữ nguyên vị trí) 
6.5.1.12. Kỹ thuật mảng con 
86/- Liệt kê các mảng con (> 2 phần tử) tăng trong mảng một chiều. 
 Mở rộng: 
- Liệt kê các mảng con toàn dương. 
- Liệt kê mảng con tăng có tổng giá trị các phần tử là lớn nhất. 
- Liệt kê mảng con tăng có số lượng phần tử nhiều nhất (dài nhất). Nếu có 2 
dãy con dài bằng nhau thì xuất mảng con đầu tiên. 
Ví dụ: Nhập mảng 1 4 2 3 1 2 6 8 3 5 7 
 Mảng con dài nhất là: 1 2 6 8 
 Hướng dẫn: 
- Khởi động các biến DauMax, CuoiMax, DauMoi, CuoiMoi = vị trí đầu 
mảng, DemMax, DemMoi = 1. 
- Duyệt mảng: 
Nếu còn tăng và chưa hết mảng thì (CuoiMoi = vị trí đang xét và 
DemMoi tăng 1) 
Ngược lại thì so sánh: 
Nếu DemMoi > DemMax 
thì (DauMax = DauMoi và CuoiMax = CuoiMoi). 
87/- Cho 2 mảng A, B các số nguyên (kích thước mảng A nhỏ hơn mảng B). Hãy 
kiểm tra xem A có phải là con của B hay không? 
88/- (*) Viết chương trình tính trung bình cộng của các tổng các mảng tăng dần có 
trong mảng các số nguyên. 
Ví dụ: 1 2 3 4 2 3 4 5 6 4 5 6 => TB = 15. 
Lập trình C căn bản – Phần bài tập 
Lê Văn Hạnh Oct2015 75 
6.5.1.13. Tổng hợp 
89/- Nhập vào một mảng số thực kết thúc bằng việc nhập số 0 (số 0 không lưu vào 
mảng) hoặc khi đã nhập đủ 20 số. Kiểm tra có hay không các tính chất sau đây 
của mảng: 
a. Mảng đơn nhất? (Không có phần tử trùng nhau trong mảng) 
b. Mảng đan dấu? (2 phần tử kề nhau phải khác đấu. Mảng 1 phần tử xem như 
đan dấu) 
c. Mảng tuần hoàn? (Mảng tuần hoàn: Nếu Ai, Ai+1, Ai+2 là 3 phần tử liên tiếp 
trong mảng thì: Ai+1 Ai và Ai+1  Ai+2 hoặc Ai+1  Ai và Ai+1  Ai+2. Mảng có 
2 phần tử xem như tuần hoàn). 
d. Mảng tăng dần? Mảng giảm dần? 
90/- Nhập vào một mảng số nguyên gồm n phần tử. Tạo menu và thực hiện các thao 
tác trên mảng: 
a. Xuất mảng ra màn hình. 
b. Đếm số phần tử là bội số của 3 của mảng (đếm số phần tử có điều kiện). 
c. Tìm phần tử lớn nhất, nhỏ nhất và tính tổng, tích các phần tử của mảng. 
d. Thêm vào mảng phần tử x tại vị trí k (k<n). 
e. Xóa phần tử tại vị trí k (k<n). 
f. Tìm phần tử x trong mảng, chỉ ra vị trí xuất hiện của x. 
g. Tìm cặp phần tử có tổng bình phương đúng bằng k (k nhập từ bàn phím). 
h. Sắp xếp mảng tăng dần. 
i. Sắp xếp các phần tử ở vị trí chẵn tăng dần, vị trí lẻ giảm dần. 
91/- Nhập mảng số nguyên a có n phần tử (0< n <=20). Tạo menu để thực hiện các 
công việc: 
a. Sắp các phần tử vị trí lẻ tăng dần, các phần tử vị trí chẵn giảm dần 
b. Sắp các phần tử dương về đầu mảng có thứ tự giảm dần, các phần tử âm cuối 
mảng có thứ tự tăng dần. 
c. Sắp các số nguyên tố về đầu mảng có thứ tự tăng dần, các phần tử còn lại có 
thứ tự giảm dần. 
92/- Viết hàm liệt kê các bộ 4 số a, b, c, d trong mảng các số nguyên (có ít nhất 4 
phần tử và đôi một khác nhau) sao cho a + b = c + d. 
93/- (*) Cho mảng các số nguyên a gồm n phần tử (n<=30000) và số dương k (k<=n). 
Hãy chỉ ra số hạng lớn thứ k của mảng. 
Ví dụ: Mảng a: 6 3 1 10 11 18 
 k = 3 
Kết quả: 10 
94/- Viết chương trình tính tổng tất cả các phần tử xung quanh trên mảng các số 
nguyên. Biết rằng Phần tử xung quanh là hai phần tử bên cạnh cộng lai bằng 
chính nó; ví dụ: 1 3 2  1,2 là hai phần tử xung quanh của 3). 
Ví dụ: 1 3 2 5 3 9 6  tổng 17 
95/- (**) Viết chương trình nhập vào hai số lớn a, b nguyên ( a, b có từ 20 chữ số trở 
lên). Tính tổng, hiệu, tích, thương của hai số trên. 
Lập trình C căn bản – Phần bài tập 
Lê Văn Hạnh Oct2015 76 
96/- Viết hàm tìm và xóa tất cả các phần tử trùng với x trong mảng một chiều các số 
nguyên, nếu không tồn tại phần tử x trong mảng thì trả về -1. 
97/- (**) Viết hàm xoá những phần tử sao cho mảng kết quả có thứ tự tăng dần và 
số lần xoá là ít nhất. 
98/- Cho mảng a gồm n số nguyên có thứ tự tăng dần. Nhập vào một phần tử nguyên 
X, viết hàm chèn X vào mảng sao cho mảng vẫn có thứ tự tăng dần (không sắp 
xếp). 
99/- Viết chương trình tìm số lẻ nhỏ nhất lớn hơn mọi số chẵn có trong mảng. 
100/- Viết hàm tìm giá trị chẵn nhỏ nhất nhỏ hơn mọi giá trị lẻ trong mảng các số 
nguyên. 
101/- Viết hàm tìm phần tử xuất hiện nhiều nhất trong mảng các số nguyên. 
102/- Viết chương trình đếm và liệt kê các mảng con tăng dần trong mảng một chiều 
các số nguyên. 
Ví dụ: 6 5 3 2 3 4 2 7 các mảng con tăng dần là 2 3 4 và 2 7 
103/- Viết chương trình tìm mảng con tăng dần có tổng lớn nhất trong mảng một 
chiều. 
104/- (*) Viết chương trình nhập vào một mảng số a gồm n số nguyên (n <= 100). 
Tìm và in ra mảng con tăng dài nhất 
Ví dụ: Nhập mảng a: 1 2 3 6 4 7 8 3 4 5 6 7 8 9 4 5 
 Mảng con tăng dài nhất: 3 4 5 6 7 8 9 
105/- Viết chương trình nhập vào mảng số a gồm n số nguyên (n <= 100). 
a. Hãy đảo ngược mảng đó. 
Ví dụ: Nhập a: 3 4 5 2 0 4 1 
Mảng sau khi đảo: 1 4 0 2 5 4 3 
b. (*) Hãy kiểm tra xem mảng đã cho có thứ tự chưa (mảng được gọi là thứ tự khi 
là mảng tăng hoặc mảng giảm ). 
106/- Cho mảng A có n phần tử hãy cho biết mảng này có đối xứng hay không. 
107/- Cho mảng A có n phần tử. Nhập vào số nguyên k (k >= 0), dịch phải xoay vòng 
mảng A k lần. 
Ví dụ: Mảng A: 5 7 2 3 1 9 
 Nhập k = 2 
 Dịch phải xoay vòng mảng A: 1 9 5 7 2 3 
108/- (**) Viết chương trình in ra tam giác Pascal (dùng mảng một chiều). 
109/- Tìm giá trị trong mảng các số thực “ xa giá trị x nhất” 
Ví dụ: 
24 45 23 13 43 -12 
Giá trị x: 15 
Khoảng cách từ x = 15 tới các phần tử khác trong mảng là: 
9 30 8 2 28 27 
Giá trị trong mảng xa giá trị x nhất là: 45 
Lập trình C căn bản – Phần bài tập 
Lê Văn Hạnh Oct2015 77 
110/- Tìm một vị trí trong mảng một chiều các số thực mà tại vị trí đó là giá trị 
“gần giá trị x nhất “. 
Ví dụ: 
24 45 23 13 43 -12 
Giá trị x: 15 
Khoảng cách từ x = 15 tới các phần tử khác trong mảng là: 
9 30 8 2 28 27 
Giá trị trong mảng gần giá trị x nhất là: 13 
6.5.2. THAO TÁC TRÊN NHIỀU MẢNG 
6.5.2.1. Nhập xuất mảng 
111/- Cho mảng một chiều nguyên a. Viết hàm tạo mảng b từ a sao cho b chỉ chứa các 
giá trị lẻ của a. 
 Mở rộng: cho số nguyên tố, số hoàn thiện, số chính phương,  
112/- Cho mảng một chiều nguyên a. Viết hàm tạo mảng b từ a sao cho b chứa vị trí 
của các phần tử có giá trị lớn nhất trong a. 
113/- Viết chương trình cho phép người dùng nhập vào mảng A các số nguyên gồm n 
phần tử (1<n<15). Hãy tạo mảng B sao cho: 
 B[i] = (2*A[i] -1)nếu Ai>0 
 B[i] = (-2*A[i] +1) nếu Ai<0 
 B[i] = 1 nếu A[i]=0 
114/- Cho mảng một chiều nguyên a. Viết hàm tạo mảng b từ a sao cho b[i]= tổng các 
phần tử lân cận với A[i] trong a. 
6.5.2.2. Nhập / tách mảng 
115/- Cho mảng số nguyên A có n phần tử. Tách A thành 2 mảng: B chứa các số lẻ, C 
chứa các số chẵn. 
Ví dụ: Mảng A : 1 3 8 2 7 5 9 0 10 
 Mảng B : 1 3 7 5 9 
 Mảng C : 8 2 10 
116/- Có hai mảng một chiều A, B. Hai mảng này đã được sắp xếp tăng dần.Hãy viết 
chương trình trộn hai mảng A và B lại để được mảng C có các phần tử tăng dần. 
117/- Cho 2 mảng số nguyên a và b kích thước lần lượt là n và m. Viết chương trình 
nối 2 mảng trên thành mảng c theo nguyên tắc chẵn ở đầu mảng và lẻ ở cuối mảng. 
Ví dụ: Mảng a : 3 2 7 5 9 
 Mảng b : 1 8 10 4 12 6 
 Mảng c : 2 8 10 4 12 6 3 7 5 9 1 
118/- Cho 2 mảng số nguyên A và B kích thước lần lượt là n và m. Viết chương trình 
thực hiện: 
a. Sắp xếp hai mảng A, B theo thứ tự tăng dần. 
b. Trộn xen kẻ 2 mảng trên thành mảng c sao cho mảng c cũng có thứ tự tăng dần. 
c. Sắp xếp lại để có mảng B giảm dần (mảng A vẫn tăng dần). Trộn 2 mảng A và 
B thành mảng C tăng dần. 
Lập trình C căn bản – Phần bài tập 
Lê Văn Hạnh Oct2015 78 
6.5.2.3. Đếm – liệt kê 
119/- Cho 2 mảng A, B. Đếm và liệt kê các phần tử chỉ xuất hiện 1 trong 2 mảng. 
120/- Cho 2 mảng A, B. Đếm và liệt kê các phần tử chỉ xuất hiện trong mảng A nhưng 
không xuất hiện trong mảng B. 
121/- Cho 2 mảng A, B. Đếm phần tử xuất hiện trong cả 2 mảng. 
6.5.2.4. Khác 
122/- Viết chương trình nhập vào 1 số K (với -999<=K<=999). In ra cách đọc chữ số 
tương ứng (sử dụng mảng). 
Ví dụ: nhập -132 in ra: Am mot tram ba muoi hai. 
123/- Cho nhập số nguyên dương n gồm tối đa 9 chữ số. In ra số lần xuất hiện của mỗi 
số 
Ví dụ: với n=12712851. Sẽ xuất ra màn hình: số 1 xuất hiện 3 lần 
số 2 xuất hiện 2 lần 
số 5 xuất hiện 1 lần 
số 7 xuất hiện 1 lần 
số 8 xuất hiện 1 lần 
124/- (**) Viết chương trình tách 1 mảng các số nguyên thành 2 mảng A và B. Không 
dùng sắp xếp, thực hiện sao cho kết quả thu được là: 
- Mảng A chứa toàn số lẻ tăng dần. 
- Mảng B chứa toàn số chẵn giảm dần. 
Hướng dẫn: Tìm vị trí chèn thích hợp khi trích phần tử từ mảng ban đầu sang 2 
mảng A và B. 
Ví dụ: Mảng ban đầu : 9 3 8 2 7 5 1 0 10 
 Mảng A : 1 3 5 7 9 
 Mảng B : 10 8 2 
125/- (*) Cho mảng C có n phần tử ( n < 200 ), các phần tử là các chữ số trong hệ đếm 
cơ số 16 (Hexa) (điều kiện mỗi phần tử <= n ). Hãy tách mảng C ra các mảng con 
theo điều kiện sau: các mảng con được giới hạn bởi hai lần xuất hiện của cùng 1 con 
số trong mảng. 
Ví dụ1: 123A4518B23  có các mảng con là123A451, 23A4518B2, 3A4518B23 
Ví dụ2: 123A4538B21  có các mảng con là 123A4538B21, 23A4518B2, 3A453 
Ví dụ3: 123456789  in ra “Khong co day con”. 
126/- (**) Cho hai số nguyên dương A, B. Hãy xác định hai số C, D tạo thành từ hai 
số A, B sao cho C là số lớn nhất, D là số nhỏ nhất. Khi gạch đi một số chữ số trong 
C (D), thì các số còn lại giữ nguyên tạo thành A, các chữ số bỏ đi giữ nguyên tạo 
thành B. 
Ví dụ: A = 52568, B = 462384 -> C = 54625682384, D = 45256236884. 
127/- Đếm số lần xuất hiện của giá trị lớn nhất trong mảng một chiều. 
Ví dụ: Mảng: 5 6 11 4 4 5 4 
So lon nhat la 11. 
So 11 xuat hien 1 lan 
 Mở rộng: 
- Đếm số lần xuất hiện của giá trị nhỏ nhất, dương nhỏ nhất, âm lớn nhất. 
- Đếm số lần xuất hiện của số nguyên tố nhỏ nhất, ). 
Lập trình C căn bản – Phần bài tập 
Lê Văn Hạnh Oct2015 79 
128/- Đếm số lượng các giá trị phân biệt có trong mảng 
 Mở rộng: Liệt kê tần suất xuất hiện các giá trị xuất hiện trong mảng (mỗi giá trị 
xuất hiện bao nhiêu lần). 
129/- Liệt kê các giá trị xuất hiện trong mảng một chiều nguyên đúng 1 lần. 
 Mở rộng: 
- Liệt kê các giá trị xuất hiện trong mảng một chiều nguyên đúng k lần, nhiều 
hơn 1 lần 
- Liệt kê các giá trị có số lần xuất hiện nhiều nhất trong mảng. 
130/- Tìm các số nguyên tố nhỏ hơn 1000 bằng giải thuật sàng Erastosthene (giải thuật 
sàng Erastosthene dùng phương pháp đánh dấu để loại bỏ những số không phải là số 
nguyên tố. Giải thuật có từ một nhận xét rằng nếu k là số nguyên tố thì các số 2*k, 
3*k,... n*k sẽ không là số nguyên tố (vì đã vi phạm định nghĩa về số nguyên tố). 
131/- Viết chương trình nhập vào một mảng số a gồm n số thực (n ≤ 100), nhập vào 
mảng số b gồm m số thực (m ≤ 100). In ra những phần tử: 
a. Chỉ xuất hiện trong mảng a mà không xuất hiện trong mảng b. 
b. Xuất hiện ở cả hai mảng. 
c. Không xuất hiện ở cả 2 mảng 
d. Thực hiện lại yêu cầu (i) nhưng chỉ in mỗi giá trị thoả điều kiện 1 lần (do trên 
mảng có thể có các giá trị trùng nhau). 
Kỹ thuật lập trình 
Lê Văn Hạnh Oct2015 80 
TÀI LIỆU THAM KHẢO 
[1]. Hoàng Kiếm – Gỉai một bài toán trên máy tinh như thế nào – Tập 1 & Tập 2- Nhà 
Xuất Bản Giáo Dục -2001 
[2]. Dương Anh Đức – Trần Hạnh Nhi – Giáo trình cấu trúc dữ liệu - Trường Đại Học 
Khoa Học Tự Nhiên Tp.Hồ Chí Minh – 2003 
[3]. Trần Đan Thư – Giáo trình lập trình C – Tập 1& Tập 2 – Nhà Xuất Bản Đại Học 
Quốc Gia – 2001 
[4]. Lê Hoài Bắc – Lê Hoàng Thái – Nguyễn Tấn Trần Minh Khang – Nguyễn Phương 
Thảo – Giáo trình lập trình C – Nhà Xuất Bản Đại Học Quốc Gia Tp Hồ Chí Minh – 
2003 
[5]. Nguyễn Thanh Hùng – Các bài tập tin học chọn lọc – Nhà Xuât Bản Giáo Dục – 
1996. 
[6]. Nguyễn Tiến Huy – Bài giảng Kỹ thuật lập trình – 2003. 
[7]. Nguyễn Tấn Trần Minh Khang – Bài giảng Kỹ thuật lập trình – 2003 
[8]. Bùi Việt Hà – Lập Trình Pascal – Nhà Xuất Bản Giáo Dục – 2001 
[9]. Phạm Văn Ất – Kỹ thuật lập trình C cơ sở và nâng cao – Nhà Xuất Bản Khoa Học 
Và Kỹ Thuật – 1996. 

File đính kèm:

  • pdfgiao_trinh_lap_trinh_c_can_ban_le_van_hanh.pdf