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) ...
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:
- giao_trinh_lap_trinh_c_can_ban_le_van_hanh.pdf